BP_REST_Groups_Endpoint::get_item_schema()

Get the group schema, conforming to JSON Schema.

Description

Return

(array)

Source

File: bp-groups/classes/class-bp-rest-groups-endpoint.php

	public function get_item_schema() {
		$schema = array(
			'$schema'    => 'http://json-schema.org/draft-04/schema#',
			'title'      => 'bp_groups',
			'type'       => 'object',
			'properties' => array(
				'id'                 => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'A unique numeric ID for the Group.', 'buddyboss' ),
					'readonly'    => true,
					'type'        => 'integer',
				),
				'creator_id'         => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The ID of the user who created the Group.', 'buddyboss' ),
					'type'        => 'integer',
					'default'     => bp_loggedin_user_id(),
				),
				'name'               => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The name of the Group.', 'buddyboss' ),
					'type'        => 'string',
					'required'    => true,
					'arg_options' => array(
						'sanitize_callback' => 'sanitize_text_field',
					),
				),
				'slug'               => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The URL-friendly slug for the Group.', 'buddyboss' ),
					'type'        => 'string',
					'arg_options' => array(
						'sanitize_callback' => null,
						// Note: sanitization implemented in self::prepare_item_for_database().
					),
				),
				'link'               => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The permalink to the Group on the site.', 'buddyboss' ),
					'type'        => 'string',
					'format'      => 'uri',
					'readonly'    => true,
				),
				'description'        => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The description of the Group.', 'buddyboss' ),
					'type'        => 'object',
					'required'    => true,
					'arg_options' => array(
						'sanitize_callback' => null,
						// Note: sanitization implemented in self::prepare_item_for_database().
						'validate_callback' => null,
						// Note: validation implemented in self::prepare_item_for_database().
					),
					'properties'  => array(
						'raw'      => array(
							'description' => __( 'Content for the description of the Group, as it exists in the database.', 'buddyboss' ),
							'type'        => 'string',
							'context'     => array( 'embed', 'view', 'edit' ),
						),
						'rendered' => array(
							'description' => __( 'HTML content for the description of the Group, transformed for display.', 'buddyboss' ),
							'type'        => 'string',
							'context'     => array( 'embed', 'view', 'edit' ),
							'readonly'    => true,
						),
					),
				),
				'status'             => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The status of the Group.', 'buddyboss' ),
					'type'        => 'string',
					'enum'        => buddypress()->groups->valid_status,
					'default'     => 'public',
					'arg_options' => array(
						'sanitize_callback' => 'sanitize_key',
					),
				),
				'enable_forum'       => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Whether the Group has a forum enabled or not.', 'buddyboss' ),
					'type'        => 'boolean',
				),
				'parent_id'          => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'ID of the parent Group.', 'buddyboss' ),
					'type'        => 'integer',
				),
				'date_created'       => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( "The date the Group was created, in the site's timezone.", 'buddyboss' ),
					'readonly'    => true,
					'type'        => 'string',
					'format'      => 'date-time',
				),
				'types'              => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The type(s) of the Group.', 'buddyboss' ),
					'readonly'    => true,
					'enum'        => bp_groups_get_group_types(),
					'type'        => 'array',
					'items'       => array(
						'type' => 'string',
					),
				),
				'subgroups_id'       => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Sub Groups id if having a sub groups.', 'buddyboss' ),
					'readonly'    => true,
					'type'        => 'array',
					'items'       => array(
						'type' => 'integer',
					),
				),
				'admins'             => array(
					'context'     => array( 'edit' ),
					'description' => __( 'Group administrators.', 'buddyboss' ),
					'readonly'    => true,
					'type'        => 'array',
					'items'       => array(
						'type' => 'object',
					),
				),
				'mods'               => array(
					'context'     => array( 'edit' ),
					'description' => __( 'Group moderators.', 'buddyboss' ),
					'readonly'    => true,
					'type'        => 'array',
					'items'       => array(
						'type' => 'object',
					),
				),
				'total_member_count' => array(
					'context'     => array( 'edit' ),
					'description' => __( 'Count of all Group members.', 'buddyboss' ),
					'readonly'    => true,
					'type'        => 'integer',
				),
				'last_activity'      => array(
					'context'     => array( 'edit' ),
					'description' => __( "The date the Group was last active, in the site's timezone.", 'buddyboss' ),
					'type'        => 'string',
					'readonly'    => true,
					'format'      => 'date-time',
				),
				// Adding additional schema.
				'is_member'          => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The current user is member of a group or not.', 'buddyboss' ),
					'type'        => 'boolean',
					'readonly'    => true,
				),
				'invite_id'          => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Return\'s invite ID if current user is invited for a group or not.', 'buddyboss' ),
					'type'        => 'integer',
					'readonly'    => true,
				),
				'request_id'         => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Return\'s request ID if invitation is pending for a group or not.', 'buddyboss' ),
					'type'        => 'integer',
					'readonly'    => true,
				),
				'is_admin'           => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The current user is admin of a group or not.', 'buddyboss' ),
					'type'        => 'boolean',
					'readonly'    => true,
				),
				'is_mod'             => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'The current user is moderator of a group or not.', 'buddyboss' ),
					'type'        => 'boolean',
					'readonly'    => true,
				),
				'members_count'      => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Members count of the group.', 'buddyboss' ),
					'type'        => 'integer',
					'readonly'    => true,
				),
				'role'               => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Current member\'s role label in the group.', 'buddyboss' ),
					'type'        => 'string',
					'readonly'    => true,
				),
				'plural_role'        => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Current member\'s role label in the plural form in the group', 'buddyboss' ),
					'type'        => 'string',
					'readonly'    => true,
				),
				'can_join'           => array(
					'context'     => array( 'view', 'edit' ),
					'description' => __( 'Check current user can join or request access.', 'buddyboss' ),
					'type'        => 'boolean',
					'readonly'    => true,
				),
				'forum'              => array(
					'context'     => array( 'embed', 'view', 'edit' ),
					'description' => __( 'Forum id of the group.', 'buddyboss' ),
					'type'        => 'integer',
					'readonly'    => true,
				),
			),
		);

		// Avatars.
		if ( ! bp_disable_group_avatar_uploads() ) {
			$avatar_properties = array();

			$avatar_properties['full'] = array(
				/* translators: 1: Full avatar width in pixels. 2: Full avatar height in pixels */
				'description' => sprintf( __( 'Avatar URL with full image size (%1$d x %2$d pixels).', 'buddyboss' ), number_format_i18n( bp_core_avatar_full_width() ), number_format_i18n( bp_core_avatar_full_height() ) ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'embed', 'view', 'edit' ),
			);

			$avatar_properties['thumb'] = array(
				/* translators: 1: Thumb avatar width in pixels. 2: Thumb avatar height in pixels */
				'description' => sprintf( __( 'Avatar URL with thumb image size (%1$d x %2$d pixels).', 'buddyboss' ), number_format_i18n( bp_core_avatar_thumb_width() ), number_format_i18n( bp_core_avatar_thumb_height() ) ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'embed', 'view', 'edit' ),
			);

			$schema['properties']['avatar_urls'] = array(
				'description' => __( 'Avatar URLs for the group.', 'buddyboss' ),
				'type'        => 'object',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
				'properties'  => $avatar_properties,
			);
		}

		if ( ! bp_disable_group_cover_image_uploads() ) {
			$schema['properties']['cover_url'] = array(
				'description' => __( 'Cover Image URLs for the group.', 'buddyboss' ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'embed', 'view', 'edit' ),
				'readonly'    => true,
			);
		}

		/**
		 * Filters the group schema.
		 *
		 * @param array $schema The endpoint schema.
		 */
		return apply_filters( 'bp_rest_group_schema', $this->add_additional_fields_schema( $schema ) );
	}

Changelog

Changelog
Version Description
0.1.0 Introduced.

Questions?

We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.