// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.gcp.cloudrun.outputs;

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.cloudrun.outputs.GetServiceStatusCondition;
import com.pulumi.gcp.cloudrun.outputs.GetServiceStatusTraffic;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetServiceStatus {
    private List<GetServiceStatusCondition> conditions;
    private String latestCreatedRevisionName;
    private String latestReadyRevisionName;
    private Integer observedGeneration;
    private List<GetServiceStatusTraffic> traffics;
    private String url;

    private GetServiceStatus() {}
    public List<GetServiceStatusCondition> conditions() {
        return this.conditions;
    }
    public String latestCreatedRevisionName() {
        return this.latestCreatedRevisionName;
    }
    public String latestReadyRevisionName() {
        return this.latestReadyRevisionName;
    }
    public Integer observedGeneration() {
        return this.observedGeneration;
    }
    public List<GetServiceStatusTraffic> traffics() {
        return this.traffics;
    }
    public String url() {
        return this.url;
    }

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

    public static Builder builder(GetServiceStatus defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private List<GetServiceStatusCondition> conditions;
        private String latestCreatedRevisionName;
        private String latestReadyRevisionName;
        private Integer observedGeneration;
        private List<GetServiceStatusTraffic> traffics;
        private String url;
        public Builder() {}
        public Builder(GetServiceStatus defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.conditions = defaults.conditions;
    	      this.latestCreatedRevisionName = defaults.latestCreatedRevisionName;
    	      this.latestReadyRevisionName = defaults.latestReadyRevisionName;
    	      this.observedGeneration = defaults.observedGeneration;
    	      this.traffics = defaults.traffics;
    	      this.url = defaults.url;
        }

        @CustomType.Setter
        public Builder conditions(List<GetServiceStatusCondition> conditions) {
            this.conditions = Objects.requireNonNull(conditions);
            return this;
        }
        public Builder conditions(GetServiceStatusCondition... conditions) {
            return conditions(List.of(conditions));
        }
        @CustomType.Setter
        public Builder latestCreatedRevisionName(String latestCreatedRevisionName) {
            this.latestCreatedRevisionName = Objects.requireNonNull(latestCreatedRevisionName);
            return this;
        }
        @CustomType.Setter
        public Builder latestReadyRevisionName(String latestReadyRevisionName) {
            this.latestReadyRevisionName = Objects.requireNonNull(latestReadyRevisionName);
            return this;
        }
        @CustomType.Setter
        public Builder observedGeneration(Integer observedGeneration) {
            this.observedGeneration = Objects.requireNonNull(observedGeneration);
            return this;
        }
        @CustomType.Setter
        public Builder traffics(List<GetServiceStatusTraffic> traffics) {
            this.traffics = Objects.requireNonNull(traffics);
            return this;
        }
        public Builder traffics(GetServiceStatusTraffic... traffics) {
            return traffics(List.of(traffics));
        }
        @CustomType.Setter
        public Builder url(String url) {
            this.url = Objects.requireNonNull(url);
            return this;
        }
        public GetServiceStatus build() {
            final var o = new GetServiceStatus();
            o.conditions = conditions;
            o.latestCreatedRevisionName = latestCreatedRevisionName;
            o.latestReadyRevisionName = latestReadyRevisionName;
            o.observedGeneration = observedGeneration;
            o.traffics = traffics;
            o.url = url;
            return o;
        }
    }
}
