lib/google_api/apigee/v1/model/google_cloud_apigee_v1_organization.ex

# 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.Apigee.V1.Model.GoogleCloudApigeeV1Organization do
  @moduledoc """


  ## Attributes

  *   `addonsConfig` (*type:* `GoogleApi.Apigee.V1.Model.GoogleCloudApigeeV1AddonsConfig.t`, *default:* `nil`) - Addon configurations of the Apigee organization.
  *   `analyticsRegion` (*type:* `String.t`, *default:* `nil`) - Required. DEPRECATED: This field will eventually be deprecated and replaced with a differently-named field. Primary Google Cloud region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).
  *   `apiConsumerDataEncryptionKeyName` (*type:* `String.t`, *default:* `nil`) - Cloud KMS key name used for encrypting API consumer data. Required for US/EU regions when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION` or the region is not US/EU, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`
  *   `apiConsumerDataLocation` (*type:* `String.t`, *default:* `nil`) - This field is needed only for customers with control plane in US or EU. Apigee stores some control plane data only in single region. This field determines which single region Apigee should use. For example: "us-west1" when control plane is in US or "europe-west2" when control plane is in EU.
  *   `apigeeProjectId` (*type:* `String.t`, *default:* `nil`) - Output only. Apigee Project ID associated with the organization. Use this project to allowlist Apigee in the Service Attachment when using private service connect with Apigee.
  *   `attributes` (*type:* `list(String.t)`, *default:* `nil`) - Not used by Apigee.
  *   `authorizedNetwork` (*type:* `String.t`, *default:* `nil`) - Compute Engine network used for Service Networking to be peered with Apigee runtime instances. See [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started). Valid only when [RuntimeType](#RuntimeType) is set to `CLOUD`. The value must be set before the creation of a runtime instance and can be updated only when there are no runtime instances. For example: `default`. Apigee also supports shared VPC (that is, the host network project is not the same as the one that is peering with Apigee). See [Shared VPC overview](https://cloud.google.com/vpc/docs/shared-vpc). To use a shared VPC network, use the following format: `projects/{host-project-id}/{region}/networks/{network-name}`. For example: `projects/my-sharedvpc-host/global/networks/mynetwork` **Note:** Not supported for Apigee hybrid.
  *   `billingType` (*type:* `String.t`, *default:* `nil`) - Billing type of the Apigee organization. See [Apigee pricing](https://cloud.google.com/apigee/pricing).
  *   `caCertificate` (*type:* `String.t`, *default:* `nil`) - Output only. Base64-encoded public certificate for the root CA of the Apigee organization. Valid only when [RuntimeType](#RuntimeType) is `CLOUD`.
  *   `controlPlaneEncryptionKeyName` (*type:* `String.t`, *default:* `nil`) - Cloud KMS key name used for encrypting control plane data that is stored in a multi region. Required when [BillingType](#BillingType) is `SUBSCRIPTION`. When [BillingType](#BillingType) is `EVALUATION`, a Google-Managed encryption key will be used. Format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`
  *   `createdAt` (*type:* `String.t`, *default:* `nil`) - Output only. Time that the Apigee organization was created in milliseconds since epoch.
  *   `customerName` (*type:* `String.t`, *default:* `nil`) - Not used by Apigee.
  *   `description` (*type:* `String.t`, *default:* `nil`) - Description of the Apigee organization.
  *   `disableVpcPeering` (*type:* `boolean()`, *default:* `nil`) - Optional. Flag that specifies whether the VPC Peering through Private Google Access should be disabled between the consumer network and Apigee. Valid only when RuntimeType is set to CLOUD. Required if an authorizedNetwork on the consumer project is not provided, in which case the flag should be set to true. The value must be set before the creation of any Apigee runtime instance and can be updated only when there are no runtime instances. **Note:** Apigee will be deprecating the vpc peering model that requires you to provide 'authorizedNetwork', by making the non-peering model as the default way of provisioning Apigee organization in future. So, this will be a temporary flag to enable the transition. Not supported for Apigee hybrid.
  *   `displayName` (*type:* `String.t`, *default:* `nil`) - Display name for the Apigee organization. Unused, but reserved for future use.
  *   `environments` (*type:* `list(String.t)`, *default:* `nil`) - Output only. List of environments in the Apigee organization.
  *   `expiresAt` (*type:* `String.t`, *default:* `nil`) - Output only. Time that the Apigee organization is scheduled for deletion.
  *   `lastModifiedAt` (*type:* `String.t`, *default:* `nil`) - Output only. Time that the Apigee organization was last modified in milliseconds since epoch.
  *   `name` (*type:* `String.t`, *default:* `nil`) - Output only. Name of the Apigee organization.
  *   `portalDisabled` (*type:* `boolean()`, *default:* `nil`) - Configuration for the Portals settings.
  *   `projectId` (*type:* `String.t`, *default:* `nil`) - Output only. Project ID associated with the Apigee organization.
  *   `properties` (*type:* `GoogleApi.Apigee.V1.Model.GoogleCloudApigeeV1Properties.t`, *default:* `nil`) - Properties defined in the Apigee organization profile.
  *   `runtimeDatabaseEncryptionKeyName` (*type:* `String.t`, *default:* `nil`) - Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances. Update is not allowed after the organization is created. Required when [RuntimeType](#RuntimeType) is `CLOUD`. If not specified when [RuntimeType](#RuntimeType) is `TRIAL`, a Google-Managed encryption key will be used. For example: "projects/foo/locations/us/keyRings/bar/cryptoKeys/baz". **Note:** Not supported for Apigee hybrid.
  *   `runtimeType` (*type:* `String.t`, *default:* `nil`) - Required. Runtime type of the Apigee organization based on the Apigee subscription purchased.
  *   `state` (*type:* `String.t`, *default:* `nil`) - Output only. State of the organization. Values other than ACTIVE means the resource is not ready to use.
  *   `subscriptionPlan` (*type:* `String.t`, *default:* `nil`) - Output only. Subscription plan that the customer has purchased. Output only.
  *   `subscriptionType` (*type:* `String.t`, *default:* `nil`) - Output only. DEPRECATED: This will eventually be replaced by BillingType. Subscription type of the Apigee organization. Valid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased). See [Apigee pricing](https://cloud.google.com/apigee/pricing/).
  *   `type` (*type:* `String.t`, *default:* `nil`) - Not used by Apigee.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :addonsConfig => GoogleApi.Apigee.V1.Model.GoogleCloudApigeeV1AddonsConfig.t() | nil,
          :analyticsRegion => String.t() | nil,
          :apiConsumerDataEncryptionKeyName => String.t() | nil,
          :apiConsumerDataLocation => String.t() | nil,
          :apigeeProjectId => String.t() | nil,
          :attributes => list(String.t()) | nil,
          :authorizedNetwork => String.t() | nil,
          :billingType => String.t() | nil,
          :caCertificate => String.t() | nil,
          :controlPlaneEncryptionKeyName => String.t() | nil,
          :createdAt => String.t() | nil,
          :customerName => String.t() | nil,
          :description => String.t() | nil,
          :disableVpcPeering => boolean() | nil,
          :displayName => String.t() | nil,
          :environments => list(String.t()) | nil,
          :expiresAt => String.t() | nil,
          :lastModifiedAt => String.t() | nil,
          :name => String.t() | nil,
          :portalDisabled => boolean() | nil,
          :projectId => String.t() | nil,
          :properties => GoogleApi.Apigee.V1.Model.GoogleCloudApigeeV1Properties.t() | nil,
          :runtimeDatabaseEncryptionKeyName => String.t() | nil,
          :runtimeType => String.t() | nil,
          :state => String.t() | nil,
          :subscriptionPlan => String.t() | nil,
          :subscriptionType => String.t() | nil,
          :type => String.t() | nil
        }

  field(:addonsConfig, as: GoogleApi.Apigee.V1.Model.GoogleCloudApigeeV1AddonsConfig)
  field(:analyticsRegion)
  field(:apiConsumerDataEncryptionKeyName)
  field(:apiConsumerDataLocation)
  field(:apigeeProjectId)
  field(:attributes, type: :list)
  field(:authorizedNetwork)
  field(:billingType)
  field(:caCertificate)
  field(:controlPlaneEncryptionKeyName)
  field(:createdAt)
  field(:customerName)
  field(:description)
  field(:disableVpcPeering)
  field(:displayName)
  field(:environments, type: :list)
  field(:expiresAt)
  field(:lastModifiedAt)
  field(:name)
  field(:portalDisabled)
  field(:projectId)
  field(:properties, as: GoogleApi.Apigee.V1.Model.GoogleCloudApigeeV1Properties)
  field(:runtimeDatabaseEncryptionKeyName)
  field(:runtimeType)
  field(:state)
  field(:subscriptionPlan)
  field(:subscriptionType)
  field(:type)
end

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

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