001/*
002 * (C) Copyright 2006-2013 Nuxeo SA (http://nuxeo.com/) and contributors.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the GNU Lesser General Public License
006 * (LGPL) version 2.1 which accompanies this distribution, and is available at
007 * http://www.gnu.org/licenses/lgpl.html
008 *
009 * This library is distributed in the hope that it will be useful,
010 * but WITHOUT ANY WARRANTY; without even the implied warranty of
011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
012 * Lesser General Public License for more details.
013 *
014 * Contributors:
015 *     Nelson Silva <nelson.silva@inevo.pt> - initial API and implementation
016 *     Nuxeo
017 */
018package org.nuxeo.ecm.platform.oauth2.openid.auth;
019
020import java.util.Date;
021
022/**
023 * UserInfo Claims. OpenID Connect Basic Client Profile 1.0 - draft 24
024 * 
025 * @see http://openid.net/specs/openid-connect-basic-1_0.html
026 */
027public interface OpenIDUserInfo {
028
029    /** @return Subject - Identifier for the End-User at the Issuer. */
030    String getSubject();
031
032    /**
033     * @return End-User's full name in displayable form including all name parts, ordered according to End-User's locale
034     *         and preferences
035     */
036    String getName();
037
038    /** @return Given name or first name of the End-User. */
039    String getGivenName();
040
041    /** @return Surname or last name of the End-User. */
042    String getFamilyName();
043
044    /** @return Middle name of the End-User. */
045    String getMiddleName();
046
047    /** @return Casual name of the End-User that may or may not be the same as the given_name. */
048    String getNickname();
049
050    /** @return Shorthand name that the End-User wishes to be referred to. */
051    String getPreferredUsername();
052
053    /** @return URL of the End-User's profile page. */
054    String getProfile();
055
056    /** @return URL of the End-User's profile picture. */
057    String getPicture();
058
059    /** @return URL of the End-User's web page or blog. */
060    String getWebsite();
061
062    /** @return End-User's preferred e-mail address. */
063    String getEmail();
064
065    /** @return True if the End-User's e-mail address has been verified; otherwise false. */
066    boolean isEmailVerified();
067
068    /** @return End-User's gender. (female or male). */
069    String getGender();
070
071    /** @return End-User's birthday */
072    Date getBirthdate();
073
074    /** @return String from zoneinfo time zone database representing the End-User's time zone. */
075    String getZoneInfo();
076
077    /** @return End-User's locale. */
078    String getLocale();
079
080    /** @return End-User's preferred telephone number. */
081    String getPhoneNumber();
082
083    /** @return End-User's preferred address. */
084    String getAddress();
085
086    /** @return Time the End-User's information was last updated. */
087    Date getUpdatedTime();
088
089}