package com.eactive.eai.rms.onl.apim.obp;

import lombok.Builder;
import lombok.Getter;

/**
 * OBP API 목록 조회 DTO
 *
 * <p>TSEAIHE01과 TSEAIHS04 테이블을 조인하여 API 정보를 제공</p>
 */
@Getter
@Builder
public class ObpApiDTO {

    /**
     * 고정 ID (항상 null)
     */
    private final Integer id;

    /**
     * API ID (TSEAIHE01.EAISVCNAME)
     */
    private final String apiId;

    /**
     * API 이름 (TSEAIHE01.EAISVCDESC)
     */
    private final String name;

    /**
     * 활성화 여부 (TSEAIHE01.USEYN = '1' -> true)
     */
    private final boolean enabled;

    /**
     * API URL 패턴 (TSEAIHS04.APIFULLPATH에서 '|' 이후 부분)
     */
    private final String urlPattern;

    /**
     * HTTP Method (TSEAIHS04.APIFULLPATH에서 '|' 이전 부분)
     */
    private final String method;

    /**
     * 요구되는 인증 정보
     */
    private final RequiredAuthentication requiredAuthentication;

    /**
     * API 상태 정보
     */
    private final Status status;

    /**
     * 요구되는 인증 정보 DTO
     */
    @Getter
    @Builder
    public static class RequiredAuthentication {
        /**
         * 인증 타입 코드 (API_KEY, OAUTH2, NONE)
         */
        private final String key;

        /**
         * 인증 타입 표시명
         */
        private final String name;
    }

    /**
     * API 상태 정보 DTO
     */
    @Getter
    @Builder
    public static class Status {
        /**
         * 상태 코드 (RUNNING, SUSPEND)
         */
        private final String key;

        /**
         * 상태 표시명
         */
        private final String name;

        /**
         * 배포 여부 (enabled와 동일)
         */
        private final boolean deployed;
    }
}
