package ai.sentryagent.idp.models;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

/** Request body for POST /api/v1/agents. */
public final class RegisterAgentRequest {

    @JsonProperty("email")         private final String email;
    @JsonProperty("agentType")     private final String agentType;
    @JsonProperty("version")       private final String version;
    @JsonProperty("capabilities")  private final List<String> capabilities;
    @JsonProperty("owner")         private final String owner;
    @JsonProperty("deploymentEnv") private final String deploymentEnv;

    private RegisterAgentRequest(Builder b) {
        this.email         = b.email;
        this.agentType     = b.agentType;
        this.version       = b.version;
        this.capabilities  = b.capabilities;
        this.owner         = b.owner;
        this.deploymentEnv = b.deploymentEnv;
    }

    public String getEmail()                { return email; }
    public String getAgentType()            { return agentType; }
    public String getVersion()              { return version; }
    public List<String> getCapabilities()   { return capabilities; }
    public String getOwner()               { return owner; }
    public String getDeploymentEnv()        { return deploymentEnv; }

    public static Builder builder() { return new Builder(); }

    public static final class Builder {
        private String email;
        private String agentType;
        private String version;
        private List<String> capabilities;
        private String owner;
        private String deploymentEnv;

        public Builder email(String email)                      { this.email = email;               return this; }
        public Builder agentType(String agentType)              { this.agentType = agentType;       return this; }
        public Builder version(String version)                  { this.version = version;           return this; }
        public Builder capabilities(List<String> capabilities)  { this.capabilities = capabilities; return this; }
        public Builder owner(String owner)                      { this.owner = owner;               return this; }
        public Builder deploymentEnv(String deploymentEnv)      { this.deploymentEnv = deploymentEnv; return this; }

        public RegisterAgentRequest build() { return new RegisterAgentRequest(this); }
    }
}
