package cn.meowrain.aioj.backend.auth.oauth2.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;

/**
 * OAuth2 Token 响应 DTO 对应 /oauth2/token 端点的响应
 *
 * @author meowrain
 * @since 2025-12-14
 */
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OAuth2TokenResponse {

	/**
	 * 访问令牌
	 */
	@JsonProperty("access_token")
	private String accessToken;

	/**
	 * Token 类型（固定为 "Bearer"）
	 */
	@JsonProperty("token_type")
	private String tokenType;

	/**
	 * 过期时间（秒）
	 */
	@JsonProperty("expires_in")
	private Integer expiresIn;

	/**
	 * 刷新令牌
	 */
	@JsonProperty("refresh_token")
	private String refreshToken;

	/**
	 * 授权范围（空格分隔）
	 */
	private String scope;

	/**
	 * ID Token（OIDC）
	 */
	@JsonProperty("id_token")
	private String idToken;

}
