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

import lombok.Data;

/**
 * OAuth2 Token 请求 DTO 对应 /oauth2/token 端点的请求参数
 *
 * @author meowrain
 * @since 2025-12-14
 */
@Data
public class OAuth2TokenRequest {

	/**
	 * 授权类型（authorization_code 或 refresh_token）
	 */
	private String grantType;

	/**
	 * 授权码（grant_type=authorization_code 时必需）
	 */
	private String code;

	/**
	 * 重定向 URI（必须与授权请求时一致）
	 */
	private String redirectUri;

	/**
	 * 客户端 ID
	 */
	private String clientId;

	/**
	 * 客户端密钥（机密客户端必需）
	 */
	private String clientSecret;

	/**
	 * PKCE Code Verifier
	 */
	private String codeVerifier;

	/**
	 * Refresh Token（grant_type=refresh_token 时必需）
	 */
	private String refreshToken;

	/**
	 * 授权范围（refresh_token 时可选，不能超出原范围）
	 */
	private String scope;

}
