def post(self, thread_id):
        """
        @api {POST} /threads/<String:thread_id>/invite Invite users to thread
        @apiGroup Thread

        @apiParam (JSON param) {String[]} users List of user ids

        @apiSuccessExample {JSON} Success-Response:
            {
                "items": ThreadInvitationModel[]
            }
        """
        args = self.reqparse.parse_args()
        caller_user_id = auth.user_id

        # Verifications
        thread_verifications = ThreadVerifications(value=thread_id)
        thread_model = thread_verifications.thread_model
        # Verify user is owner of thread
        thread_verifications.verify_user_is_owner(user_id=caller_user_id)
        # Verify that owner is not inviting himself
        thread_verifications.verify_excludes_owner(user_ids=args.users)
        # Verify users to be invited exist and are not already invited
        for user_id in args.users:
            UserVerifications(value=user_id).verify_user_exists()
            thread_verifications.verify_user_not_invited(user_id=user_id)

        # Create and register invitations
        thread_invitation_models = ThreadInviteHandler().post(
            owner_user_id=caller_user_id,
            user_ids=args.users,
            thread_model=thread_model)

        return thread_invitation_models.jsonify()
    def post(self, thread_id):
        """
        @api {POST} /threads/<String:thread_id>/kick Kick users from thread
        @apiGroup Thread

        @apiParam (JSON param) {String[]} users List of user ids

        @apiSuccessExample {JSON} Success-Response:
            {
                ThreadModel
            }
        """
        args = self.reqparse.parse_args()
        caller_user_id = auth.user_id

        # Verifications
        thread_verifications = ThreadVerifications(value=thread_id)
        thread_model = thread_verifications.thread_model
        # Verify if user is owner of thread
        # Intentional bug to allow non thread owners to kick people for workshop purposes
        # thread_verifications.verify_user_is_owner(user_id=caller_user_id)

        # Verify user is not trying to kick himself
        thread_verifications.verify_excludes_owner(user_ids=args.users)
        # Verify users to be kicked are members of the thread
        for user_id in args.users:
            thread_verifications.verify_user_is_member(user_id=user_id)

        # Kick users from thread
        thread_model = ThreadKickHandler().post(thread_model=thread_model,
                                                user_ids=args.users)

        return thread_model.jsonify()