// *** 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.azure.automation.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Integer;
import java.lang.String;
import java.util.Objects;


public final class ScheduleMonthlyOccurrenceArgs extends com.pulumi.resources.ResourceArgs {

    public static final ScheduleMonthlyOccurrenceArgs Empty = new ScheduleMonthlyOccurrenceArgs();

    /**
     * Day of the occurrence. Must be one of `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`.
     * 
     */
    @Import(name="day", required=true)
    private Output<String> day;

    /**
     * @return Day of the occurrence. Must be one of `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`.
     * 
     */
    public Output<String> day() {
        return this.day;
    }

    /**
     * Occurrence of the week within the month. Must be between `1` and `5`. `-1` for last week within the month.
     * 
     */
    @Import(name="occurrence", required=true)
    private Output<Integer> occurrence;

    /**
     * @return Occurrence of the week within the month. Must be between `1` and `5`. `-1` for last week within the month.
     * 
     */
    public Output<Integer> occurrence() {
        return this.occurrence;
    }

    private ScheduleMonthlyOccurrenceArgs() {}

    private ScheduleMonthlyOccurrenceArgs(ScheduleMonthlyOccurrenceArgs $) {
        this.day = $.day;
        this.occurrence = $.occurrence;
    }

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

    public static final class Builder {
        private ScheduleMonthlyOccurrenceArgs $;

        public Builder() {
            $ = new ScheduleMonthlyOccurrenceArgs();
        }

        public Builder(ScheduleMonthlyOccurrenceArgs defaults) {
            $ = new ScheduleMonthlyOccurrenceArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param day Day of the occurrence. Must be one of `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`.
         * 
         * @return builder
         * 
         */
        public Builder day(Output<String> day) {
            $.day = day;
            return this;
        }

        /**
         * @param day Day of the occurrence. Must be one of `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`, `Sunday`.
         * 
         * @return builder
         * 
         */
        public Builder day(String day) {
            return day(Output.of(day));
        }

        /**
         * @param occurrence Occurrence of the week within the month. Must be between `1` and `5`. `-1` for last week within the month.
         * 
         * @return builder
         * 
         */
        public Builder occurrence(Output<Integer> occurrence) {
            $.occurrence = occurrence;
            return this;
        }

        /**
         * @param occurrence Occurrence of the week within the month. Must be between `1` and `5`. `-1` for last week within the month.
         * 
         * @return builder
         * 
         */
        public Builder occurrence(Integer occurrence) {
            return occurrence(Output.of(occurrence));
        }

        public ScheduleMonthlyOccurrenceArgs build() {
            $.day = Objects.requireNonNull($.day, "expected parameter 'day' to be non-null");
            $.occurrence = Objects.requireNonNull($.occurrence, "expected parameter 'occurrence' to be non-null");
            return $;
        }
    }

}
