# Copyright 2019 Google LLC
#
# 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.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Connectors.V1.Model.PartnerMetadata do
  @moduledoc """
  Partner metadata details. This will be populated when publishing the custom connector as a partner connector version. On publishing, parntner connector version will be created using the fields in PartnerMetadata.

  ## Attributes

  *   `acceptGcpTos` (*type:* `boolean()`, *default:* `nil`) - Required. Whether the user has accepted the Google Cloud Platform Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Marketplace Terms of Service (https://cloud.google.com/terms/marketplace/launcher?hl=en).
  *   `additionalComments` (*type:* `String.t`, *default:* `nil`) - Optional. Additional comments for the submission.
  *   `confirmPartnerRequirements` (*type:* `boolean()`, *default:* `nil`) - Required. Confirmation that connector meets all applicable requirements mentioned in the Partner Connector Publishing requirements list and Partner onboardiong requirements list (https://cloud.google.com/marketplace/docs/partners/get-started#requirements).
  *   `demoUri` (*type:* `String.t`, *default:* `nil`) - Required. Public URL for the demo video.
  *   `hasDynamicSpecUri` (*type:* `boolean()`, *default:* `nil`) - Output only. Has dynamic open api spec uri.
  *   `integrationTemplates` (*type:* `String.t`, *default:* `nil`) - Required. Integration example templates for the custom connector.
  *   `localSpecPath` (*type:* `String.t`, *default:* `nil`) - Output only. Local spec path. Required if has_dynamic_spec_uri is true.
  *   `marketplaceProduct` (*type:* `String.t`, *default:* `nil`) - Optional. Marketplace product name.
  *   `marketplaceProductId` (*type:* `String.t`, *default:* `nil`) - Required. Marketplace product ID.
  *   `marketplaceProductProjectId` (*type:* `String.t`, *default:* `nil`) - Optional. Marketplace product project ID.
  *   `marketplaceProductUri` (*type:* `String.t`, *default:* `nil`) - Optional. Marketplace product URL.
  *   `partner` (*type:* `String.t`, *default:* `nil`) - Required. Partner name.
  *   `partnerConnectorDisplayName` (*type:* `String.t`, *default:* `nil`) - Required. Partner connector display name.
  *   `publishRequestTime` (*type:* `DateTime.t`, *default:* `nil`) - Output only. Publish request time.
  *   `targetApplication` (*type:* `String.t`, *default:* `nil`) - Required. Target application for which partner connector is built.
  *   `targetCustomerSegment` (*type:* `String.t`, *default:* `nil`) - Required. Target customer segment for the partner connector.
  *   `useCases` (*type:* `String.t`, *default:* `nil`) - Required. Details about partner connector use cases.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :acceptGcpTos => boolean() | nil,
          :additionalComments => String.t() | nil,
          :confirmPartnerRequirements => boolean() | nil,
          :demoUri => String.t() | nil,
          :hasDynamicSpecUri => boolean() | nil,
          :integrationTemplates => String.t() | nil,
          :localSpecPath => String.t() | nil,
          :marketplaceProduct => String.t() | nil,
          :marketplaceProductId => String.t() | nil,
          :marketplaceProductProjectId => String.t() | nil,
          :marketplaceProductUri => String.t() | nil,
          :partner => String.t() | nil,
          :partnerConnectorDisplayName => String.t() | nil,
          :publishRequestTime => DateTime.t() | nil,
          :targetApplication => String.t() | nil,
          :targetCustomerSegment => String.t() | nil,
          :useCases => String.t() | nil
        }

  field(:acceptGcpTos)
  field(:additionalComments)
  field(:confirmPartnerRequirements)
  field(:demoUri)
  field(:hasDynamicSpecUri)
  field(:integrationTemplates)
  field(:localSpecPath)
  field(:marketplaceProduct)
  field(:marketplaceProductId)
  field(:marketplaceProductProjectId)
  field(:marketplaceProductUri)
  field(:partner)
  field(:partnerConnectorDisplayName)
  field(:publishRequestTime, as: DateTime)
  field(:targetApplication)
  field(:targetCustomerSegment)
  field(:useCases)
end

defimpl Poison.Decoder, for: GoogleApi.Connectors.V1.Model.PartnerMetadata do
  def decode(value, options) do
    GoogleApi.Connectors.V1.Model.PartnerMetadata.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Connectors.V1.Model.PartnerMetadata do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
