// Path: src/main/java/com/stackify/api/EnvironmentDetail.java
// @AllArgsConstructor
// @NoArgsConstructor
// @Builder(builderClassName = "Builder", builderMethodName = "newBuilder", toBuilder = true)
// @Data
// @JsonInclude(JsonInclude.Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class EnvironmentDetail {
// 
//     /**
//      * Device name
//      */
//     @JsonProperty("DeviceName")
//     private String deviceName;
// 
//     /**
//      * Application name
//      */
//     @JsonProperty("AppName")
//     private String appName;
// 
//     /**
//      * Application location
//      */
//     @JsonProperty("AppLocation")
//     private String appLocation;
// 
//     /**
//      * Custom application name
//      */
//     @JsonProperty("ConfiguredAppName")
//     private String configuredAppName;
// 
//     /**
//      * Custom application environment
//      */
//     @JsonProperty("ConfiguredEnvironmentName")
//     private String configuredEnvironmentName;
// 
// }


import com.stackify.api.EnvironmentDetail;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;
/*
 * Copyright 2014 Stackify
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.stackify.api.common;


/**
 * ApiConfiguration
 *
 * @author Eric Martin
 */
@ToString
@Getter
@Builder(builderClassName = "Builder", toBuilder = true, builderMethodName = "newBuilder")
public class ApiConfiguration {

    public static final String TRANSPORT_DIRECT = "direct";
    public static final String TRANSPORT_AGENT_SOCKET = "agent_socket";

    private static final String DEFAULT_TRANSPORT = TRANSPORT_DIRECT;
    private static final String DEFAULT_AGENT_SOCKET_PATH_UNIX = "/usr/local/stackify/stackify.sock";

    /**
     * Default API URL
     */
    private static final String DEFAULT_API_URL = "https://api.stackify.com";

    /**
     * API URL
     */
    private final String apiUrl;

    /**
     * API Key
     */
    private final String apiKey;

    /**
     * Application name
     */
    private final String application;

    /**
     * Environment
     */
    private final String environment;

    /**
     * Environment details
     */
// Path: src/main/java/com/stackify/api/EnvironmentDetail.java
// @AllArgsConstructor
// @NoArgsConstructor
// @Builder(builderClassName = "Builder", builderMethodName = "newBuilder", toBuilder = true)
// @Data
// @JsonInclude(JsonInclude.Include.NON_NULL)
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class EnvironmentDetail {
// 
//     /**
//      * Device name
//      */
//     @JsonProperty("DeviceName")
//     private String deviceName;
// 
//     /**
//      * Application name
//      */
//     @JsonProperty("AppName")
//     private String appName;
// 
//     /**
//      * Application location
//      */
//     @JsonProperty("AppLocation")
//     private String appLocation;
// 
//     /**
//      * Custom application name
//      */
//     @JsonProperty("ConfiguredAppName")
//     private String configuredAppName;
// 
//     /**
//      * Custom application environment
//      */
//     @JsonProperty("ConfiguredEnvironmentName")
//     private String configuredEnvironmentName;
// 
// }


// Path: src/main/java/com/stackify/api/common/ApiConfiguration.java
import com.stackify.api.EnvironmentDetail;
import lombok.Builder;
import lombok.Getter;
import lombok.ToString;

/*
 * Copyright 2014 Stackify
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.stackify.api.common;


/**
 * ApiConfiguration
 *
 * @author Eric Martin
 */
@ToString
@Getter
@Builder(builderClassName = "Builder", toBuilder = true, builderMethodName = "newBuilder")
public class ApiConfiguration {

    public static final String TRANSPORT_DIRECT = "direct";
    public static final String TRANSPORT_AGENT_SOCKET = "agent_socket";

    private static final String DEFAULT_TRANSPORT = TRANSPORT_DIRECT;
    private static final String DEFAULT_AGENT_SOCKET_PATH_UNIX = "/usr/local/stackify/stackify.sock";

    /**
     * Default API URL
     */
    private static final String DEFAULT_API_URL = "https://api.stackify.com";

    /**
     * API URL
     */
    private final String apiUrl;

    /**
     * API Key
     */
    private final String apiKey;

    /**
     * Application name
     */
    private final String application;

    /**
     * Environment
     */
    private final String environment;

    /**
     * Environment details
     */
    private final EnvironmentDetail envDetail;