001/*
002 * (C) Copyright 2006-2013 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *     http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 *
016 * Contributors:
017 *     Nelson Silva <nelson.silva@inevo.pt> - initial API and implementation
018 *     Nuxeo
019 */
020package org.nuxeo.ecm.platform.oauth2.openid.auth;
021
022import java.util.Date;
023
024/**
025 * UserInfo Claims. OpenID Connect Basic Client Profile 1.0 - draft 24
026 *
027 * @see <a href="http://openid.net/specs/openid-connect-basic-1_0.html">OpenID Connect Basic</a>
028 */
029public interface OpenIDUserInfo {
030
031    /** @return Subject - Identifier for the End-User at the Issuer. */
032    String getSubject();
033
034    /**
035     * @return End-User's full name in displayable form including all name parts, ordered according to End-User's locale
036     *         and preferences
037     */
038    String getName();
039
040    /** @return Given name or first name of the End-User. */
041    String getGivenName();
042
043    /** @return Surname or last name of the End-User. */
044    String getFamilyName();
045
046    /** @return Middle name of the End-User. */
047    String getMiddleName();
048
049    /** @return Casual name of the End-User that may or may not be the same as the given_name. */
050    String getNickname();
051
052    /** @return Shorthand name that the End-User wishes to be referred to. */
053    String getPreferredUsername();
054
055    /** @return URL of the End-User's profile page. */
056    String getProfile();
057
058    /** @return URL of the End-User's profile picture. */
059    String getPicture();
060
061    /** @return URL of the End-User's web page or blog. */
062    String getWebsite();
063
064    /** @return End-User's preferred e-mail address. */
065    String getEmail();
066
067    /** @return True if the End-User's e-mail address has been verified; otherwise false. */
068    boolean isEmailVerified();
069
070    /** @return End-User's gender. (female or male). */
071    String getGender();
072
073    /** @return End-User's birthday */
074    Date getBirthdate();
075
076    /** @return String from zoneinfo time zone database representing the End-User's time zone. */
077    String getZoneInfo();
078
079    /** @return End-User's locale. */
080    String getLocale();
081
082    /** @return End-User's preferred telephone number. */
083    String getPhoneNumber();
084
085    /** @return End-User's preferred address. */
086    String getAddress();
087
088    /** @return Time the End-User's information was last updated. */
089    Date getUpdatedTime();
090
091}