content: /*
   * CredentialIssuanceService
   * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
   *
   * The version of the OpenAPI document: 1.0.0
   * Contact: info@affinidi.com
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  
  package com.affinidi.tdk.credential.issuance.client.models;
  
  import java.util.Objects;
  import java.util.Arrays;
  import com.affinidi.tdk.credential.issuance.client.models.WellKnownOpenIdCredentialIssuerResponseCredentialsSupportedInner;
  import com.affinidi.tdk.credential.issuance.client.models.WellKnownOpenIdCredentialIssuerResponseDisplay;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonCreator;
  import com.fasterxml.jackson.annotation.JsonTypeName;
  import com.fasterxml.jackson.annotation.JsonValue;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.List;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.annotation.JsonTypeName;
  import java.io.UnsupportedEncodingException;
  import java.net.URLEncoder;
  import java.util.StringJoiner;
  
  /**
   * WellKnownOpenIdCredentialIssuerResponse
   */
  @JsonPropertyOrder({
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_AUTHORIZATION_ENDPOINT,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_CREDENTIAL_ENDPOINT,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_CREDENTIAL_ISSUER,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_BATCH_CREDENTIAL_ENDPOINT,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_CREDENTIALS_SUPPORTED,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_CREDENTIAL_CONFIGURATIONS_SUPPORTED,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_DEFERRED_CREDENTIAL_ENDPOINT,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_GRANT_TYPES_SUPPORTED,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_JWKS_URI,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_DISPLAY,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_SCOPES_SUPPORTED,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_TOKEN_ENDPOINT,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_TOKEN_ENDPOINT_AUTH_METHODS_SUPPORTED,
    WellKnownOpenIdCredentialIssuerResponse.JSON_PROPERTY_RETURN_URIS
  })
  @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.13.0")
  public class WellKnownOpenIdCredentialIssuerResponse {
    public static final String JSON_PROPERTY_AUTHORIZATION_ENDPOINT = "authorization_endpoint";
    @javax.annotation.Nullable
    private String authorizationEndpoint;
  
    public static final String JSON_PROPERTY_CREDENTIAL_ENDPOINT = "credential_endpoint";
    @javax.annotation.Nullable
    private String credentialEndpoint;
  
    public static final String JSON_PROPERTY_CREDENTIAL_ISSUER = "credential_issuer";
    @javax.annotation.Nullable
    private String credentialIssuer;
  
    public static final String JSON_PROPERTY_BATCH_CREDENTIAL_ENDPOINT = "batch_credential_endpoint";
    @javax.annotation.Nullable
    private String batchCredentialEndpoint;
  
    public static final String JSON_PROPERTY_CREDENTIALS_SUPPORTED = "credentials_supported";
    @javax.annotation.Nullable
    private List<WellKnownOpenIdCredentialIssuerResponseCredentialsSupportedInner> credentialsSupported = new ArrayList<>();
  
    public static final String JSON_PROPERTY_CREDENTIAL_CONFIGURATIONS_SUPPORTED = "credential_configurations_supported";
    @javax.annotation.Nullable
    private List<Object> credentialConfigurationsSupported = new ArrayList<>();
  
    public static final String JSON_PROPERTY_DEFERRED_CREDENTIAL_ENDPOINT = "deferred_credential_endpoint";
    @javax.annotation.Nullable
    private String deferredCredentialEndpoint;
  
    /**
     * Gets or Sets grantTypesSupported
     */
    public enum GrantTypesSupportedEnum {
      AUTHORIZATION_CODE(String.valueOf("authorization_code")),
      
      URN_IETF_PARAMS_OAUTH_GRANT_TYPE_PRE_AUTHORIZED_CODE(String.valueOf("urn:ietf:params:oauth:grant-type:pre-authorized_code"));
  
      private String value;
  
      GrantTypesSupportedEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static GrantTypesSupportedEnum fromValue(String value) {
        for (GrantTypesSupportedEnum b : GrantTypesSupportedEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        throw new IllegalArgumentException("Unexpected value '" + value + "'");
      }
    }
  
    public static final String JSON_PROPERTY_GRANT_TYPES_SUPPORTED = "grant_types_supported";
    @javax.annotation.Nullable
    private List<GrantTypesSupportedEnum> grantTypesSupported = new ArrayList<>();
  
    public static final String JSON_PROPERTY_JWKS_URI = "jwks_uri";
    @javax.annotation.Nullable
    private String jwksUri;
  
    public static final String JSON_PROPERTY_DISPLAY = "display";
    @javax.annotation.Nullable
    private WellKnownOpenIdCredentialIssuerResponseDisplay display;
  
    /**
     * Gets or Sets scopesSupported
     */
    public enum ScopesSupportedEnum {
      OPENID(String.valueOf("openid"));
  
      private String value;
  
      ScopesSupportedEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static ScopesSupportedEnum fromValue(String value) {
        for (ScopesSupportedEnum b : ScopesSupportedEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        throw new IllegalArgumentException("Unexpected value '" + value + "'");
      }
    }
  
    public static final String JSON_PROPERTY_SCOPES_SUPPORTED = "scopes_supported";
    @javax.annotation.Nullable
    private List<ScopesSupportedEnum> scopesSupported = new ArrayList<>();
  
    public static final String JSON_PROPERTY_TOKEN_ENDPOINT = "token_endpoint";
    @javax.annotation.Nullable
    private String tokenEndpoint;
  
    /**
     * Gets or Sets tokenEndpointAuthMethodsSupported
     */
    public enum TokenEndpointAuthMethodsSupportedEnum {
      CLIENT_SECRET_POST(String.valueOf("client_secret_post")),
      
      CLIENT_SECRET_BASIC(String.valueOf("client_secret_basic")),
      
      NONE(String.valueOf("none"));
  
      private String value;
  
      TokenEndpointAuthMethodsSupportedEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static TokenEndpointAuthMethodsSupportedEnum fromValue(String value) {
        for (TokenEndpointAuthMethodsSupportedEnum b : TokenEndpointAuthMethodsSupportedEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        throw new IllegalArgumentException("Unexpected value '" + value + "'");
      }
    }
  
    public static final String JSON_PROPERTY_TOKEN_ENDPOINT_AUTH_METHODS_SUPPORTED = "token_endpoint_auth_methods_supported";
    @javax.annotation.Nullable
    private List<TokenEndpointAuthMethodsSupportedEnum> tokenEndpointAuthMethodsSupported = new ArrayList<>();
  
    public static final String JSON_PROPERTY_RETURN_URIS = "return_uris";
    @javax.annotation.Nullable
    private List<String> returnUris = new ArrayList<>();
  
    public WellKnownOpenIdCredentialIssuerResponse() {
    }
  
    public WellKnownOpenIdCredentialIssuerResponse authorizationEndpoint(@javax.annotation.Nullable String authorizationEndpoint) {
      
      this.authorizationEndpoint = authorizationEndpoint;
      return this;
    }
  
    /**
     * Get authorizationEndpoint
     * @return authorizationEndpoint
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_AUTHORIZATION_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public String getAuthorizationEndpoint() {
      return authorizationEndpoint;
    }
  
  
    @JsonProperty(JSON_PROPERTY_AUTHORIZATION_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAuthorizationEndpoint(@javax.annotation.Nullable String authorizationEndpoint) {
      this.authorizationEndpoint = authorizationEndpoint;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse credentialEndpoint(@javax.annotation.Nullable String credentialEndpoint) {
      
      this.credentialEndpoint = credentialEndpoint;
      return this;
    }
  
    /**
     * Get credentialEndpoint
     * @return credentialEndpoint
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_CREDENTIAL_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public String getCredentialEndpoint() {
      return credentialEndpoint;
    }
  
  
    @JsonProperty(JSON_PROPERTY_CREDENTIAL_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCredentialEndpoint(@javax.annotation.Nullable String credentialEndpoint) {
      this.credentialEndpoint = credentialEndpoint;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse credentialIssuer(@javax.annotation.Nullable String credentialIssuer) {
      
      this.credentialIssuer = credentialIssuer;
      return this;
    }
  
    /**
     * Get credentialIssuer
     * @return credentialIssuer
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_CREDENTIAL_ISSUER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public String getCredentialIssuer() {
      return credentialIssuer;
    }
  
  
    @JsonProperty(JSON_PROPERTY_CREDENTIAL_ISSUER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCredentialIssuer(@javax.annotation.Nullable String credentialIssuer) {
      this.credentialIssuer = credentialIssuer;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse batchCredentialEndpoint(@javax.annotation.Nullable String batchCredentialEndpoint) {
      
      this.batchCredentialEndpoint = batchCredentialEndpoint;
      return this;
    }
  
    /**
     * Get batchCredentialEndpoint
     * @return batchCredentialEndpoint
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_BATCH_CREDENTIAL_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public String getBatchCredentialEndpoint() {
      return batchCredentialEndpoint;
    }
  
  
    @JsonProperty(JSON_PROPERTY_BATCH_CREDENTIAL_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setBatchCredentialEndpoint(@javax.annotation.Nullable String batchCredentialEndpoint) {
      this.batchCredentialEndpoint = batchCredentialEndpoint;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse credentialsSupported(@javax.annotation.Nullable List<WellKnownOpenIdCredentialIssuerResponseCredentialsSupportedInner> credentialsSupported) {
      
      this.credentialsSupported = credentialsSupported;
      return this;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse addCredentialsSupportedItem(WellKnownOpenIdCredentialIssuerResponseCredentialsSupportedInner credentialsSupportedItem) {
      if (this.credentialsSupported == null) {
        this.credentialsSupported = new ArrayList<>();
      }
      this.credentialsSupported.add(credentialsSupportedItem);
      return this;
    }
  
    /**
     * Get credentialsSupported
     * @return credentialsSupported
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_CREDENTIALS_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public List<WellKnownOpenIdCredentialIssuerResponseCredentialsSupportedInner> getCredentialsSupported() {
      return credentialsSupported;
    }
  
  
    @JsonProperty(JSON_PROPERTY_CREDENTIALS_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCredentialsSupported(@javax.annotation.Nullable List<WellKnownOpenIdCredentialIssuerResponseCredentialsSupportedInner> credentialsSupported) {
      this.credentialsSupported = credentialsSupported;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse credentialConfigurationsSupported(@javax.annotation.Nullable List<Object> credentialConfigurationsSupported) {
      
      this.credentialConfigurationsSupported = credentialConfigurationsSupported;
      return this;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse addCredentialConfigurationsSupportedItem(Object credentialConfigurationsSupportedItem) {
      if (this.credentialConfigurationsSupported == null) {
        this.credentialConfigurationsSupported = new ArrayList<>();
      }
      this.credentialConfigurationsSupported.add(credentialConfigurationsSupportedItem);
      return this;
    }
  
    /**
     * Get credentialConfigurationsSupported
     * @return credentialConfigurationsSupported
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_CREDENTIAL_CONFIGURATIONS_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public List<Object> getCredentialConfigurationsSupported() {
      return credentialConfigurationsSupported;
    }
  
  
    @JsonProperty(JSON_PROPERTY_CREDENTIAL_CONFIGURATIONS_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCredentialConfigurationsSupported(@javax.annotation.Nullable List<Object> credentialConfigurationsSupported) {
      this.credentialConfigurationsSupported = credentialConfigurationsSupported;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse deferredCredentialEndpoint(@javax.annotation.Nullable String deferredCredentialEndpoint) {
      
      this.deferredCredentialEndpoint = deferredCredentialEndpoint;
      return this;
    }
  
    /**
     * Get deferredCredentialEndpoint
     * @return deferredCredentialEndpoint
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_DEFERRED_CREDENTIAL_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public String getDeferredCredentialEndpoint() {
      return deferredCredentialEndpoint;
    }
  
  
    @JsonProperty(JSON_PROPERTY_DEFERRED_CREDENTIAL_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDeferredCredentialEndpoint(@javax.annotation.Nullable String deferredCredentialEndpoint) {
      this.deferredCredentialEndpoint = deferredCredentialEndpoint;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse grantTypesSupported(@javax.annotation.Nullable List<GrantTypesSupportedEnum> grantTypesSupported) {
      
      this.grantTypesSupported = grantTypesSupported;
      return this;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse addGrantTypesSupportedItem(GrantTypesSupportedEnum grantTypesSupportedItem) {
      if (this.grantTypesSupported == null) {
        this.grantTypesSupported = new ArrayList<>();
      }
      this.grantTypesSupported.add(grantTypesSupportedItem);
      return this;
    }
  
    /**
     * Get grantTypesSupported
     * @return grantTypesSupported
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_GRANT_TYPES_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public List<GrantTypesSupportedEnum> getGrantTypesSupported() {
      return grantTypesSupported;
    }
  
  
    @JsonProperty(JSON_PROPERTY_GRANT_TYPES_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setGrantTypesSupported(@javax.annotation.Nullable List<GrantTypesSupportedEnum> grantTypesSupported) {
      this.grantTypesSupported = grantTypesSupported;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse jwksUri(@javax.annotation.Nullable String jwksUri) {
      
      this.jwksUri = jwksUri;
      return this;
    }
  
    /**
     * Get jwksUri
     * @return jwksUri
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_JWKS_URI)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public String getJwksUri() {
      return jwksUri;
    }
  
  
    @JsonProperty(JSON_PROPERTY_JWKS_URI)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setJwksUri(@javax.annotation.Nullable String jwksUri) {
      this.jwksUri = jwksUri;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse display(@javax.annotation.Nullable WellKnownOpenIdCredentialIssuerResponseDisplay display) {
      
      this.display = display;
      return this;
    }
  
    /**
     * Get display
     * @return display
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_DISPLAY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public WellKnownOpenIdCredentialIssuerResponseDisplay getDisplay() {
      return display;
    }
  
  
    @JsonProperty(JSON_PROPERTY_DISPLAY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDisplay(@javax.annotation.Nullable WellKnownOpenIdCredentialIssuerResponseDisplay display) {
      this.display = display;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse scopesSupported(@javax.annotation.Nullable List<ScopesSupportedEnum> scopesSupported) {
      
      this.scopesSupported = scopesSupported;
      return this;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse addScopesSupportedItem(ScopesSupportedEnum scopesSupportedItem) {
      if (this.scopesSupported == null) {
        this.scopesSupported = new ArrayList<>();
      }
      this.scopesSupported.add(scopesSupportedItem);
      return this;
    }
  
    /**
     * Get scopesSupported
     * @return scopesSupported
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_SCOPES_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public List<ScopesSupportedEnum> getScopesSupported() {
      return scopesSupported;
    }
  
  
    @JsonProperty(JSON_PROPERTY_SCOPES_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setScopesSupported(@javax.annotation.Nullable List<ScopesSupportedEnum> scopesSupported) {
      this.scopesSupported = scopesSupported;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse tokenEndpoint(@javax.annotation.Nullable String tokenEndpoint) {
      
      this.tokenEndpoint = tokenEndpoint;
      return this;
    }
  
    /**
     * Get tokenEndpoint
     * @return tokenEndpoint
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_TOKEN_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public String getTokenEndpoint() {
      return tokenEndpoint;
    }
  
  
    @JsonProperty(JSON_PROPERTY_TOKEN_ENDPOINT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setTokenEndpoint(@javax.annotation.Nullable String tokenEndpoint) {
      this.tokenEndpoint = tokenEndpoint;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse tokenEndpointAuthMethodsSupported(@javax.annotation.Nullable List<TokenEndpointAuthMethodsSupportedEnum> tokenEndpointAuthMethodsSupported) {
      
      this.tokenEndpointAuthMethodsSupported = tokenEndpointAuthMethodsSupported;
      return this;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse addTokenEndpointAuthMethodsSupportedItem(TokenEndpointAuthMethodsSupportedEnum tokenEndpointAuthMethodsSupportedItem) {
      if (this.tokenEndpointAuthMethodsSupported == null) {
        this.tokenEndpointAuthMethodsSupported = new ArrayList<>();
      }
      this.tokenEndpointAuthMethodsSupported.add(tokenEndpointAuthMethodsSupportedItem);
      return this;
    }
  
    /**
     * Get tokenEndpointAuthMethodsSupported
     * @return tokenEndpointAuthMethodsSupported
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_TOKEN_ENDPOINT_AUTH_METHODS_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public List<TokenEndpointAuthMethodsSupportedEnum> getTokenEndpointAuthMethodsSupported() {
      return tokenEndpointAuthMethodsSupported;
    }
  
  
    @JsonProperty(JSON_PROPERTY_TOKEN_ENDPOINT_AUTH_METHODS_SUPPORTED)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setTokenEndpointAuthMethodsSupported(@javax.annotation.Nullable List<TokenEndpointAuthMethodsSupportedEnum> tokenEndpointAuthMethodsSupported) {
      this.tokenEndpointAuthMethodsSupported = tokenEndpointAuthMethodsSupported;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse returnUris(@javax.annotation.Nullable List<String> returnUris) {
      
      this.returnUris = returnUris;
      return this;
    }
  
    public WellKnownOpenIdCredentialIssuerResponse addReturnUrisItem(String returnUrisItem) {
      if (this.returnUris == null) {
        this.returnUris = new ArrayList<>();
      }
      this.returnUris.add(returnUrisItem);
      return this;
    }
  
    /**
     * Get returnUris
     * @return returnUris
     */
    @javax.annotation.Nullable
    @JsonProperty(JSON_PROPERTY_RETURN_URIS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  
    public List<String> getReturnUris() {
      return returnUris;
    }
  
  
    @JsonProperty(JSON_PROPERTY_RETURN_URIS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setReturnUris(@javax.annotation.Nullable List<String> returnUris) {
      this.returnUris = returnUris;
    }
  
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      WellKnownOpenIdCredentialIssuerResponse wellKnownOpenIdCredentialIssuerResponse = (WellKnownOpenIdCredentialIssuerResponse) o;
      return Objects.equals(this.authorizationEndpoint, wellKnownOpenIdCredentialIssuerResponse.authorizationEndpoint) &&
          Objects.equals(this.credentialEndpoint, wellKnownOpenIdCredentialIssuerResponse.credentialEndpoint) &&
          Objects.equals(this.credentialIssuer, wellKnownOpenIdCredentialIssuerResponse.credentialIssuer) &&
          Objects.equals(this.batchCredentialEndpoint, wellKnownOpenIdCredentialIssuerResponse.batchCredentialEndpoint) &&
          Objects.equals(this.credentialsSupported, wellKnownOpenIdCredentialIssuerResponse.credentialsSupported) &&
          Objects.equals(this.credentialConfigurationsSupported, wellKnownOpenIdCredentialIssuerResponse.credentialConfigurationsSupported) &&
          Objects.equals(this.deferredCredentialEndpoint, wellKnownOpenIdCredentialIssuerResponse.deferredCredentialEndpoint) &&
          Objects.equals(this.grantTypesSupported, wellKnownOpenIdCredentialIssuerResponse.grantTypesSupported) &&
          Objects.equals(this.jwksUri, wellKnownOpenIdCredentialIssuerResponse.jwksUri) &&
          Objects.equals(this.display, wellKnownOpenIdCredentialIssuerResponse.display) &&
          Objects.equals(this.scopesSupported, wellKnownOpenIdCredentialIssuerResponse.scopesSupported) &&
          Objects.equals(this.tokenEndpoint, wellKnownOpenIdCredentialIssuerResponse.tokenEndpoint) &&
          Objects.equals(this.tokenEndpointAuthMethodsSupported, wellKnownOpenIdCredentialIssuerResponse.tokenEndpointAuthMethodsSupported) &&
          Objects.equals(this.returnUris, wellKnownOpenIdCredentialIssuerResponse.returnUris);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(authorizationEndpoint, credentialEndpoint, credentialIssuer, batchCredentialEndpoint, credentialsSupported, credentialConfigurationsSupported, deferredCredentialEndpoint, grantTypesSupported, jwksUri, display, scopesSupported, tokenEndpoint, tokenEndpointAuthMethodsSupported, returnUris);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class WellKnownOpenIdCredentialIssuerResponse {\n");
      sb.append("    authorizationEndpoint: ").append(toIndentedString(authorizationEndpoint)).append("\n");
      sb.append("    credentialEndpoint: ").append(toIndentedString(credentialEndpoint)).append("\n");
      sb.append("    credentialIssuer: ").append(toIndentedString(credentialIssuer)).append("\n");
      sb.append("    batchCredentialEndpoint: ").append(toIndentedString(batchCredentialEndpoint)).append("\n");
      sb.append("    credentialsSupported: ").append(toIndentedString(credentialsSupported)).append("\n");
      sb.append("    credentialConfigurationsSupported: ").append(toIndentedString(credentialConfigurationsSupported)).append("\n");
      sb.append("    deferredCredentialEndpoint: ").append(toIndentedString(deferredCredentialEndpoint)).append("\n");
      sb.append("    grantTypesSupported: ").append(toIndentedString(grantTypesSupported)).append("\n");
      sb.append("    jwksUri: ").append(toIndentedString(jwksUri)).append("\n");
      sb.append("    display: ").append(toIndentedString(display)).append("\n");
      sb.append("    scopesSupported: ").append(toIndentedString(scopesSupported)).append("\n");
      sb.append("    tokenEndpoint: ").append(toIndentedString(tokenEndpoint)).append("\n");
      sb.append("    tokenEndpointAuthMethodsSupported: ").append(toIndentedString(tokenEndpointAuthMethodsSupported)).append("\n");
      sb.append("    returnUris: ").append(toIndentedString(returnUris)).append("\n");
      sb.append("}");
      return sb.toString();
    }
  
    /**
     * Convert the given object to string with each line indented by 4 spaces
     * (except the first line).
     */
    private String toIndentedString(Object o) {
      if (o == null) {
        return "null";
      }
      return o.toString().replace("\n", "\n    ");
    }
  
    /**
     * Convert the instance into URL query string.
     *
     * @return URL query string
     */
    public String toUrlQueryString() {
      return toUrlQueryString(null);
    }
  
    /**
     * Convert the instance into URL query string.
     *
     * @param prefix prefix of the query string
     * @return URL query string
     */
    public String toUrlQueryString(String prefix) {
      String suffix = "";
      String containerSuffix = "";
      String containerPrefix = "";
      if (prefix == null) {
        // style=form, explode=true, e.g. /pet?name=cat&type=manx
        prefix = "";
      } else {
        // deepObject style e.g. /pet?id[name]=cat&id[type]=manx
        prefix = prefix + "[";
        suffix = "]";
        containerSuffix = "]";
        containerPrefix = "[";
      }
  
      StringJoiner joiner = new StringJoiner("&");
  
      // add `authorization_endpoint` to the URL query string
      if (getAuthorizationEndpoint() != null) {
        try {
          joiner.add(String.format("%sauthorization_endpoint%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getAuthorizationEndpoint()), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
  
      // add `credential_endpoint` to the URL query string
      if (getCredentialEndpoint() != null) {
        try {
          joiner.add(String.format("%scredential_endpoint%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCredentialEndpoint()), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
  
      // add `credential_issuer` to the URL query string
      if (getCredentialIssuer() != null) {
        try {
          joiner.add(String.format("%scredential_issuer%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getCredentialIssuer()), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
  
      // add `batch_credential_endpoint` to the URL query string
      if (getBatchCredentialEndpoint() != null) {
        try {
          joiner.add(String.format("%sbatch_credential_endpoint%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getBatchCredentialEndpoint()), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
  
      // add `credentials_supported` to the URL query string
      if (getCredentialsSupported() != null) {
        for (int i = 0; i < getCredentialsSupported().size(); i++) {
          if (getCredentialsSupported().get(i) != null) {
            joiner.add(getCredentialsSupported().get(i).toUrlQueryString(String.format("%scredentials_supported%s%s", prefix, suffix,
                "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix))));
          }
        }
      }
  
      // add `credential_configurations_supported` to the URL query string
      if (getCredentialConfigurationsSupported() != null) {
        for (int i = 0; i < getCredentialConfigurationsSupported().size(); i++) {
          try {
            joiner.add(String.format("%scredential_configurations_supported%s%s=%s", prefix, suffix,
                "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
                URLEncoder.encode(String.valueOf(getCredentialConfigurationsSupported().get(i)), "UTF-8").replaceAll("\\+", "%20")));
          } catch (UnsupportedEncodingException e) {
            // Should never happen, UTF-8 is always supported
            throw new RuntimeException(e);
          }
        }
      }
  
      // add `deferred_credential_endpoint` to the URL query string
      if (getDeferredCredentialEndpoint() != null) {
        try {
          joiner.add(String.format("%sdeferred_credential_endpoint%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getDeferredCredentialEndpoint()), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
  
      // add `grant_types_supported` to the URL query string
      if (getGrantTypesSupported() != null) {
        for (int i = 0; i < getGrantTypesSupported().size(); i++) {
          try {
            joiner.add(String.format("%sgrant_types_supported%s%s=%s", prefix, suffix,
                "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
                URLEncoder.encode(String.valueOf(getGrantTypesSupported().get(i)), "UTF-8").replaceAll("\\+", "%20")));
          } catch (UnsupportedEncodingException e) {
            // Should never happen, UTF-8 is always supported
            throw new RuntimeException(e);
          }
        }
      }
  
      // add `jwks_uri` to the URL query string
      if (getJwksUri() != null) {
        try {
          joiner.add(String.format("%sjwks_uri%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getJwksUri()), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
  
      // add `display` to the URL query string
      if (getDisplay() != null) {
        joiner.add(getDisplay().toUrlQueryString(prefix + "display" + suffix));
      }
  
      // add `scopes_supported` to the URL query string
      if (getScopesSupported() != null) {
        for (int i = 0; i < getScopesSupported().size(); i++) {
          try {
            joiner.add(String.format("%sscopes_supported%s%s=%s", prefix, suffix,
                "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
                URLEncoder.encode(String.valueOf(getScopesSupported().get(i)), "UTF-8").replaceAll("\\+", "%20")));
          } catch (UnsupportedEncodingException e) {
            // Should never happen, UTF-8 is always supported
            throw new RuntimeException(e);
          }
        }
      }
  
      // add `token_endpoint` to the URL query string
      if (getTokenEndpoint() != null) {
        try {
          joiner.add(String.format("%stoken_endpoint%s=%s", prefix, suffix, URLEncoder.encode(String.valueOf(getTokenEndpoint()), "UTF-8").replaceAll("\\+", "%20")));
        } catch (UnsupportedEncodingException e) {
          // Should never happen, UTF-8 is always supported
          throw new RuntimeException(e);
        }
      }
  
      // add `token_endpoint_auth_methods_supported` to the URL query string
      if (getTokenEndpointAuthMethodsSupported() != null) {
        for (int i = 0; i < getTokenEndpointAuthMethodsSupported().size(); i++) {
          try {
            joiner.add(String.format("%stoken_endpoint_auth_methods_supported%s%s=%s", prefix, suffix,
                "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
                URLEncoder.encode(String.valueOf(getTokenEndpointAuthMethodsSupported().get(i)), "UTF-8").replaceAll("\\+", "%20")));
          } catch (UnsupportedEncodingException e) {
            // Should never happen, UTF-8 is always supported
            throw new RuntimeException(e);
          }
        }
      }
  
      // add `return_uris` to the URL query string
      if (getReturnUris() != null) {
        for (int i = 0; i < getReturnUris().size(); i++) {
          try {
            joiner.add(String.format("%sreturn_uris%s%s=%s", prefix, suffix,
                "".equals(suffix) ? "" : String.format("%s%d%s", containerPrefix, i, containerSuffix),
                URLEncoder.encode(String.valueOf(getReturnUris().get(i)), "UTF-8").replaceAll("\\+", "%20")));
          } catch (UnsupportedEncodingException e) {
            // Should never happen, UTF-8 is always supported
            throw new RuntimeException(e);
          }
        }
      }
  
      return joiner.toString();
    }
  
  }
  
  