// Path: src/main/java/com/amazon/dtasdk/base/InstantAccessOperationValue.java
// public enum InstantAccessOperationValue {
//     PURCHASE("Purchase"),
//     REVOKE("Revoke"),
//     GETUSERID("GetUserId"),
//     SUBSCRIPTIONGET("SubscriptionGet"),
//     SUBSCRIPTIONACTIVATE("SubscriptionActivate"),
//     SUBSCRIPTIONDEACTIVATE("SubscriptionDeactivate"),
//     SUBSCRIPTIONUPDATE("SubscriptionUpdate");
// 
//     private String apiName;
// 
//     /**
//      * @param apiName
//      *            The string representation of the operation according to the API
//      */
//     InstantAccessOperationValue(String apiName) {
//         this.apiName = apiName;
//     }
// 
//     @JsonValue
//     public String toJson() {
//         return apiName;
//     }
// 
//     @JsonCreator
//     public static InstantAccessOperationValue fromJson(String text) {
//         // ignore the case when deserializing
//         return valueOf(text.toUpperCase());
//     }
// }
// 
// Path: src/main/java/com/amazon/dtasdk/base/SubscriptionRequest.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class SubscriptionRequest extends InstantAccessRequest {
// 
//     protected String subscriptionId;
// 
//     protected String productId;
// 
//     protected String userId;
// 
//     public String getSubscriptionId() {
//         return subscriptionId;
//     }
// 
//     public SubscriptionRequest setSubscriptionId(String subscriptionId) {
//         this.subscriptionId = subscriptionId;
//         return this;
//     }
// 
//     public String getProductId() {
//         return productId;
//     }
// 
//     public SubscriptionRequest setProductId(String productId) {
//         this.productId = productId;
//         return this;
//     }
// 
//     public String getUserId() {
//         return userId;
//     }
// 
//     public SubscriptionRequest setUserId(String userId) {
//         this.userId = userId;
//         return this;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         if (!super.equals(o)) return false;
// 
//         final SubscriptionRequest that = (SubscriptionRequest) o;
// 
//         if (subscriptionId != null ? !subscriptionId.equals(that.subscriptionId) : that.subscriptionId != null)
//             return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = super.hashCode();
//         result = 31 * result + (subscriptionId != null ? subscriptionId.hashCode() : 0);
//         return result;
//     }
// }


import com.amazon.dtasdk.base.InstantAccessOperationValue;
import com.amazon.dtasdk.base.SubscriptionRequest;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
/*
 * Copyright 2017-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file 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.amazon.dtasdk.v3.serialization.messages;


/**
 * A request to activate a subscription for a specified user and product
 */
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class SubscriptionActivateRequest extends SubscriptionRequest {

    private Integer numberOfLicenses;

    @Override
    public SubscriptionActivateRequest setOperation(InstantAccessOperationValue operationValue) {
        this.operation = operationValue;
        return this;
    }

    public String getProductId() {
        return productId;
    }

    @Override
    public SubscriptionActivateRequest setSubscriptionId(String subscriptionId) {
        this.subscriptionId = subscriptionId;
        return this;
    }

    public Integer getNumberOfLicenses() {
        return numberOfLicenses;
    }

    public SubscriptionActivateRequest setNumberOfLicenses(Integer numberOfLicenses) {
        this.numberOfLicenses = numberOfLicenses;
        return this;
    }

// Path: src/main/java/com/amazon/dtasdk/base/InstantAccessOperationValue.java
// public enum InstantAccessOperationValue {
//     PURCHASE("Purchase"),
//     REVOKE("Revoke"),
//     GETUSERID("GetUserId"),
//     SUBSCRIPTIONGET("SubscriptionGet"),
//     SUBSCRIPTIONACTIVATE("SubscriptionActivate"),
//     SUBSCRIPTIONDEACTIVATE("SubscriptionDeactivate"),
//     SUBSCRIPTIONUPDATE("SubscriptionUpdate");
// 
//     private String apiName;
// 
//     /**
//      * @param apiName
//      *            The string representation of the operation according to the API
//      */
//     InstantAccessOperationValue(String apiName) {
//         this.apiName = apiName;
//     }
// 
//     @JsonValue
//     public String toJson() {
//         return apiName;
//     }
// 
//     @JsonCreator
//     public static InstantAccessOperationValue fromJson(String text) {
//         // ignore the case when deserializing
//         return valueOf(text.toUpperCase());
//     }
// }
// 
// Path: src/main/java/com/amazon/dtasdk/base/SubscriptionRequest.java
// @JsonIgnoreProperties(ignoreUnknown = true)
// public class SubscriptionRequest extends InstantAccessRequest {
// 
//     protected String subscriptionId;
// 
//     protected String productId;
// 
//     protected String userId;
// 
//     public String getSubscriptionId() {
//         return subscriptionId;
//     }
// 
//     public SubscriptionRequest setSubscriptionId(String subscriptionId) {
//         this.subscriptionId = subscriptionId;
//         return this;
//     }
// 
//     public String getProductId() {
//         return productId;
//     }
// 
//     public SubscriptionRequest setProductId(String productId) {
//         this.productId = productId;
//         return this;
//     }
// 
//     public String getUserId() {
//         return userId;
//     }
// 
//     public SubscriptionRequest setUserId(String userId) {
//         this.userId = userId;
//         return this;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         if (!super.equals(o)) return false;
// 
//         final SubscriptionRequest that = (SubscriptionRequest) o;
// 
//         if (subscriptionId != null ? !subscriptionId.equals(that.subscriptionId) : that.subscriptionId != null)
//             return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = super.hashCode();
//         result = 31 * result + (subscriptionId != null ? subscriptionId.hashCode() : 0);
//         return result;
//     }
// }


// Path: src/main/java/com/amazon/dtasdk/v3/serialization/messages/SubscriptionActivateRequest.java
import com.amazon.dtasdk.base.InstantAccessOperationValue;
import com.amazon.dtasdk.base.SubscriptionRequest;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

/*
 * Copyright 2017-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *  http://aws.amazon.com/apache2.0
 *
 * or in the "license" file accompanying this file. This file 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.amazon.dtasdk.v3.serialization.messages;


/**
 * A request to activate a subscription for a specified user and product
 */
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class SubscriptionActivateRequest extends SubscriptionRequest {

    private Integer numberOfLicenses;

    @Override
    public SubscriptionActivateRequest setOperation(InstantAccessOperationValue operationValue) {
        this.operation = operationValue;
        return this;
    }

    public String getProductId() {
        return productId;
    }

    @Override
    public SubscriptionActivateRequest setSubscriptionId(String subscriptionId) {
        this.subscriptionId = subscriptionId;
        return this;
    }

    public Integer getNumberOfLicenses() {
        return numberOfLicenses;
    }

    public SubscriptionActivateRequest setNumberOfLicenses(Integer numberOfLicenses) {
        this.numberOfLicenses = numberOfLicenses;
        return this;
    }

    public SubscriptionActivateRequest setProductId(String productId) {