# HG changeset patch
# Node ID 181ed0f5a2c9
# Parent  8d495a4cce7f
diff --git a/libpurple/media-gst.h b/libpurple/media-gst.h
--- a/libpurple/media-gst.h
+++ b/libpurple/media-gst.h
@@ -40,9 +40,13 @@
  * PurpleMediaElementInfo:
  *
  * An opaque structure representing an audio/video source/sink.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef struct _PurpleMediaElementInfo PurpleMediaElementInfo;
 
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef GstElement *(*PurpleMediaElementCreateCallback)(
 		PurpleMediaElementInfo *info, PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
@@ -67,7 +71,10 @@ typedef GstElement *(*PurpleMediaElement
  * @PURPLE_MEDIA_ELEMENT_SRC:          can be set as an active src
  * @PURPLE_MEDIA_ELEMENT_SINK:         can be set as an active sink
  * @PURPLE_MEDIA_ELEMENT_APPLICATION:  supports application data
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_ELEMENT_NONE = 0,
 	PURPLE_MEDIA_ELEMENT_AUDIO = 1,
@@ -90,8 +97,10 @@ typedef enum {
 
 G_BEGIN_DECLS
 
+PURPLE_AVAILABLE_IN_2_6
 GType purple_media_element_type_get_type(void);
 
+PURPLE_AVAILABLE_IN_2_6
 G_DECLARE_FINAL_TYPE(PurpleMediaElementInfo, purple_media_element_info, PURPLE,
 		MEDIA_ELEMENT_INFO, GObject)
 
@@ -103,7 +112,10 @@ G_DECLARE_FINAL_TYPE(PurpleMediaElementI
  * Gets the source from a session
  *
  * Returns: (transfer none): The source retrieved.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GstElement *purple_media_get_src(PurpleMedia *media, const gchar *sess_id);
 
 /**
@@ -115,7 +127,10 @@ GstElement *purple_media_get_src(PurpleM
  * Gets the tee from a given session/stream.
  *
  * Returns: (transfer none): The GstTee element from the chosen session/stream.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GstElement *purple_media_get_tee(PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
 
@@ -127,7 +142,10 @@ GstElement *purple_media_get_tee(PurpleM
  * Gets the pipeline from the media manager.
  *
  * Returns: (transfer none): The pipeline.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GstElement *purple_media_manager_get_pipeline(PurpleMediaManager *manager);
 
 /**
@@ -139,7 +157,10 @@ GstElement *purple_media_manager_get_pip
  * @participant: The remote user this element is requested for or NULL.
  *
  * Returns: (transfer full): A GStreamer source or sink for audio or video.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GstElement *purple_media_manager_get_element(PurpleMediaManager *manager,
 		PurpleMediaSessionType type, PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
@@ -163,14 +184,22 @@ GList *purple_media_manager_enumerate_el
  * @name: The name of the element to get.
  *
  * Returns: (transfer full): The #PurpleMediaElementInfo for @name or NULL.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaElementInfo *purple_media_manager_get_element_info(
 		PurpleMediaManager *manager, const gchar *name);
 
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_manager_register_element(PurpleMediaManager *manager,
 		PurpleMediaElementInfo *info);
+
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_manager_unregister_element(PurpleMediaManager *manager,
 		const gchar *name);
+
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_manager_set_active_element(PurpleMediaManager *manager,
 		PurpleMediaElementInfo *info);
 
@@ -180,7 +209,10 @@ gboolean purple_media_manager_set_active
  * @type: The #PurpleMediaElementType who's info to get
  *
  * Returns: (transfer none): The #PurpleMediaElementInfo for @type.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaElementInfo *purple_media_manager_get_active_element(
 		PurpleMediaManager *manager, PurpleMediaElementType type);
 
@@ -213,8 +245,13 @@ void purple_media_manager_set_video_caps
 PURPLE_AVAILABLE_IN_2_8
 GstCaps *purple_media_manager_get_video_caps(PurpleMediaManager *manager);
 
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_element_info_get_id(PurpleMediaElementInfo *info);
+
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_element_info_get_name(PurpleMediaElementInfo *info);
+
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaElementType purple_media_element_info_get_element_type(
 		PurpleMediaElementInfo *info);
 
@@ -226,7 +263,10 @@ PurpleMediaElementType purple_media_elem
  * @participant:
  *
  * Returns: (transfer full): The new GstElement.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GstElement *purple_media_element_info_call_create(
 		PurpleMediaElementInfo *info, PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
diff --git a/libpurple/media.h b/libpurple/media.h
--- a/libpurple/media.h
+++ b/libpurple/media.h
@@ -86,7 +86,10 @@ G_BEGIN_DECLS
  * Gets the media class's GType
  *
  * Returns: The media class's GType.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GType purple_media_get_type(void);
 
 /**
@@ -96,7 +99,10 @@ GType purple_media_get_type(void);
  * Gets a list of session IDs.
  *
  * Returns: (element-type utf8) (transfer container): List of session IDs.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_get_session_ids(PurpleMedia *media);
 
 /**
@@ -106,7 +112,10 @@ GList *purple_media_get_session_ids(Purp
  * Gets the PurpleAccount this media session is on.
  *
  * Returns: (transfer full): The account retrieved.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleAccount *purple_media_get_account(PurpleMedia *media);
 
 /**
@@ -141,7 +150,10 @@ void purple_media_set_protocol_data(Purp
  * @...: The arguments to plug into the format.
  *
  * Signals an error in the media session.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_error(PurpleMedia *media, const gchar *error, ...) G_GNUC_PRINTF(2, 3);
 
 /**
@@ -151,7 +163,10 @@ void purple_media_error(PurpleMedia *med
  * @participant: The participant to end streams with.
  *
  * Ends all streams that match the given parameters
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_end(PurpleMedia *media, const gchar *session_id,
 		const gchar *participant);
 
@@ -164,7 +179,10 @@ void purple_media_end(PurpleMedia *media
  * @local: TRUE if the info originated locally, FALSE if on the remote end.
  *
  * Signals different information about the given stream.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_stream_info(PurpleMedia *media, PurpleMediaInfoType type,
 		const gchar *session_id, const gchar *participant,
 		gboolean local);
@@ -185,7 +203,10 @@ void purple_media_stream_info(PurpleMedi
  *   - "sdes-location" : The LOCATION to put in SDES messages
  *   - "sdes-note"     : The NOTE to put in SDES messages
  *   - "sdes-phone"    : The PHONE to put in SDES messages
+ *
+ * Since: 2.8.0
  */
+PURPLE_AVAILABLE_IN_2_8
 void purple_media_set_params(PurpleMedia *media, GHashTable *params);
 
 /**
@@ -198,7 +219,10 @@ void purple_media_set_params(PurpleMedia
  *
  * Returns: (array zero-terminated=1) (transfer none): Names of supported
  *          parameters.
+ *
+ * Since: 2.8.0
  */
+PURPLE_AVAILABLE_IN_2_8
 const gchar **purple_media_get_available_params(PurpleMedia *media);
 
 /**
@@ -209,7 +233,10 @@ const gchar **purple_media_get_available
  * Checks if given optional parameter is supported by the media backend.
  *
  * Returns: %TRUE if backend recognizes the parameter, %FALSE otherwise.
+ *
+ * Since: 2.8.0
  */
+PURPLE_AVAILABLE_IN_2_8
 gboolean purple_media_param_is_supported(PurpleMedia *media, const gchar *param);
 
 /**
@@ -229,7 +256,10 @@ gboolean purple_media_param_is_supported
  * the @sess_id must be unique between sessions.
  *
  * Returns: %TRUE The stream was added successfully, %FALSE otherwise.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_add_stream(PurpleMedia *media, const gchar *sess_id,
 		const gchar *who, PurpleMediaSessionType type, gboolean initiator,
 		const gchar *transmitter, GHashTable *params);
@@ -242,7 +272,10 @@ gboolean purple_media_add_stream(PurpleM
  * Gets the session type from a session
  *
  * Returns: The retrieved session type.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaSessionType purple_media_get_session_type(PurpleMedia *media, const gchar *sess_id);
 
 /**
@@ -252,7 +285,10 @@ PurpleMediaSessionType purple_media_get_
  * Gets the PurpleMediaManager this media session is a part of.
  *
  * Returns: The PurpleMediaManager instance retrieved.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 struct _PurpleMediaManager *purple_media_get_manager(PurpleMedia *media);
 
 /**
@@ -264,7 +300,10 @@ struct _PurpleMediaManager *purple_media
  *
  * Returns: (element-type PurpleMediaCodec) (transfer full): The retrieved
  *          codecs.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_get_codecs(PurpleMedia *media, const gchar *sess_id);
 
 /**
@@ -276,7 +315,10 @@ GList *purple_media_get_codecs(PurpleMed
  *                     remote candidates to add.
  *
  * Adds remote candidates to the stream.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_add_remote_candidates(PurpleMedia *media,
 					const gchar *sess_id,
 					const gchar *participant,
@@ -292,7 +334,10 @@ void purple_media_add_remote_candidates(
  *
  * Returns: (element-type PurpleMediaCandidate) (transfer full): The local
  *          candidates.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_get_local_candidates(PurpleMedia *media,
 					 const gchar *sess_id,
 					 const gchar *participant);
@@ -344,7 +389,10 @@ GList *purple_media_get_active_remote_ca
  * Sets remote codecs from the stream.
  *
  * Returns: %TRUE The codecs were set successfully, or %FALSE otherwise.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_set_remote_codecs(PurpleMedia *media, const gchar *sess_id,
 					const gchar *participant, GList *codecs);
 
@@ -357,7 +405,10 @@ gboolean purple_media_set_remote_codecs(
  * Returns whether or not the candidates for set of streams are prepared
  *
  * Returns: %TRUE All streams for the given session_id/participant combination have candidates prepared, %FALSE otherwise.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_candidates_prepared(PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
 
@@ -370,7 +421,10 @@ gboolean purple_media_candidates_prepare
  * Sets the send codec for the a session.
  *
  * Returns: %TRUE The codec was successfully changed, or %FALSE otherwise.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_set_send_codec(PurpleMedia *media, const gchar *sess_id, PurpleMediaCodec *codec);
 
 /**
@@ -438,7 +492,10 @@ gboolean purple_media_set_require_encryp
  * Gets whether a session's codecs are ready to be used.
  *
  * Returns: %TRUE The codecs are ready, or %FALSE otherwise.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_codecs_ready(PurpleMedia *media, const gchar *sess_id);
 
 /**
@@ -466,7 +523,10 @@ gboolean purple_media_set_send_rtcp_mux(
  * Gets whether the local user is the conference/session/stream's initiator.
  *
  * Returns: TRUE if the local user is the stream's initator, else FALSE.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_is_initiator(PurpleMedia *media,
 		const gchar *sess_id, const gchar *participant);
 
@@ -479,7 +539,10 @@ gboolean purple_media_is_initiator(Purpl
  * Gets whether a streams selected have been accepted.
  *
  * Returns: %TRUE The selected streams have been accepted, or %FALSE otherwise.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_accepted(PurpleMedia *media, const gchar *sess_id,
 		const gchar *participant);
 
@@ -490,7 +553,10 @@ gboolean purple_media_accepted(PurpleMed
  * @level: The level to set the volume to.
  *
  * Sets the input volume of all the selected sessions.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_set_input_volume(PurpleMedia *media, const gchar *session_id, double level);
 
 /**
@@ -501,7 +567,10 @@ void purple_media_set_input_volume(Purpl
  * @level: The level to set the volume to.
  *
  * Sets the output volume of all the selected streams.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_set_output_volume(PurpleMedia *media, const gchar *session_id,
 		const gchar *participant, double level);
 
@@ -514,7 +583,10 @@ void purple_media_set_output_volume(Purp
  * Sets a video output window for the given session/stream.
  *
  * Returns: An id to reference the output window.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gulong purple_media_set_output_window(PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
 
@@ -523,7 +595,10 @@ gulong purple_media_set_output_window(Pu
  * @media: The instance to remove all output windows from.
  *
  * Removes all output windows from a given media session.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_remove_output_windows(PurpleMedia *media);
 
 /**
@@ -538,7 +613,10 @@ void purple_media_remove_output_windows(
  * Sends a DTMF signal out-of-band.
  *
  * Returns: %TRUE DTMF sent successfully, or %FALSE otherwise.
+ *
+ * Since: 2.11.0
  */
+PURPLE_AVAILABLE_IN_2_11
 gboolean purple_media_send_dtmf(PurpleMedia *media, const gchar *session_id,
 		gchar dtmf, guint8 volume, guint16 duration);
 
diff --git a/libpurple/media/backend-iface.h b/libpurple/media/backend-iface.h
--- a/libpurple/media/backend-iface.h
+++ b/libpurple/media/backend-iface.h
@@ -44,6 +44,8 @@ G_BEGIN_DECLS
  * PurpleMediaBackend:
  *
  * A placeholder to represent any media backend
+ *
+ * Since: 2.6.0
  */
 typedef struct _PurpleMediaBackend PurpleMediaBackend;
 
@@ -51,6 +53,8 @@ typedef struct _PurpleMediaBackend Purpl
  * PurpleMediaBackendInterface:
  *
  * A structure to derive media backends from.
+ *
+ * Since: 3.0.0
  */
 typedef struct _PurpleMediaBackendInterface PurpleMediaBackendInterface;
 
@@ -105,7 +109,10 @@ struct _PurpleMediaBackendInterface
  * Gets the media backend's GType.
  *
  * Returns: The media backend's GType.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 GType purple_media_backend_get_type(void);
 
 /**
@@ -122,7 +129,10 @@ GType purple_media_backend_get_type(void
  * Creates and adds a stream to the media backend.
  *
  * Returns: True if the stream was successfully created, otherwise False.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 gboolean purple_media_backend_add_stream(PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *who, PurpleMediaSessionType type,
 		gboolean initiator, const gchar *transmitter, GHashTable *params);
@@ -135,7 +145,10 @@ gboolean purple_media_backend_add_stream
  * @remote_candidates: (element-type PurpleMediaCandidate): The list of remote candidates to add.
  *
  * Add remote candidates to a stream.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 void purple_media_backend_add_remote_candidates(PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *participant,
 		GList *remote_candidates);
@@ -151,7 +164,10 @@ void purple_media_backend_add_remote_can
  * parameters have been collected.
  *
  * Returns: True if the codecs are ready, otherwise False.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 gboolean purple_media_backend_codecs_ready(PurpleMediaBackend *self,
 		const gchar *sess_id);
 
@@ -166,7 +182,10 @@ gboolean purple_media_backend_codecs_rea
  * between the local and remote software.
  *
  * Returns: (transfer full) (element-type PurpleMediaCodec): The codec intersection list.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 GList *purple_media_backend_get_codecs(PurpleMediaBackend *self,
 		const gchar *sess_id);
 
@@ -179,7 +198,10 @@ GList *purple_media_backend_get_codecs(P
  * Gets the list of local candidates for a stream.
  *
  * Return Value: (transfer full) (element-type PurpleMediaCandidate): The list of local candidates.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 GList *purple_media_backend_get_local_candidates(PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *participant);
 
@@ -193,7 +215,10 @@ GList *purple_media_backend_get_local_ca
  * Sets the remote codecs on a stream.
  *
  * Returns: True if the remote codecs were set successfully, otherwise False.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 gboolean purple_media_backend_set_remote_codecs(PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *participant,
 		GList *codecs);
@@ -207,7 +232,10 @@ gboolean purple_media_backend_set_remote
  * Sets which codec format to send media content in for a session.
  *
  * Returns: True if set successfully, otherwise False.
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 gboolean purple_media_backend_set_send_codec(PurpleMediaBackend *self,
 		const gchar *sess_id, PurpleMediaCodec *codec);
 
@@ -222,7 +250,10 @@ gboolean purple_media_backend_set_send_c
  * @key_len: Byte length of the encryption key.
  *
  * Sets the encryption parameters of our media in the session.
+ *
+ * Since: 2.11.0
  */
+PURPLE_AVAILABLE_IN_2_11
 gboolean purple_media_backend_set_encryption_parameters(PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *cipher,
 		const gchar *auth, const gchar *key, gsize key_len);
@@ -240,7 +271,10 @@ gboolean purple_media_backend_set_encryp
  * @key_len: Byte length of the decryption key.
  *
  * Sets the decryption parameters for a session participant's media.
+ *
+ * Since: 2.11.0
  */
+PURPLE_AVAILABLE_IN_2_11
 gboolean purple_media_backend_set_decryption_parameters(PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *participant,
 		const gchar *cipher, const gchar *auth,
@@ -254,7 +288,10 @@ gboolean purple_media_backend_set_decryp
  * @require_encryption: TRUE if the media requires encryption.
  *
  * Sets whether a session participant's media requires encryption.
+ *
+ * Since: 2.14.0
  */
+PURPLE_AVAILABLE_IN_2_14
 gboolean purple_media_backend_set_require_encryption(PurpleMediaBackend *self,
 		const gchar *sess_id, const gchar *participant,
 		gboolean require_encryption);
@@ -266,7 +303,10 @@ gboolean purple_media_backend_set_requir
  *          parameters to pass to the backend.
  *
  * Sets various optional parameters of the media backend.
+ *
+ * Since: 2.8.0
  */
+PURPLE_AVAILABLE_IN_2_8
 void purple_media_backend_set_params(PurpleMediaBackend *self,
 		GHashTable *params);
 
@@ -278,7 +318,10 @@ void purple_media_backend_set_params(Pur
  * The list should NOT be freed.
  *
  * Return Value: (transfer none): NULL-terminated array of names of supported parameters.
+ *
+ * Since: 2.8.0
  */
+PURPLE_AVAILABLE_IN_2_8
 const gchar **purple_media_backend_get_available_params(PurpleMediaBackend *self);
 
 /**
diff --git a/libpurple/media/candidate.h b/libpurple/media/candidate.h
--- a/libpurple/media/candidate.h
+++ b/libpurple/media/candidate.h
@@ -38,6 +38,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_CANDIDATE:
  *
  * The standard _get_type macro for #PurpleMediaCandidate.
+ *
+ * Since: 3.0.0
  */
 #define PURPLE_MEDIA_TYPE_CANDIDATE  purple_media_candidate_get_type()
 
@@ -47,7 +49,10 @@ G_BEGIN_DECLS
  * Gets the type of the media candidate structure.
  *
  * Returns: The media canditate's GType
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 G_DECLARE_FINAL_TYPE(PurpleMediaCandidate, purple_media_candidate,
                      PURPLE_MEDIA, CANDIDATE, GObject)
 
@@ -63,7 +68,10 @@ G_DECLARE_FINAL_TYPE(PurpleMediaCandidat
  * Creates a PurpleMediaCandidate instance.
  *
  * Returns: The newly created PurpleMediaCandidate instance.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaCandidate *purple_media_candidate_new(
 		const gchar *foundation, guint component_id,
 		PurpleMediaCandidateType type,
@@ -93,7 +101,10 @@ PurpleMediaCandidate *purple_media_candi
  *
  * Returns: (element-type PurpleMediaCandidate) (transfer full): The copy of
  *          the candidate list.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_candidate_list_copy(GList *candidates);
 
 /**
@@ -102,7 +113,10 @@ GList *purple_media_candidate_list_copy(
  *              of candidates to be freed.
  *
  * Frees a GList of PurpleMediaCandidate and its contents.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_candidate_list_free(GList *candidates);
 
 /**
@@ -112,7 +126,10 @@ void purple_media_candidate_list_free(GL
  * Gets the foundation (identifier) from the candidate.
  *
  * Returns: The foundation.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_candidate_get_foundation(PurpleMediaCandidate *candidate);
 
 /**
@@ -122,7 +139,10 @@ gchar *purple_media_candidate_get_founda
  * Gets the component id (rtp or rtcp)
  *
  * Returns: The component id.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint purple_media_candidate_get_component_id(PurpleMediaCandidate *candidate);
 
 /**
@@ -132,7 +152,10 @@ guint purple_media_candidate_get_compone
  * Gets the IP address.
  *
  * Returns: The IP address.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_candidate_get_ip(PurpleMediaCandidate *candidate);
 
 /**
@@ -142,7 +165,10 @@ gchar *purple_media_candidate_get_ip(Pur
  * Gets the port.
  *
  * Returns: The port.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint16 purple_media_candidate_get_port(PurpleMediaCandidate *candidate);
 
 /**
@@ -153,7 +179,10 @@ guint16 purple_media_candidate_get_port(
  * This can be NULL.
  *
  * Returns: The base IP address.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_candidate_get_base_ip(PurpleMediaCandidate *candidate);
 
 /**
@@ -164,7 +193,10 @@ gchar *purple_media_candidate_get_base_i
  * Invalid if the base IP is NULL.
  *
  * Returns: The base port.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint16 purple_media_candidate_get_base_port(PurpleMediaCandidate *candidate);
 
 /**
@@ -174,7 +206,10 @@ guint16 purple_media_candidate_get_base_
  * Gets the protocol (TCP or UDP).
  *
  * Returns: The protocol.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaNetworkProtocol purple_media_candidate_get_protocol(
 		PurpleMediaCandidate *candidate);
 
@@ -185,7 +220,10 @@ PurpleMediaNetworkProtocol purple_media_
  * Gets the priority.
  *
  * Returns: The priority.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint32 purple_media_candidate_get_priority(PurpleMediaCandidate *candidate);
 
 /**
@@ -195,7 +233,10 @@ guint32 purple_media_candidate_get_prior
  * Gets the candidate type.
  *
  * Returns: The candidate type.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaCandidateType purple_media_candidate_get_candidate_type(
 		PurpleMediaCandidate *candidate);
 
@@ -207,7 +248,10 @@ PurpleMediaCandidateType purple_media_ca
  * This can be NULL. It depends on the transmission type.
  *
  * Returns: The username.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_candidate_get_username(PurpleMediaCandidate *candidate);
 
 /**
@@ -219,7 +263,10 @@ gchar *purple_media_candidate_get_userna
  * This can be NULL. It depends on the transmission type.
  *
  * Returns: The password.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_candidate_get_password(PurpleMediaCandidate *candidate);
 
 /**
@@ -229,7 +276,10 @@ gchar *purple_media_candidate_get_passwo
  * Gets the TTL.
  *
  * Returns: The TTL.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint purple_media_candidate_get_ttl(PurpleMediaCandidate *candidate);
 
 G_END_DECLS
diff --git a/libpurple/media/codec.h b/libpurple/media/codec.h
--- a/libpurple/media/codec.h
+++ b/libpurple/media/codec.h
@@ -46,6 +46,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_CODEC:
  *
  * The standard _get_type macro for #PurpleMediaCodec.
+ *
+ * Since: 3.0.0
  */
 #define PURPLE_MEDIA_TYPE_CODEC purple_media_codec_get_type()
 
@@ -55,7 +57,10 @@ G_BEGIN_DECLS
  * Gets the type of the media codec structure.
  *
  * Returns: The media codec's GType
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 G_DECLARE_FINAL_TYPE(PurpleMediaCodec, purple_media_codec, PURPLE_MEDIA,
                      CODEC, GObject)
 
@@ -69,7 +74,10 @@ G_DECLARE_FINAL_TYPE(PurpleMediaCodec, p
  * Creates a new PurpleMediaCodec instance.
  *
  * Returns: The newly created PurpleMediaCodec.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaCodec *purple_media_codec_new(int id, const char *encoding_name,
 		PurpleMediaSessionType media_type, guint clock_rate);
 
@@ -80,7 +88,10 @@ PurpleMediaCodec *purple_media_codec_new
  * Gets the codec id.
  *
  * Returns: The codec id.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint purple_media_codec_get_id(PurpleMediaCodec *codec);
 
 /**
@@ -90,7 +101,10 @@ guint purple_media_codec_get_id(PurpleMe
  * Gets the encoding name.
  *
  * Returns: The encoding name.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_codec_get_encoding_name(PurpleMediaCodec *codec);
 
 /**
@@ -100,7 +114,10 @@ gchar *purple_media_codec_get_encoding_n
  * Gets the clock rate.
  *
  * Returns: The clock rate.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint purple_media_codec_get_clock_rate(PurpleMediaCodec *codec);
 
 /**
@@ -110,7 +127,10 @@ guint purple_media_codec_get_clock_rate(
  * Gets the number of channels.
  *
  * Returns: The number of channels.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 guint purple_media_codec_get_channels(PurpleMediaCodec *codec);
 
 /**
@@ -121,7 +141,10 @@ guint purple_media_codec_get_channels(Pu
  *
  * Returns: (element-type PurpleKeyValuePair) (transfer none): The list of
  *          optional parameters.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_codec_get_optional_parameters(PurpleMediaCodec *codec);
 
 /**
@@ -131,7 +154,10 @@ GList *purple_media_codec_get_optional_p
  * @value: The value of the parameter to add.
  *
  * Adds an optional parameter to the codec.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_codec_add_optional_parameter(PurpleMediaCodec *codec,
 		const gchar *name, const gchar *value);
 
@@ -141,7 +167,10 @@ void purple_media_codec_add_optional_par
  * @param: A pointer to the parameter to remove.
  *
  * Removes an optional parameter from the codec.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_codec_remove_optional_parameter(PurpleMediaCodec *codec,
 		PurpleKeyValuePair *param);
 
@@ -154,7 +183,10 @@ void purple_media_codec_remove_optional_
  * Gets an optional parameter based on the values given.
  *
  * Returns: (transfer none): The value found or NULL.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleKeyValuePair *purple_media_codec_get_optional_parameter(
 		PurpleMediaCodec *codec, const gchar *name,
 		const gchar *value);
@@ -181,7 +213,10 @@ PurpleMediaCodec *purple_media_codec_cop
  *
  * Returns: (element-type PurpleMediaCodec) (transfer full): The copy of the
  *          codec list.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_codec_list_copy(GList *codecs);
 
 /**
@@ -190,7 +225,10 @@ GList *purple_media_codec_list_copy(GLis
  *          to be freed.
  *
  * Frees a GList of PurpleMediaCodec and its contents.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_codec_list_free(GList *codecs);
 
 /**
@@ -200,7 +238,10 @@ void purple_media_codec_list_free(GList 
  * Creates a string representation of the codec.
  *
  * Returns: The new string representation.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gchar *purple_media_codec_to_string(PurpleMediaCodec *codec);
 
 G_END_DECLS
diff --git a/libpurple/media/enum-types.h b/libpurple/media/enum-types.h
--- a/libpurple/media/enum-types.h
+++ b/libpurple/media/enum-types.h
@@ -36,6 +36,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_CANDIDATE_TYPE:
  *
  * The standard _get_type macro for #PurpleMediaCandidateType.
+ *
+ * Since: 3.0.0
  */
 #define PURPLE_MEDIA_TYPE_CANDIDATE_TYPE (purple_media_candidate_type_get_type())
 
@@ -43,6 +45,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_CAPS:
  *
  * The standard _get_type macro for #PurpleMediaCaps.
+ *
+ * Since: 2.7.0
  */
 #define PURPLE_MEDIA_TYPE_CAPS (purple_media_caps_get_type())
 
@@ -50,6 +54,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_INFO_TYPE:
  *
  * The standard _get_type macro for #PurpleMediaInfoType.
+ *
+ * Since: 2.6.0
  */
 #define PURPLE_MEDIA_TYPE_INFO_TYPE (purple_media_info_type_get_type())
 
@@ -57,6 +63,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_NETWORK_PROTOCOL:
  *
  * The standard _get_type macro for #PurpleMediaNetworkProtocol.
+ *
+ * Since: 3.0.0
  */
 #define PURPLE_MEDIA_TYPE_NETWORK_PROTOCOL (purple_media_network_protocol_get_type())
 
@@ -64,6 +72,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_SESSION_TYPE:
  *
  * The standard _get_type macro for #PurpleMediaSessionType.
+ *
+ * Since: 3.0.0
  */
 #define PURPLE_MEDIA_TYPE_SESSION_TYPE (purple_media_session_type_get_type())
 
@@ -71,6 +81,8 @@ G_BEGIN_DECLS
  * PURPLE_MEDIA_TYPE_STATE:
  *
  * The standard _get_type macro for #PurpleMediaState.
+ *
+ * Since: 3.0.0
  */
 #define PURPLE_MEDIA_TYPE_STATE (purple_media_state_get_type())
 
@@ -83,7 +95,10 @@ G_BEGIN_DECLS
  * @PURPLE_MEDIA_CANDIDATE_TYPE_MULTICAST: A multicast address.
  *
  * Media candidate types
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_CANDIDATE_TYPE_HOST,
 	PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX,
@@ -105,7 +120,10 @@ typedef enum {
  *                                      switched.
  *
  * Media caps
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_CAPS_NONE = 0,
 	PURPLE_MEDIA_CAPS_AUDIO = 1,
@@ -125,7 +143,10 @@ typedef enum {
  * @PURPLE_MEDIA_COMPONENT_RTCP: This component is for RTCP control.
  *
  * Media component types
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_COMPONENT_NONE = 0,
 	PURPLE_MEDIA_COMPONENT_RTP = 1,
@@ -146,7 +167,10 @@ typedef enum {
  * @PURPLE_MEDIA_INFO_UNHOLD: Remove the media from hold.
  *
  * Media info types
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_INFO_HANGUP = 0,
 	PURPLE_MEDIA_INFO_ACCEPT,
@@ -173,7 +197,10 @@ typedef enum {
  *                                        as the peer (Simultanuous-Open).
  *
  * Media network protocols
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_NETWORK_PROTOCOL_UDP,
 	PURPLE_MEDIA_NETWORK_PROTOCOL_TCP_PASSIVE,
@@ -200,7 +227,10 @@ typedef enum {
  *                            and #PURPLE_MEDIA_SEND_APPLICATION.
  *
  * Media session types
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_NONE	= 0,
 	PURPLE_MEDIA_RECV_AUDIO = 1 << 0,
@@ -223,7 +253,10 @@ typedef enum {
  *                          disconnected.
  *
  * Media state-changed types
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef enum {
 	PURPLE_MEDIA_STATE_NEW = 0,
 	PURPLE_MEDIA_STATE_CONNECTED,
@@ -236,7 +269,10 @@ typedef enum {
  * Gets the media candidate type's GType
  *
  * Returns: The media candidate type's GType.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GType purple_media_candidate_type_get_type(void);
 
 /**
@@ -245,7 +281,10 @@ GType purple_media_candidate_type_get_ty
  * Gets the type of the media caps flags
  *
  * Returns: The media caps flags' GType
+ *
+ * Since: 2.7.0
  */
+PURPLE_AVAILABLE_IN_2_7
 GType purple_media_caps_get_type(void);
 
 /**
@@ -254,7 +293,10 @@ GType purple_media_caps_get_type(void);
  * Gets the type of the info type enum
  *
  * Returns: The info type enum's GType
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GType purple_media_info_type_get_type(void);
 
 /**
@@ -263,7 +305,10 @@ GType purple_media_info_type_get_type(vo
  * Gets the media network protocol's GType
  *
  * Returns: The media network protocol's GType.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GType purple_media_network_protocol_get_type(void);
 
 /**
@@ -272,7 +317,10 @@ GType purple_media_network_protocol_get_
  * Gets the media session type's GType
  *
  * Returns: The media session type's GType.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GType purple_media_session_type_get_type(void);
 
 /**
diff --git a/libpurple/mediamanager.h b/libpurple/mediamanager.h
--- a/libpurple/mediamanager.h
+++ b/libpurple/mediamanager.h
@@ -41,6 +41,8 @@ typedef struct _PurpleMediaManager Purpl
  * PurpleMediaManagerClass:
  *
  * The media manager class.
+ *
+ * Since: 2.6.0
  */
 struct _PurpleMediaManagerClass
 {
@@ -68,7 +70,9 @@ struct _PurpleMediaManagerClass
  * stream changes. The @writable argument defines whether the stream has
  * become writable or stopped being writable.
  *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_TYPE_IN_2_6
 typedef struct {
 	void      (*readable)    (PurpleMediaManager *manager, PurpleMedia *media,
 		const gchar *session_id, const gchar *participant, gpointer user_data);
@@ -83,6 +87,7 @@ G_BEGIN_DECLS
 /* Media Manager API                                                      */
 /**************************************************************************/
 
+PURPLE_AVAILABLE_IN_2_6
 G_DECLARE_FINAL_TYPE(PurpleMediaManager, purple_media_manager, PURPLE,
 		MEDIA_MANAGER, GObject)
 
@@ -92,7 +97,10 @@ G_DECLARE_FINAL_TYPE(PurpleMediaManager,
  * Gets the "global" media manager object. It's created if it doesn't already exist.
  *
  * Returns: (transfer none): The "global" instance of the media manager object.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaManager *purple_media_manager_get(void);
 
 /**
@@ -106,7 +114,10 @@ PurpleMediaManager *purple_media_manager
  * Creates a media session.
  *
  * Returns: (transfer full): A newly created media session.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMedia *purple_media_manager_create_media(PurpleMediaManager *manager,
 						PurpleAccount *account,
 						const char *conference_type,
@@ -120,7 +131,10 @@ PurpleMedia *purple_media_manager_create
  * Gets all of the media sessions.
  *
  * Returns: (transfer none) (element-type PurpleMedia): A list of all the media sessions.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_manager_get_media(PurpleMediaManager *manager);
 
 /**
@@ -131,7 +145,10 @@ GList *purple_media_manager_get_media(Pu
  * Gets all of the media sessions for a given account.
  *
  * Returns: (transfer container) (element-type PurpleMedia): A list of the media sessions on the given account.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 GList *purple_media_manager_get_media_by_account(
 		PurpleMediaManager *manager, PurpleAccount *account);
 
@@ -141,7 +158,10 @@ GList *purple_media_manager_get_media_by
  * @media: The media session to remove.
  *
  * Removes a media session from the media manager.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void
 purple_media_manager_remove_media(PurpleMediaManager *manager,
 				  PurpleMedia *media);
@@ -161,7 +181,10 @@ purple_media_manager_remove_media(Purple
  * PURPLE_MEDIA_APPLICATION which the front-end wouldn't know how to handle.
  *
  * Returns: (transfer full): A newly created media session.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMedia *purple_media_manager_create_private_media(
                                                 PurpleMediaManager *manager,
 						PurpleAccount *account,
@@ -176,7 +199,10 @@ PurpleMedia *purple_media_manager_create
  * Gets all of the private media sessions.
  *
  * Returns: (transfer none) (element-type PurpleMedia): A list of all the private media sessions.
+ *
+ * Since: 2.11.0
  */
+PURPLE_AVAILABLE_IN_2_11
 GList *purple_media_manager_get_private_media(PurpleMediaManager *manager);
 
 /**
@@ -187,7 +213,10 @@ GList *purple_media_manager_get_private_
  * Gets all of the private media sessions for a given account.
  *
  * Returns: (transfer container) (element-type PurpleMedia): A list of the private media sessions on the given account.
+ *
+ * Since: 2.11.0
  */
+PURPLE_AVAILABLE_IN_2_11
 GList *purple_media_manager_get_private_media_by_account(
 		PurpleMediaManager *manager, PurpleAccount *account);
 
@@ -203,7 +232,10 @@ GList *purple_media_manager_get_private_
  * This shouldn't be called outside of mediamanager.c and media.c
  *
  * Returns: TRUE if it succeeded, FALSE if it failed.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_manager_create_output_window(
 		PurpleMediaManager *manager, PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
@@ -218,7 +250,10 @@ gboolean purple_media_manager_create_out
  * Registers a video output window to be created for a given stream.
  *
  * Returns: A unique ID to the registered output window, 0 if it failed.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gulong purple_media_manager_set_output_window(PurpleMediaManager *manager,
 		PurpleMedia *media, const gchar *session_id,
 		const gchar *participant);
@@ -231,7 +266,10 @@ gulong purple_media_manager_set_output_w
  * Remove a previously registered output window.
  *
  * Returns: TRUE if it found the output window and was successful, else FALSE.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gboolean purple_media_manager_remove_output_window(
 		PurpleMediaManager *manager, gulong output_window_id);
 
@@ -243,7 +281,10 @@ gboolean purple_media_manager_remove_out
  * @participant: The participant the output windows were registered for.
  *
  * Remove all output windows for a given conference/session/participant/stream.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_manager_remove_output_windows(
 		PurpleMediaManager *manager, PurpleMedia *media,
 		const gchar *session_id, const gchar *participant);
@@ -254,7 +295,10 @@ void purple_media_manager_remove_output_
  * @caps: The caps to set.
  *
  * Sets which media caps the UI supports.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_manager_set_ui_caps(PurpleMediaManager *manager,
 		PurpleMediaCaps caps);
 
@@ -265,7 +309,10 @@ void purple_media_manager_set_ui_caps(Pu
  * Gets which media caps the UI supports.
  *
  * Returns: caps The caps retrieved.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 PurpleMediaCaps purple_media_manager_get_ui_caps(PurpleMediaManager *manager);
 
 /**
@@ -306,7 +353,10 @@ GType purple_media_manager_get_backend_t
  *
  * Set callbacks on a session to be called when the stream becomes writable
  * or readable for media sessions of type #PURPLE_MEDIA_APPLICATION
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 void purple_media_manager_set_application_data_callbacks(
 	PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id,
 	const gchar *participant, PurpleMediaAppDataCallbacks *callbacks,
@@ -332,7 +382,10 @@ void purple_media_manager_set_applicatio
  * parameters for example).
  *
  * Returns: Number of bytes sent or -1 in case of error.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gint purple_media_manager_send_application_data (
 	PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id,
 	const gchar *participant, gpointer buffer, guint size, gboolean blocking);
@@ -353,7 +406,10 @@ gint purple_media_manager_send_applicati
  * until @max_size bytes are read.
  *
  * Returns: Number of bytes received or -1 in case of error.
+ *
+ * Since: 2.6.0
  */
+PURPLE_AVAILABLE_IN_2_6
 gint purple_media_manager_receive_application_data (
 	PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id,
 	const gchar *participant, gpointer buffer, guint max_size,
