diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/B2BI/Capability.hs b/gen/Stratosphere/B2BI/Capability.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability.hs
@@ -0,0 +1,74 @@
+module Stratosphere.B2BI.Capability (
+        module Exports, Capability(..), mkCapability
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Capability.CapabilityConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Capability.S3LocationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Capability
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-capability.html>
+    Capability {haddock_workaround_ :: (),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-capability.html#cfn-b2bi-capability-configuration>
+                configuration :: CapabilityConfigurationProperty,
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-capability.html#cfn-b2bi-capability-instructionsdocuments>
+                instructionsDocuments :: (Prelude.Maybe [S3LocationProperty]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-capability.html#cfn-b2bi-capability-name>
+                name :: (Value Prelude.Text),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-capability.html#cfn-b2bi-capability-tags>
+                tags :: (Prelude.Maybe [Tag]),
+                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-capability.html#cfn-b2bi-capability-type>
+                type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCapability ::
+  CapabilityConfigurationProperty
+  -> Value Prelude.Text -> Value Prelude.Text -> Capability
+mkCapability configuration name type'
+  = Capability
+      {haddock_workaround_ = (), configuration = configuration,
+       name = name, type' = type',
+       instructionsDocuments = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Capability where
+  toResourceProperties Capability {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Capability", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Configuration" JSON..= configuration, "Name" JSON..= name,
+                            "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "InstructionsDocuments"
+                                 Prelude.<$> instructionsDocuments,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Capability where
+  toJSON Capability {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Configuration" JSON..= configuration, "Name" JSON..= name,
+               "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "InstructionsDocuments"
+                    Prelude.<$> instructionsDocuments,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Configuration" Capability where
+  type PropertyType "Configuration" Capability = CapabilityConfigurationProperty
+  set newValue Capability {..}
+    = Capability {configuration = newValue, ..}
+instance Property "InstructionsDocuments" Capability where
+  type PropertyType "InstructionsDocuments" Capability = [S3LocationProperty]
+  set newValue Capability {..}
+    = Capability {instructionsDocuments = Prelude.pure newValue, ..}
+instance Property "Name" Capability where
+  type PropertyType "Name" Capability = Value Prelude.Text
+  set newValue Capability {..} = Capability {name = newValue, ..}
+instance Property "Tags" Capability where
+  type PropertyType "Tags" Capability = [Tag]
+  set newValue Capability {..}
+    = Capability {tags = Prelude.pure newValue, ..}
+instance Property "Type" Capability where
+  type PropertyType "Type" Capability = Value Prelude.Text
+  set newValue Capability {..} = Capability {type' = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Capability/CapabilityConfigurationProperty.hs b/gen/Stratosphere/B2BI/Capability/CapabilityConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/CapabilityConfigurationProperty.hs
@@ -0,0 +1,32 @@
+module Stratosphere.B2BI.Capability.CapabilityConfigurationProperty (
+        module Exports, CapabilityConfigurationProperty(..),
+        mkCapabilityConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Capability.EdiConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+data CapabilityConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-capabilityconfiguration.html>
+    CapabilityConfigurationProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-capabilityconfiguration.html#cfn-b2bi-capability-capabilityconfiguration-edi>
+                                     edi :: EdiConfigurationProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCapabilityConfigurationProperty ::
+  EdiConfigurationProperty -> CapabilityConfigurationProperty
+mkCapabilityConfigurationProperty edi
+  = CapabilityConfigurationProperty
+      {haddock_workaround_ = (), edi = edi}
+instance ToResourceProperties CapabilityConfigurationProperty where
+  toResourceProperties CapabilityConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Capability.CapabilityConfiguration",
+         supportsTags = Prelude.False, properties = ["Edi" JSON..= edi]}
+instance JSON.ToJSON CapabilityConfigurationProperty where
+  toJSON CapabilityConfigurationProperty {..}
+    = JSON.object ["Edi" JSON..= edi]
+instance Property "Edi" CapabilityConfigurationProperty where
+  type PropertyType "Edi" CapabilityConfigurationProperty = EdiConfigurationProperty
+  set newValue CapabilityConfigurationProperty {..}
+    = CapabilityConfigurationProperty {edi = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Capability/CapabilityConfigurationProperty.hs-boot b/gen/Stratosphere/B2BI/Capability/CapabilityConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/CapabilityConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Capability.CapabilityConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CapabilityConfigurationProperty :: Prelude.Type
+instance ToResourceProperties CapabilityConfigurationProperty
+instance Prelude.Eq CapabilityConfigurationProperty
+instance Prelude.Show CapabilityConfigurationProperty
+instance JSON.ToJSON CapabilityConfigurationProperty
diff --git a/gen/Stratosphere/B2BI/Capability/EdiConfigurationProperty.hs b/gen/Stratosphere/B2BI/Capability/EdiConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/EdiConfigurationProperty.hs
@@ -0,0 +1,84 @@
+module Stratosphere.B2BI.Capability.EdiConfigurationProperty (
+        module Exports, EdiConfigurationProperty(..),
+        mkEdiConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Capability.EdiTypeProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Capability.S3LocationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data EdiConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-ediconfiguration.html>
+    EdiConfigurationProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-ediconfiguration.html#cfn-b2bi-capability-ediconfiguration-capabilitydirection>
+                              capabilityDirection :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-ediconfiguration.html#cfn-b2bi-capability-ediconfiguration-inputlocation>
+                              inputLocation :: S3LocationProperty,
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-ediconfiguration.html#cfn-b2bi-capability-ediconfiguration-outputlocation>
+                              outputLocation :: S3LocationProperty,
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-ediconfiguration.html#cfn-b2bi-capability-ediconfiguration-transformerid>
+                              transformerId :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-ediconfiguration.html#cfn-b2bi-capability-ediconfiguration-type>
+                              type' :: EdiTypeProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEdiConfigurationProperty ::
+  S3LocationProperty
+  -> S3LocationProperty
+     -> Value Prelude.Text
+        -> EdiTypeProperty -> EdiConfigurationProperty
+mkEdiConfigurationProperty
+  inputLocation
+  outputLocation
+  transformerId
+  type'
+  = EdiConfigurationProperty
+      {haddock_workaround_ = (), inputLocation = inputLocation,
+       outputLocation = outputLocation, transformerId = transformerId,
+       type' = type', capabilityDirection = Prelude.Nothing}
+instance ToResourceProperties EdiConfigurationProperty where
+  toResourceProperties EdiConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Capability.EdiConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["InputLocation" JSON..= inputLocation,
+                            "OutputLocation" JSON..= outputLocation,
+                            "TransformerId" JSON..= transformerId, "Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "CapabilityDirection"
+                                 Prelude.<$> capabilityDirection]))}
+instance JSON.ToJSON EdiConfigurationProperty where
+  toJSON EdiConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["InputLocation" JSON..= inputLocation,
+               "OutputLocation" JSON..= outputLocation,
+               "TransformerId" JSON..= transformerId, "Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "CapabilityDirection"
+                    Prelude.<$> capabilityDirection])))
+instance Property "CapabilityDirection" EdiConfigurationProperty where
+  type PropertyType "CapabilityDirection" EdiConfigurationProperty = Value Prelude.Text
+  set newValue EdiConfigurationProperty {..}
+    = EdiConfigurationProperty
+        {capabilityDirection = Prelude.pure newValue, ..}
+instance Property "InputLocation" EdiConfigurationProperty where
+  type PropertyType "InputLocation" EdiConfigurationProperty = S3LocationProperty
+  set newValue EdiConfigurationProperty {..}
+    = EdiConfigurationProperty {inputLocation = newValue, ..}
+instance Property "OutputLocation" EdiConfigurationProperty where
+  type PropertyType "OutputLocation" EdiConfigurationProperty = S3LocationProperty
+  set newValue EdiConfigurationProperty {..}
+    = EdiConfigurationProperty {outputLocation = newValue, ..}
+instance Property "TransformerId" EdiConfigurationProperty where
+  type PropertyType "TransformerId" EdiConfigurationProperty = Value Prelude.Text
+  set newValue EdiConfigurationProperty {..}
+    = EdiConfigurationProperty {transformerId = newValue, ..}
+instance Property "Type" EdiConfigurationProperty where
+  type PropertyType "Type" EdiConfigurationProperty = EdiTypeProperty
+  set newValue EdiConfigurationProperty {..}
+    = EdiConfigurationProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Capability/EdiConfigurationProperty.hs-boot b/gen/Stratosphere/B2BI/Capability/EdiConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/EdiConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Capability.EdiConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EdiConfigurationProperty :: Prelude.Type
+instance ToResourceProperties EdiConfigurationProperty
+instance Prelude.Eq EdiConfigurationProperty
+instance Prelude.Show EdiConfigurationProperty
+instance JSON.ToJSON EdiConfigurationProperty
diff --git a/gen/Stratosphere/B2BI/Capability/EdiTypeProperty.hs b/gen/Stratosphere/B2BI/Capability/EdiTypeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/EdiTypeProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.B2BI.Capability.EdiTypeProperty (
+        module Exports, EdiTypeProperty(..), mkEdiTypeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Capability.X12DetailsProperty as Exports
+import Stratosphere.ResourceProperties
+data EdiTypeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-editype.html>
+    EdiTypeProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-editype.html#cfn-b2bi-capability-editype-x12details>
+                     x12Details :: X12DetailsProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkEdiTypeProperty :: X12DetailsProperty -> EdiTypeProperty
+mkEdiTypeProperty x12Details
+  = EdiTypeProperty
+      {haddock_workaround_ = (), x12Details = x12Details}
+instance ToResourceProperties EdiTypeProperty where
+  toResourceProperties EdiTypeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Capability.EdiType",
+         supportsTags = Prelude.False,
+         properties = ["X12Details" JSON..= x12Details]}
+instance JSON.ToJSON EdiTypeProperty where
+  toJSON EdiTypeProperty {..}
+    = JSON.object ["X12Details" JSON..= x12Details]
+instance Property "X12Details" EdiTypeProperty where
+  type PropertyType "X12Details" EdiTypeProperty = X12DetailsProperty
+  set newValue EdiTypeProperty {..}
+    = EdiTypeProperty {x12Details = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Capability/EdiTypeProperty.hs-boot b/gen/Stratosphere/B2BI/Capability/EdiTypeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/EdiTypeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Capability.EdiTypeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data EdiTypeProperty :: Prelude.Type
+instance ToResourceProperties EdiTypeProperty
+instance Prelude.Eq EdiTypeProperty
+instance Prelude.Show EdiTypeProperty
+instance JSON.ToJSON EdiTypeProperty
diff --git a/gen/Stratosphere/B2BI/Capability/S3LocationProperty.hs b/gen/Stratosphere/B2BI/Capability/S3LocationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/S3LocationProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.B2BI.Capability.S3LocationProperty (
+        S3LocationProperty(..), mkS3LocationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data S3LocationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-s3location.html>
+    S3LocationProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-s3location.html#cfn-b2bi-capability-s3location-bucketname>
+                        bucketName :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-s3location.html#cfn-b2bi-capability-s3location-key>
+                        key :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkS3LocationProperty :: S3LocationProperty
+mkS3LocationProperty
+  = S3LocationProperty
+      {haddock_workaround_ = (), bucketName = Prelude.Nothing,
+       key = Prelude.Nothing}
+instance ToResourceProperties S3LocationProperty where
+  toResourceProperties S3LocationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Capability.S3Location",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BucketName" Prelude.<$> bucketName,
+                            (JSON..=) "Key" Prelude.<$> key])}
+instance JSON.ToJSON S3LocationProperty where
+  toJSON S3LocationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BucketName" Prelude.<$> bucketName,
+               (JSON..=) "Key" Prelude.<$> key]))
+instance Property "BucketName" S3LocationProperty where
+  type PropertyType "BucketName" S3LocationProperty = Value Prelude.Text
+  set newValue S3LocationProperty {..}
+    = S3LocationProperty {bucketName = Prelude.pure newValue, ..}
+instance Property "Key" S3LocationProperty where
+  type PropertyType "Key" S3LocationProperty = Value Prelude.Text
+  set newValue S3LocationProperty {..}
+    = S3LocationProperty {key = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Capability/S3LocationProperty.hs-boot b/gen/Stratosphere/B2BI/Capability/S3LocationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/S3LocationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Capability.S3LocationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data S3LocationProperty :: Prelude.Type
+instance ToResourceProperties S3LocationProperty
+instance Prelude.Eq S3LocationProperty
+instance Prelude.Show S3LocationProperty
+instance JSON.ToJSON S3LocationProperty
diff --git a/gen/Stratosphere/B2BI/Capability/X12DetailsProperty.hs b/gen/Stratosphere/B2BI/Capability/X12DetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/X12DetailsProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.B2BI.Capability.X12DetailsProperty (
+        X12DetailsProperty(..), mkX12DetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12DetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-x12details.html>
+    X12DetailsProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-x12details.html#cfn-b2bi-capability-x12details-transactionset>
+                        transactionSet :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-capability-x12details.html#cfn-b2bi-capability-x12details-version>
+                        version :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12DetailsProperty :: X12DetailsProperty
+mkX12DetailsProperty
+  = X12DetailsProperty
+      {haddock_workaround_ = (), transactionSet = Prelude.Nothing,
+       version = Prelude.Nothing}
+instance ToResourceProperties X12DetailsProperty where
+  toResourceProperties X12DetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Capability.X12Details",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "TransactionSet" Prelude.<$> transactionSet,
+                            (JSON..=) "Version" Prelude.<$> version])}
+instance JSON.ToJSON X12DetailsProperty where
+  toJSON X12DetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "TransactionSet" Prelude.<$> transactionSet,
+               (JSON..=) "Version" Prelude.<$> version]))
+instance Property "TransactionSet" X12DetailsProperty where
+  type PropertyType "TransactionSet" X12DetailsProperty = Value Prelude.Text
+  set newValue X12DetailsProperty {..}
+    = X12DetailsProperty {transactionSet = Prelude.pure newValue, ..}
+instance Property "Version" X12DetailsProperty where
+  type PropertyType "Version" X12DetailsProperty = Value Prelude.Text
+  set newValue X12DetailsProperty {..}
+    = X12DetailsProperty {version = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Capability/X12DetailsProperty.hs-boot b/gen/Stratosphere/B2BI/Capability/X12DetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Capability/X12DetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Capability.X12DetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12DetailsProperty :: Prelude.Type
+instance ToResourceProperties X12DetailsProperty
+instance Prelude.Eq X12DetailsProperty
+instance Prelude.Show X12DetailsProperty
+instance JSON.ToJSON X12DetailsProperty
diff --git a/gen/Stratosphere/B2BI/Partnership.hs b/gen/Stratosphere/B2BI/Partnership.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership.hs
@@ -0,0 +1,87 @@
+module Stratosphere.B2BI.Partnership (
+        module Exports, Partnership(..), mkPartnership
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.CapabilityOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Partnership
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html>
+    Partnership {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html#cfn-b2bi-partnership-capabilities>
+                 capabilities :: (ValueList Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html#cfn-b2bi-partnership-capabilityoptions>
+                 capabilityOptions :: (Prelude.Maybe CapabilityOptionsProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html#cfn-b2bi-partnership-email>
+                 email :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html#cfn-b2bi-partnership-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html#cfn-b2bi-partnership-phone>
+                 phone :: (Prelude.Maybe (Value Prelude.Text)),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html#cfn-b2bi-partnership-profileid>
+                 profileId :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-partnership.html#cfn-b2bi-partnership-tags>
+                 tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPartnership ::
+  ValueList Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> Partnership
+mkPartnership capabilities email name profileId
+  = Partnership
+      {haddock_workaround_ = (), capabilities = capabilities,
+       email = email, name = name, profileId = profileId,
+       capabilityOptions = Prelude.Nothing, phone = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Partnership where
+  toResourceProperties Partnership {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Capabilities" JSON..= capabilities, "Email" JSON..= email,
+                            "Name" JSON..= name, "ProfileId" JSON..= profileId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CapabilityOptions" Prelude.<$> capabilityOptions,
+                               (JSON..=) "Phone" Prelude.<$> phone,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Partnership where
+  toJSON Partnership {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Capabilities" JSON..= capabilities, "Email" JSON..= email,
+               "Name" JSON..= name, "ProfileId" JSON..= profileId]
+              (Prelude.catMaybes
+                 [(JSON..=) "CapabilityOptions" Prelude.<$> capabilityOptions,
+                  (JSON..=) "Phone" Prelude.<$> phone,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "Capabilities" Partnership where
+  type PropertyType "Capabilities" Partnership = ValueList Prelude.Text
+  set newValue Partnership {..}
+    = Partnership {capabilities = newValue, ..}
+instance Property "CapabilityOptions" Partnership where
+  type PropertyType "CapabilityOptions" Partnership = CapabilityOptionsProperty
+  set newValue Partnership {..}
+    = Partnership {capabilityOptions = Prelude.pure newValue, ..}
+instance Property "Email" Partnership where
+  type PropertyType "Email" Partnership = Value Prelude.Text
+  set newValue Partnership {..} = Partnership {email = newValue, ..}
+instance Property "Name" Partnership where
+  type PropertyType "Name" Partnership = Value Prelude.Text
+  set newValue Partnership {..} = Partnership {name = newValue, ..}
+instance Property "Phone" Partnership where
+  type PropertyType "Phone" Partnership = Value Prelude.Text
+  set newValue Partnership {..}
+    = Partnership {phone = Prelude.pure newValue, ..}
+instance Property "ProfileId" Partnership where
+  type PropertyType "ProfileId" Partnership = Value Prelude.Text
+  set newValue Partnership {..}
+    = Partnership {profileId = newValue, ..}
+instance Property "Tags" Partnership where
+  type PropertyType "Tags" Partnership = [Tag]
+  set newValue Partnership {..}
+    = Partnership {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/CapabilityOptionsProperty.hs b/gen/Stratosphere/B2BI/Partnership/CapabilityOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/CapabilityOptionsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.B2BI.Partnership.CapabilityOptionsProperty (
+        module Exports, CapabilityOptionsProperty(..),
+        mkCapabilityOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.InboundEdiOptionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.OutboundEdiOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+data CapabilityOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-capabilityoptions.html>
+    CapabilityOptionsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-capabilityoptions.html#cfn-b2bi-partnership-capabilityoptions-inboundedi>
+                               inboundEdi :: (Prelude.Maybe InboundEdiOptionsProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-capabilityoptions.html#cfn-b2bi-partnership-capabilityoptions-outboundedi>
+                               outboundEdi :: (Prelude.Maybe OutboundEdiOptionsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkCapabilityOptionsProperty :: CapabilityOptionsProperty
+mkCapabilityOptionsProperty
+  = CapabilityOptionsProperty
+      {haddock_workaround_ = (), inboundEdi = Prelude.Nothing,
+       outboundEdi = Prelude.Nothing}
+instance ToResourceProperties CapabilityOptionsProperty where
+  toResourceProperties CapabilityOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.CapabilityOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "InboundEdi" Prelude.<$> inboundEdi,
+                            (JSON..=) "OutboundEdi" Prelude.<$> outboundEdi])}
+instance JSON.ToJSON CapabilityOptionsProperty where
+  toJSON CapabilityOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "InboundEdi" Prelude.<$> inboundEdi,
+               (JSON..=) "OutboundEdi" Prelude.<$> outboundEdi]))
+instance Property "InboundEdi" CapabilityOptionsProperty where
+  type PropertyType "InboundEdi" CapabilityOptionsProperty = InboundEdiOptionsProperty
+  set newValue CapabilityOptionsProperty {..}
+    = CapabilityOptionsProperty
+        {inboundEdi = Prelude.pure newValue, ..}
+instance Property "OutboundEdi" CapabilityOptionsProperty where
+  type PropertyType "OutboundEdi" CapabilityOptionsProperty = OutboundEdiOptionsProperty
+  set newValue CapabilityOptionsProperty {..}
+    = CapabilityOptionsProperty
+        {outboundEdi = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/CapabilityOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/CapabilityOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/CapabilityOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.CapabilityOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data CapabilityOptionsProperty :: Prelude.Type
+instance ToResourceProperties CapabilityOptionsProperty
+instance Prelude.Eq CapabilityOptionsProperty
+instance Prelude.Show CapabilityOptionsProperty
+instance JSON.ToJSON CapabilityOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/InboundEdiOptionsProperty.hs b/gen/Stratosphere/B2BI/Partnership/InboundEdiOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/InboundEdiOptionsProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.B2BI.Partnership.InboundEdiOptionsProperty (
+        module Exports, InboundEdiOptionsProperty(..),
+        mkInboundEdiOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12InboundEdiOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+data InboundEdiOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-inboundedioptions.html>
+    InboundEdiOptionsProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-inboundedioptions.html#cfn-b2bi-partnership-inboundedioptions-x12>
+                               x12 :: (Prelude.Maybe X12InboundEdiOptionsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInboundEdiOptionsProperty :: InboundEdiOptionsProperty
+mkInboundEdiOptionsProperty
+  = InboundEdiOptionsProperty
+      {haddock_workaround_ = (), x12 = Prelude.Nothing}
+instance ToResourceProperties InboundEdiOptionsProperty where
+  toResourceProperties InboundEdiOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.InboundEdiOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "X12" Prelude.<$> x12])}
+instance JSON.ToJSON InboundEdiOptionsProperty where
+  toJSON InboundEdiOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "X12" Prelude.<$> x12]))
+instance Property "X12" InboundEdiOptionsProperty where
+  type PropertyType "X12" InboundEdiOptionsProperty = X12InboundEdiOptionsProperty
+  set newValue InboundEdiOptionsProperty {..}
+    = InboundEdiOptionsProperty {x12 = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/InboundEdiOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/InboundEdiOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/InboundEdiOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.InboundEdiOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InboundEdiOptionsProperty :: Prelude.Type
+instance ToResourceProperties InboundEdiOptionsProperty
+instance Prelude.Eq InboundEdiOptionsProperty
+instance Prelude.Show InboundEdiOptionsProperty
+instance JSON.ToJSON InboundEdiOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/OutboundEdiOptionsProperty.hs b/gen/Stratosphere/B2BI/Partnership/OutboundEdiOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/OutboundEdiOptionsProperty.hs
@@ -0,0 +1,31 @@
+module Stratosphere.B2BI.Partnership.OutboundEdiOptionsProperty (
+        module Exports, OutboundEdiOptionsProperty(..),
+        mkOutboundEdiOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12EnvelopeProperty as Exports
+import Stratosphere.ResourceProperties
+data OutboundEdiOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-outboundedioptions.html>
+    OutboundEdiOptionsProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-outboundedioptions.html#cfn-b2bi-partnership-outboundedioptions-x12>
+                                x12 :: X12EnvelopeProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOutboundEdiOptionsProperty ::
+  X12EnvelopeProperty -> OutboundEdiOptionsProperty
+mkOutboundEdiOptionsProperty x12
+  = OutboundEdiOptionsProperty {haddock_workaround_ = (), x12 = x12}
+instance ToResourceProperties OutboundEdiOptionsProperty where
+  toResourceProperties OutboundEdiOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.OutboundEdiOptions",
+         supportsTags = Prelude.False, properties = ["X12" JSON..= x12]}
+instance JSON.ToJSON OutboundEdiOptionsProperty where
+  toJSON OutboundEdiOptionsProperty {..}
+    = JSON.object ["X12" JSON..= x12]
+instance Property "X12" OutboundEdiOptionsProperty where
+  type PropertyType "X12" OutboundEdiOptionsProperty = X12EnvelopeProperty
+  set newValue OutboundEdiOptionsProperty {..}
+    = OutboundEdiOptionsProperty {x12 = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/OutboundEdiOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/OutboundEdiOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/OutboundEdiOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.OutboundEdiOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OutboundEdiOptionsProperty :: Prelude.Type
+instance ToResourceProperties OutboundEdiOptionsProperty
+instance Prelude.Eq OutboundEdiOptionsProperty
+instance Prelude.Show OutboundEdiOptionsProperty
+instance JSON.ToJSON OutboundEdiOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/WrapOptionsProperty.hs b/gen/Stratosphere/B2BI/Partnership/WrapOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/WrapOptionsProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.B2BI.Partnership.WrapOptionsProperty (
+        WrapOptionsProperty(..), mkWrapOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data WrapOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-wrapoptions.html>
+    WrapOptionsProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-wrapoptions.html#cfn-b2bi-partnership-wrapoptions-linelength>
+                         lineLength :: (Prelude.Maybe (Value Prelude.Double)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-wrapoptions.html#cfn-b2bi-partnership-wrapoptions-lineterminator>
+                         lineTerminator :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-wrapoptions.html#cfn-b2bi-partnership-wrapoptions-wrapby>
+                         wrapBy :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkWrapOptionsProperty :: WrapOptionsProperty
+mkWrapOptionsProperty
+  = WrapOptionsProperty
+      {haddock_workaround_ = (), lineLength = Prelude.Nothing,
+       lineTerminator = Prelude.Nothing, wrapBy = Prelude.Nothing}
+instance ToResourceProperties WrapOptionsProperty where
+  toResourceProperties WrapOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.WrapOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "LineLength" Prelude.<$> lineLength,
+                            (JSON..=) "LineTerminator" Prelude.<$> lineTerminator,
+                            (JSON..=) "WrapBy" Prelude.<$> wrapBy])}
+instance JSON.ToJSON WrapOptionsProperty where
+  toJSON WrapOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "LineLength" Prelude.<$> lineLength,
+               (JSON..=) "LineTerminator" Prelude.<$> lineTerminator,
+               (JSON..=) "WrapBy" Prelude.<$> wrapBy]))
+instance Property "LineLength" WrapOptionsProperty where
+  type PropertyType "LineLength" WrapOptionsProperty = Value Prelude.Double
+  set newValue WrapOptionsProperty {..}
+    = WrapOptionsProperty {lineLength = Prelude.pure newValue, ..}
+instance Property "LineTerminator" WrapOptionsProperty where
+  type PropertyType "LineTerminator" WrapOptionsProperty = Value Prelude.Text
+  set newValue WrapOptionsProperty {..}
+    = WrapOptionsProperty {lineTerminator = Prelude.pure newValue, ..}
+instance Property "WrapBy" WrapOptionsProperty where
+  type PropertyType "WrapBy" WrapOptionsProperty = Value Prelude.Text
+  set newValue WrapOptionsProperty {..}
+    = WrapOptionsProperty {wrapBy = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/WrapOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/WrapOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/WrapOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.WrapOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data WrapOptionsProperty :: Prelude.Type
+instance ToResourceProperties WrapOptionsProperty
+instance Prelude.Eq WrapOptionsProperty
+instance Prelude.Show WrapOptionsProperty
+instance JSON.ToJSON WrapOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12AcknowledgmentOptionsProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12AcknowledgmentOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12AcknowledgmentOptionsProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.B2BI.Partnership.X12AcknowledgmentOptionsProperty (
+        X12AcknowledgmentOptionsProperty(..),
+        mkX12AcknowledgmentOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12AcknowledgmentOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12acknowledgmentoptions.html>
+    X12AcknowledgmentOptionsProperty {haddock_workaround_ :: (),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12acknowledgmentoptions.html#cfn-b2bi-partnership-x12acknowledgmentoptions-functionalacknowledgment>
+                                      functionalAcknowledgment :: (Value Prelude.Text),
+                                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12acknowledgmentoptions.html#cfn-b2bi-partnership-x12acknowledgmentoptions-technicalacknowledgment>
+                                      technicalAcknowledgment :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12AcknowledgmentOptionsProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> X12AcknowledgmentOptionsProperty
+mkX12AcknowledgmentOptionsProperty
+  functionalAcknowledgment
+  technicalAcknowledgment
+  = X12AcknowledgmentOptionsProperty
+      {haddock_workaround_ = (),
+       functionalAcknowledgment = functionalAcknowledgment,
+       technicalAcknowledgment = technicalAcknowledgment}
+instance ToResourceProperties X12AcknowledgmentOptionsProperty where
+  toResourceProperties X12AcknowledgmentOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12AcknowledgmentOptions",
+         supportsTags = Prelude.False,
+         properties = ["FunctionalAcknowledgment"
+                         JSON..= functionalAcknowledgment,
+                       "TechnicalAcknowledgment" JSON..= technicalAcknowledgment]}
+instance JSON.ToJSON X12AcknowledgmentOptionsProperty where
+  toJSON X12AcknowledgmentOptionsProperty {..}
+    = JSON.object
+        ["FunctionalAcknowledgment" JSON..= functionalAcknowledgment,
+         "TechnicalAcknowledgment" JSON..= technicalAcknowledgment]
+instance Property "FunctionalAcknowledgment" X12AcknowledgmentOptionsProperty where
+  type PropertyType "FunctionalAcknowledgment" X12AcknowledgmentOptionsProperty = Value Prelude.Text
+  set newValue X12AcknowledgmentOptionsProperty {..}
+    = X12AcknowledgmentOptionsProperty
+        {functionalAcknowledgment = newValue, ..}
+instance Property "TechnicalAcknowledgment" X12AcknowledgmentOptionsProperty where
+  type PropertyType "TechnicalAcknowledgment" X12AcknowledgmentOptionsProperty = Value Prelude.Text
+  set newValue X12AcknowledgmentOptionsProperty {..}
+    = X12AcknowledgmentOptionsProperty
+        {technicalAcknowledgment = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12AcknowledgmentOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12AcknowledgmentOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12AcknowledgmentOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12AcknowledgmentOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12AcknowledgmentOptionsProperty :: Prelude.Type
+instance ToResourceProperties X12AcknowledgmentOptionsProperty
+instance Prelude.Eq X12AcknowledgmentOptionsProperty
+instance Prelude.Show X12AcknowledgmentOptionsProperty
+instance JSON.ToJSON X12AcknowledgmentOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12ControlNumbersProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12ControlNumbersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12ControlNumbersProperty.hs
@@ -0,0 +1,64 @@
+module Stratosphere.B2BI.Partnership.X12ControlNumbersProperty (
+        X12ControlNumbersProperty(..), mkX12ControlNumbersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12ControlNumbersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12controlnumbers.html>
+    X12ControlNumbersProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12controlnumbers.html#cfn-b2bi-partnership-x12controlnumbers-startingfunctionalgroupcontrolnumber>
+                               startingFunctionalGroupControlNumber :: (Prelude.Maybe (Value Prelude.Double)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12controlnumbers.html#cfn-b2bi-partnership-x12controlnumbers-startinginterchangecontrolnumber>
+                               startingInterchangeControlNumber :: (Prelude.Maybe (Value Prelude.Double)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12controlnumbers.html#cfn-b2bi-partnership-x12controlnumbers-startingtransactionsetcontrolnumber>
+                               startingTransactionSetControlNumber :: (Prelude.Maybe (Value Prelude.Double))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12ControlNumbersProperty :: X12ControlNumbersProperty
+mkX12ControlNumbersProperty
+  = X12ControlNumbersProperty
+      {haddock_workaround_ = (),
+       startingFunctionalGroupControlNumber = Prelude.Nothing,
+       startingInterchangeControlNumber = Prelude.Nothing,
+       startingTransactionSetControlNumber = Prelude.Nothing}
+instance ToResourceProperties X12ControlNumbersProperty where
+  toResourceProperties X12ControlNumbersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12ControlNumbers",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "StartingFunctionalGroupControlNumber"
+                              Prelude.<$> startingFunctionalGroupControlNumber,
+                            (JSON..=) "StartingInterchangeControlNumber"
+                              Prelude.<$> startingInterchangeControlNumber,
+                            (JSON..=) "StartingTransactionSetControlNumber"
+                              Prelude.<$> startingTransactionSetControlNumber])}
+instance JSON.ToJSON X12ControlNumbersProperty where
+  toJSON X12ControlNumbersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "StartingFunctionalGroupControlNumber"
+                 Prelude.<$> startingFunctionalGroupControlNumber,
+               (JSON..=) "StartingInterchangeControlNumber"
+                 Prelude.<$> startingInterchangeControlNumber,
+               (JSON..=) "StartingTransactionSetControlNumber"
+                 Prelude.<$> startingTransactionSetControlNumber]))
+instance Property "StartingFunctionalGroupControlNumber" X12ControlNumbersProperty where
+  type PropertyType "StartingFunctionalGroupControlNumber" X12ControlNumbersProperty = Value Prelude.Double
+  set newValue X12ControlNumbersProperty {..}
+    = X12ControlNumbersProperty
+        {startingFunctionalGroupControlNumber = Prelude.pure newValue, ..}
+instance Property "StartingInterchangeControlNumber" X12ControlNumbersProperty where
+  type PropertyType "StartingInterchangeControlNumber" X12ControlNumbersProperty = Value Prelude.Double
+  set newValue X12ControlNumbersProperty {..}
+    = X12ControlNumbersProperty
+        {startingInterchangeControlNumber = Prelude.pure newValue, ..}
+instance Property "StartingTransactionSetControlNumber" X12ControlNumbersProperty where
+  type PropertyType "StartingTransactionSetControlNumber" X12ControlNumbersProperty = Value Prelude.Double
+  set newValue X12ControlNumbersProperty {..}
+    = X12ControlNumbersProperty
+        {startingTransactionSetControlNumber = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12ControlNumbersProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12ControlNumbersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12ControlNumbersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12ControlNumbersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12ControlNumbersProperty :: Prelude.Type
+instance ToResourceProperties X12ControlNumbersProperty
+instance Prelude.Eq X12ControlNumbersProperty
+instance Prelude.Show X12ControlNumbersProperty
+instance JSON.ToJSON X12ControlNumbersProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12DelimitersProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12DelimitersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12DelimitersProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.B2BI.Partnership.X12DelimitersProperty (
+        X12DelimitersProperty(..), mkX12DelimitersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12DelimitersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12delimiters.html>
+    X12DelimitersProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12delimiters.html#cfn-b2bi-partnership-x12delimiters-componentseparator>
+                           componentSeparator :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12delimiters.html#cfn-b2bi-partnership-x12delimiters-dataelementseparator>
+                           dataElementSeparator :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12delimiters.html#cfn-b2bi-partnership-x12delimiters-segmentterminator>
+                           segmentTerminator :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12DelimitersProperty :: X12DelimitersProperty
+mkX12DelimitersProperty
+  = X12DelimitersProperty
+      {haddock_workaround_ = (), componentSeparator = Prelude.Nothing,
+       dataElementSeparator = Prelude.Nothing,
+       segmentTerminator = Prelude.Nothing}
+instance ToResourceProperties X12DelimitersProperty where
+  toResourceProperties X12DelimitersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12Delimiters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ComponentSeparator" Prelude.<$> componentSeparator,
+                            (JSON..=) "DataElementSeparator" Prelude.<$> dataElementSeparator,
+                            (JSON..=) "SegmentTerminator" Prelude.<$> segmentTerminator])}
+instance JSON.ToJSON X12DelimitersProperty where
+  toJSON X12DelimitersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ComponentSeparator" Prelude.<$> componentSeparator,
+               (JSON..=) "DataElementSeparator" Prelude.<$> dataElementSeparator,
+               (JSON..=) "SegmentTerminator" Prelude.<$> segmentTerminator]))
+instance Property "ComponentSeparator" X12DelimitersProperty where
+  type PropertyType "ComponentSeparator" X12DelimitersProperty = Value Prelude.Text
+  set newValue X12DelimitersProperty {..}
+    = X12DelimitersProperty
+        {componentSeparator = Prelude.pure newValue, ..}
+instance Property "DataElementSeparator" X12DelimitersProperty where
+  type PropertyType "DataElementSeparator" X12DelimitersProperty = Value Prelude.Text
+  set newValue X12DelimitersProperty {..}
+    = X12DelimitersProperty
+        {dataElementSeparator = Prelude.pure newValue, ..}
+instance Property "SegmentTerminator" X12DelimitersProperty where
+  type PropertyType "SegmentTerminator" X12DelimitersProperty = Value Prelude.Text
+  set newValue X12DelimitersProperty {..}
+    = X12DelimitersProperty
+        {segmentTerminator = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12DelimitersProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12DelimitersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12DelimitersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12DelimitersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12DelimitersProperty :: Prelude.Type
+instance ToResourceProperties X12DelimitersProperty
+instance Prelude.Eq X12DelimitersProperty
+instance Prelude.Show X12DelimitersProperty
+instance JSON.ToJSON X12DelimitersProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12EnvelopeProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12EnvelopeProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12EnvelopeProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.B2BI.Partnership.X12EnvelopeProperty (
+        module Exports, X12EnvelopeProperty(..), mkX12EnvelopeProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.WrapOptionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12OutboundEdiHeadersProperty as Exports
+import Stratosphere.ResourceProperties
+data X12EnvelopeProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12envelope.html>
+    X12EnvelopeProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12envelope.html#cfn-b2bi-partnership-x12envelope-common>
+                         common :: (Prelude.Maybe X12OutboundEdiHeadersProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12envelope.html#cfn-b2bi-partnership-x12envelope-wrapoptions>
+                         wrapOptions :: (Prelude.Maybe WrapOptionsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12EnvelopeProperty :: X12EnvelopeProperty
+mkX12EnvelopeProperty
+  = X12EnvelopeProperty
+      {haddock_workaround_ = (), common = Prelude.Nothing,
+       wrapOptions = Prelude.Nothing}
+instance ToResourceProperties X12EnvelopeProperty where
+  toResourceProperties X12EnvelopeProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12Envelope",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Common" Prelude.<$> common,
+                            (JSON..=) "WrapOptions" Prelude.<$> wrapOptions])}
+instance JSON.ToJSON X12EnvelopeProperty where
+  toJSON X12EnvelopeProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Common" Prelude.<$> common,
+               (JSON..=) "WrapOptions" Prelude.<$> wrapOptions]))
+instance Property "Common" X12EnvelopeProperty where
+  type PropertyType "Common" X12EnvelopeProperty = X12OutboundEdiHeadersProperty
+  set newValue X12EnvelopeProperty {..}
+    = X12EnvelopeProperty {common = Prelude.pure newValue, ..}
+instance Property "WrapOptions" X12EnvelopeProperty where
+  type PropertyType "WrapOptions" X12EnvelopeProperty = WrapOptionsProperty
+  set newValue X12EnvelopeProperty {..}
+    = X12EnvelopeProperty {wrapOptions = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12EnvelopeProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12EnvelopeProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12EnvelopeProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12EnvelopeProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12EnvelopeProperty :: Prelude.Type
+instance ToResourceProperties X12EnvelopeProperty
+instance Prelude.Eq X12EnvelopeProperty
+instance Prelude.Show X12EnvelopeProperty
+instance JSON.ToJSON X12EnvelopeProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12FunctionalGroupHeadersProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12FunctionalGroupHeadersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12FunctionalGroupHeadersProperty.hs
@@ -0,0 +1,66 @@
+module Stratosphere.B2BI.Partnership.X12FunctionalGroupHeadersProperty (
+        X12FunctionalGroupHeadersProperty(..),
+        mkX12FunctionalGroupHeadersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12FunctionalGroupHeadersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12functionalgroupheaders.html>
+    X12FunctionalGroupHeadersProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12functionalgroupheaders.html#cfn-b2bi-partnership-x12functionalgroupheaders-applicationreceivercode>
+                                       applicationReceiverCode :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12functionalgroupheaders.html#cfn-b2bi-partnership-x12functionalgroupheaders-applicationsendercode>
+                                       applicationSenderCode :: (Prelude.Maybe (Value Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12functionalgroupheaders.html#cfn-b2bi-partnership-x12functionalgroupheaders-responsibleagencycode>
+                                       responsibleAgencyCode :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12FunctionalGroupHeadersProperty ::
+  X12FunctionalGroupHeadersProperty
+mkX12FunctionalGroupHeadersProperty
+  = X12FunctionalGroupHeadersProperty
+      {haddock_workaround_ = (),
+       applicationReceiverCode = Prelude.Nothing,
+       applicationSenderCode = Prelude.Nothing,
+       responsibleAgencyCode = Prelude.Nothing}
+instance ToResourceProperties X12FunctionalGroupHeadersProperty where
+  toResourceProperties X12FunctionalGroupHeadersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12FunctionalGroupHeaders",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ApplicationReceiverCode"
+                              Prelude.<$> applicationReceiverCode,
+                            (JSON..=) "ApplicationSenderCode"
+                              Prelude.<$> applicationSenderCode,
+                            (JSON..=) "ResponsibleAgencyCode"
+                              Prelude.<$> responsibleAgencyCode])}
+instance JSON.ToJSON X12FunctionalGroupHeadersProperty where
+  toJSON X12FunctionalGroupHeadersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ApplicationReceiverCode"
+                 Prelude.<$> applicationReceiverCode,
+               (JSON..=) "ApplicationSenderCode"
+                 Prelude.<$> applicationSenderCode,
+               (JSON..=) "ResponsibleAgencyCode"
+                 Prelude.<$> responsibleAgencyCode]))
+instance Property "ApplicationReceiverCode" X12FunctionalGroupHeadersProperty where
+  type PropertyType "ApplicationReceiverCode" X12FunctionalGroupHeadersProperty = Value Prelude.Text
+  set newValue X12FunctionalGroupHeadersProperty {..}
+    = X12FunctionalGroupHeadersProperty
+        {applicationReceiverCode = Prelude.pure newValue, ..}
+instance Property "ApplicationSenderCode" X12FunctionalGroupHeadersProperty where
+  type PropertyType "ApplicationSenderCode" X12FunctionalGroupHeadersProperty = Value Prelude.Text
+  set newValue X12FunctionalGroupHeadersProperty {..}
+    = X12FunctionalGroupHeadersProperty
+        {applicationSenderCode = Prelude.pure newValue, ..}
+instance Property "ResponsibleAgencyCode" X12FunctionalGroupHeadersProperty where
+  type PropertyType "ResponsibleAgencyCode" X12FunctionalGroupHeadersProperty = Value Prelude.Text
+  set newValue X12FunctionalGroupHeadersProperty {..}
+    = X12FunctionalGroupHeadersProperty
+        {responsibleAgencyCode = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12FunctionalGroupHeadersProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12FunctionalGroupHeadersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12FunctionalGroupHeadersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12FunctionalGroupHeadersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12FunctionalGroupHeadersProperty :: Prelude.Type
+instance ToResourceProperties X12FunctionalGroupHeadersProperty
+instance Prelude.Eq X12FunctionalGroupHeadersProperty
+instance Prelude.Show X12FunctionalGroupHeadersProperty
+instance JSON.ToJSON X12FunctionalGroupHeadersProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12InboundEdiOptionsProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12InboundEdiOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12InboundEdiOptionsProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.B2BI.Partnership.X12InboundEdiOptionsProperty (
+        module Exports, X12InboundEdiOptionsProperty(..),
+        mkX12InboundEdiOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12AcknowledgmentOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+data X12InboundEdiOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12inboundedioptions.html>
+    X12InboundEdiOptionsProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12inboundedioptions.html#cfn-b2bi-partnership-x12inboundedioptions-acknowledgmentoptions>
+                                  acknowledgmentOptions :: (Prelude.Maybe X12AcknowledgmentOptionsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12InboundEdiOptionsProperty :: X12InboundEdiOptionsProperty
+mkX12InboundEdiOptionsProperty
+  = X12InboundEdiOptionsProperty
+      {haddock_workaround_ = (), acknowledgmentOptions = Prelude.Nothing}
+instance ToResourceProperties X12InboundEdiOptionsProperty where
+  toResourceProperties X12InboundEdiOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12InboundEdiOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AcknowledgmentOptions"
+                              Prelude.<$> acknowledgmentOptions])}
+instance JSON.ToJSON X12InboundEdiOptionsProperty where
+  toJSON X12InboundEdiOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AcknowledgmentOptions"
+                 Prelude.<$> acknowledgmentOptions]))
+instance Property "AcknowledgmentOptions" X12InboundEdiOptionsProperty where
+  type PropertyType "AcknowledgmentOptions" X12InboundEdiOptionsProperty = X12AcknowledgmentOptionsProperty
+  set newValue X12InboundEdiOptionsProperty {..}
+    = X12InboundEdiOptionsProperty
+        {acknowledgmentOptions = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12InboundEdiOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12InboundEdiOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12InboundEdiOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12InboundEdiOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12InboundEdiOptionsProperty :: Prelude.Type
+instance ToResourceProperties X12InboundEdiOptionsProperty
+instance Prelude.Eq X12InboundEdiOptionsProperty
+instance Prelude.Show X12InboundEdiOptionsProperty
+instance JSON.ToJSON X12InboundEdiOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12InterchangeControlHeadersProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12InterchangeControlHeadersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12InterchangeControlHeadersProperty.hs
@@ -0,0 +1,101 @@
+module Stratosphere.B2BI.Partnership.X12InterchangeControlHeadersProperty (
+        X12InterchangeControlHeadersProperty(..),
+        mkX12InterchangeControlHeadersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12InterchangeControlHeadersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html>
+    X12InterchangeControlHeadersProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html#cfn-b2bi-partnership-x12interchangecontrolheaders-acknowledgmentrequestedcode>
+                                          acknowledgmentRequestedCode :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html#cfn-b2bi-partnership-x12interchangecontrolheaders-receiverid>
+                                          receiverId :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html#cfn-b2bi-partnership-x12interchangecontrolheaders-receiveridqualifier>
+                                          receiverIdQualifier :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html#cfn-b2bi-partnership-x12interchangecontrolheaders-repetitionseparator>
+                                          repetitionSeparator :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html#cfn-b2bi-partnership-x12interchangecontrolheaders-senderid>
+                                          senderId :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html#cfn-b2bi-partnership-x12interchangecontrolheaders-senderidqualifier>
+                                          senderIdQualifier :: (Prelude.Maybe (Value Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12interchangecontrolheaders.html#cfn-b2bi-partnership-x12interchangecontrolheaders-usageindicatorcode>
+                                          usageIndicatorCode :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12InterchangeControlHeadersProperty ::
+  X12InterchangeControlHeadersProperty
+mkX12InterchangeControlHeadersProperty
+  = X12InterchangeControlHeadersProperty
+      {haddock_workaround_ = (),
+       acknowledgmentRequestedCode = Prelude.Nothing,
+       receiverId = Prelude.Nothing,
+       receiverIdQualifier = Prelude.Nothing,
+       repetitionSeparator = Prelude.Nothing, senderId = Prelude.Nothing,
+       senderIdQualifier = Prelude.Nothing,
+       usageIndicatorCode = Prelude.Nothing}
+instance ToResourceProperties X12InterchangeControlHeadersProperty where
+  toResourceProperties X12InterchangeControlHeadersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12InterchangeControlHeaders",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AcknowledgmentRequestedCode"
+                              Prelude.<$> acknowledgmentRequestedCode,
+                            (JSON..=) "ReceiverId" Prelude.<$> receiverId,
+                            (JSON..=) "ReceiverIdQualifier" Prelude.<$> receiverIdQualifier,
+                            (JSON..=) "RepetitionSeparator" Prelude.<$> repetitionSeparator,
+                            (JSON..=) "SenderId" Prelude.<$> senderId,
+                            (JSON..=) "SenderIdQualifier" Prelude.<$> senderIdQualifier,
+                            (JSON..=) "UsageIndicatorCode" Prelude.<$> usageIndicatorCode])}
+instance JSON.ToJSON X12InterchangeControlHeadersProperty where
+  toJSON X12InterchangeControlHeadersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AcknowledgmentRequestedCode"
+                 Prelude.<$> acknowledgmentRequestedCode,
+               (JSON..=) "ReceiverId" Prelude.<$> receiverId,
+               (JSON..=) "ReceiverIdQualifier" Prelude.<$> receiverIdQualifier,
+               (JSON..=) "RepetitionSeparator" Prelude.<$> repetitionSeparator,
+               (JSON..=) "SenderId" Prelude.<$> senderId,
+               (JSON..=) "SenderIdQualifier" Prelude.<$> senderIdQualifier,
+               (JSON..=) "UsageIndicatorCode" Prelude.<$> usageIndicatorCode]))
+instance Property "AcknowledgmentRequestedCode" X12InterchangeControlHeadersProperty where
+  type PropertyType "AcknowledgmentRequestedCode" X12InterchangeControlHeadersProperty = Value Prelude.Text
+  set newValue X12InterchangeControlHeadersProperty {..}
+    = X12InterchangeControlHeadersProperty
+        {acknowledgmentRequestedCode = Prelude.pure newValue, ..}
+instance Property "ReceiverId" X12InterchangeControlHeadersProperty where
+  type PropertyType "ReceiverId" X12InterchangeControlHeadersProperty = Value Prelude.Text
+  set newValue X12InterchangeControlHeadersProperty {..}
+    = X12InterchangeControlHeadersProperty
+        {receiverId = Prelude.pure newValue, ..}
+instance Property "ReceiverIdQualifier" X12InterchangeControlHeadersProperty where
+  type PropertyType "ReceiverIdQualifier" X12InterchangeControlHeadersProperty = Value Prelude.Text
+  set newValue X12InterchangeControlHeadersProperty {..}
+    = X12InterchangeControlHeadersProperty
+        {receiverIdQualifier = Prelude.pure newValue, ..}
+instance Property "RepetitionSeparator" X12InterchangeControlHeadersProperty where
+  type PropertyType "RepetitionSeparator" X12InterchangeControlHeadersProperty = Value Prelude.Text
+  set newValue X12InterchangeControlHeadersProperty {..}
+    = X12InterchangeControlHeadersProperty
+        {repetitionSeparator = Prelude.pure newValue, ..}
+instance Property "SenderId" X12InterchangeControlHeadersProperty where
+  type PropertyType "SenderId" X12InterchangeControlHeadersProperty = Value Prelude.Text
+  set newValue X12InterchangeControlHeadersProperty {..}
+    = X12InterchangeControlHeadersProperty
+        {senderId = Prelude.pure newValue, ..}
+instance Property "SenderIdQualifier" X12InterchangeControlHeadersProperty where
+  type PropertyType "SenderIdQualifier" X12InterchangeControlHeadersProperty = Value Prelude.Text
+  set newValue X12InterchangeControlHeadersProperty {..}
+    = X12InterchangeControlHeadersProperty
+        {senderIdQualifier = Prelude.pure newValue, ..}
+instance Property "UsageIndicatorCode" X12InterchangeControlHeadersProperty where
+  type PropertyType "UsageIndicatorCode" X12InterchangeControlHeadersProperty = Value Prelude.Text
+  set newValue X12InterchangeControlHeadersProperty {..}
+    = X12InterchangeControlHeadersProperty
+        {usageIndicatorCode = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12InterchangeControlHeadersProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12InterchangeControlHeadersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12InterchangeControlHeadersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12InterchangeControlHeadersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12InterchangeControlHeadersProperty :: Prelude.Type
+instance ToResourceProperties X12InterchangeControlHeadersProperty
+instance Prelude.Eq X12InterchangeControlHeadersProperty
+instance Prelude.Show X12InterchangeControlHeadersProperty
+instance JSON.ToJSON X12InterchangeControlHeadersProperty
diff --git a/gen/Stratosphere/B2BI/Partnership/X12OutboundEdiHeadersProperty.hs b/gen/Stratosphere/B2BI/Partnership/X12OutboundEdiHeadersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12OutboundEdiHeadersProperty.hs
@@ -0,0 +1,96 @@
+module Stratosphere.B2BI.Partnership.X12OutboundEdiHeadersProperty (
+        module Exports, X12OutboundEdiHeadersProperty(..),
+        mkX12OutboundEdiHeadersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12ControlNumbersProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12DelimitersProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12FunctionalGroupHeadersProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Partnership.X12InterchangeControlHeadersProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12OutboundEdiHeadersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12outboundediheaders.html>
+    X12OutboundEdiHeadersProperty {haddock_workaround_ :: (),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12outboundediheaders.html#cfn-b2bi-partnership-x12outboundediheaders-controlnumbers>
+                                   controlNumbers :: (Prelude.Maybe X12ControlNumbersProperty),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12outboundediheaders.html#cfn-b2bi-partnership-x12outboundediheaders-delimiters>
+                                   delimiters :: (Prelude.Maybe X12DelimitersProperty),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12outboundediheaders.html#cfn-b2bi-partnership-x12outboundediheaders-functionalgroupheaders>
+                                   functionalGroupHeaders :: (Prelude.Maybe X12FunctionalGroupHeadersProperty),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12outboundediheaders.html#cfn-b2bi-partnership-x12outboundediheaders-gs05timeformat>
+                                   gs05TimeFormat :: (Prelude.Maybe (Value Prelude.Text)),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12outboundediheaders.html#cfn-b2bi-partnership-x12outboundediheaders-interchangecontrolheaders>
+                                   interchangeControlHeaders :: (Prelude.Maybe X12InterchangeControlHeadersProperty),
+                                   -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-partnership-x12outboundediheaders.html#cfn-b2bi-partnership-x12outboundediheaders-validateedi>
+                                   validateEdi :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12OutboundEdiHeadersProperty :: X12OutboundEdiHeadersProperty
+mkX12OutboundEdiHeadersProperty
+  = X12OutboundEdiHeadersProperty
+      {haddock_workaround_ = (), controlNumbers = Prelude.Nothing,
+       delimiters = Prelude.Nothing,
+       functionalGroupHeaders = Prelude.Nothing,
+       gs05TimeFormat = Prelude.Nothing,
+       interchangeControlHeaders = Prelude.Nothing,
+       validateEdi = Prelude.Nothing}
+instance ToResourceProperties X12OutboundEdiHeadersProperty where
+  toResourceProperties X12OutboundEdiHeadersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Partnership.X12OutboundEdiHeaders",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ControlNumbers" Prelude.<$> controlNumbers,
+                            (JSON..=) "Delimiters" Prelude.<$> delimiters,
+                            (JSON..=) "FunctionalGroupHeaders"
+                              Prelude.<$> functionalGroupHeaders,
+                            (JSON..=) "Gs05TimeFormat" Prelude.<$> gs05TimeFormat,
+                            (JSON..=) "InterchangeControlHeaders"
+                              Prelude.<$> interchangeControlHeaders,
+                            (JSON..=) "ValidateEdi" Prelude.<$> validateEdi])}
+instance JSON.ToJSON X12OutboundEdiHeadersProperty where
+  toJSON X12OutboundEdiHeadersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ControlNumbers" Prelude.<$> controlNumbers,
+               (JSON..=) "Delimiters" Prelude.<$> delimiters,
+               (JSON..=) "FunctionalGroupHeaders"
+                 Prelude.<$> functionalGroupHeaders,
+               (JSON..=) "Gs05TimeFormat" Prelude.<$> gs05TimeFormat,
+               (JSON..=) "InterchangeControlHeaders"
+                 Prelude.<$> interchangeControlHeaders,
+               (JSON..=) "ValidateEdi" Prelude.<$> validateEdi]))
+instance Property "ControlNumbers" X12OutboundEdiHeadersProperty where
+  type PropertyType "ControlNumbers" X12OutboundEdiHeadersProperty = X12ControlNumbersProperty
+  set newValue X12OutboundEdiHeadersProperty {..}
+    = X12OutboundEdiHeadersProperty
+        {controlNumbers = Prelude.pure newValue, ..}
+instance Property "Delimiters" X12OutboundEdiHeadersProperty where
+  type PropertyType "Delimiters" X12OutboundEdiHeadersProperty = X12DelimitersProperty
+  set newValue X12OutboundEdiHeadersProperty {..}
+    = X12OutboundEdiHeadersProperty
+        {delimiters = Prelude.pure newValue, ..}
+instance Property "FunctionalGroupHeaders" X12OutboundEdiHeadersProperty where
+  type PropertyType "FunctionalGroupHeaders" X12OutboundEdiHeadersProperty = X12FunctionalGroupHeadersProperty
+  set newValue X12OutboundEdiHeadersProperty {..}
+    = X12OutboundEdiHeadersProperty
+        {functionalGroupHeaders = Prelude.pure newValue, ..}
+instance Property "Gs05TimeFormat" X12OutboundEdiHeadersProperty where
+  type PropertyType "Gs05TimeFormat" X12OutboundEdiHeadersProperty = Value Prelude.Text
+  set newValue X12OutboundEdiHeadersProperty {..}
+    = X12OutboundEdiHeadersProperty
+        {gs05TimeFormat = Prelude.pure newValue, ..}
+instance Property "InterchangeControlHeaders" X12OutboundEdiHeadersProperty where
+  type PropertyType "InterchangeControlHeaders" X12OutboundEdiHeadersProperty = X12InterchangeControlHeadersProperty
+  set newValue X12OutboundEdiHeadersProperty {..}
+    = X12OutboundEdiHeadersProperty
+        {interchangeControlHeaders = Prelude.pure newValue, ..}
+instance Property "ValidateEdi" X12OutboundEdiHeadersProperty where
+  type PropertyType "ValidateEdi" X12OutboundEdiHeadersProperty = Value Prelude.Bool
+  set newValue X12OutboundEdiHeadersProperty {..}
+    = X12OutboundEdiHeadersProperty
+        {validateEdi = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Partnership/X12OutboundEdiHeadersProperty.hs-boot b/gen/Stratosphere/B2BI/Partnership/X12OutboundEdiHeadersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Partnership/X12OutboundEdiHeadersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Partnership.X12OutboundEdiHeadersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12OutboundEdiHeadersProperty :: Prelude.Type
+instance ToResourceProperties X12OutboundEdiHeadersProperty
+instance Prelude.Eq X12OutboundEdiHeadersProperty
+instance Prelude.Show X12OutboundEdiHeadersProperty
+instance JSON.ToJSON X12OutboundEdiHeadersProperty
diff --git a/gen/Stratosphere/B2BI/Profile.hs b/gen/Stratosphere/B2BI/Profile.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Profile.hs
@@ -0,0 +1,75 @@
+module Stratosphere.B2BI.Profile (
+        Profile(..), mkProfile
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Profile
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html>
+    Profile {haddock_workaround_ :: (),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html#cfn-b2bi-profile-businessname>
+             businessName :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html#cfn-b2bi-profile-email>
+             email :: (Prelude.Maybe (Value Prelude.Text)),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html#cfn-b2bi-profile-logging>
+             logging :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html#cfn-b2bi-profile-name>
+             name :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html#cfn-b2bi-profile-phone>
+             phone :: (Value Prelude.Text),
+             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-profile.html#cfn-b2bi-profile-tags>
+             tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkProfile ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Value Prelude.Text -> Value Prelude.Text -> Profile
+mkProfile businessName logging name phone
+  = Profile
+      {haddock_workaround_ = (), businessName = businessName,
+       logging = logging, name = name, phone = phone,
+       email = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Profile where
+  toResourceProperties Profile {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Profile", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["BusinessName" JSON..= businessName, "Logging" JSON..= logging,
+                            "Name" JSON..= name, "Phone" JSON..= phone]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Email" Prelude.<$> email,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Profile where
+  toJSON Profile {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["BusinessName" JSON..= businessName, "Logging" JSON..= logging,
+               "Name" JSON..= name, "Phone" JSON..= phone]
+              (Prelude.catMaybes
+                 [(JSON..=) "Email" Prelude.<$> email,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "BusinessName" Profile where
+  type PropertyType "BusinessName" Profile = Value Prelude.Text
+  set newValue Profile {..} = Profile {businessName = newValue, ..}
+instance Property "Email" Profile where
+  type PropertyType "Email" Profile = Value Prelude.Text
+  set newValue Profile {..}
+    = Profile {email = Prelude.pure newValue, ..}
+instance Property "Logging" Profile where
+  type PropertyType "Logging" Profile = Value Prelude.Text
+  set newValue Profile {..} = Profile {logging = newValue, ..}
+instance Property "Name" Profile where
+  type PropertyType "Name" Profile = Value Prelude.Text
+  set newValue Profile {..} = Profile {name = newValue, ..}
+instance Property "Phone" Profile where
+  type PropertyType "Phone" Profile = Value Prelude.Text
+  set newValue Profile {..} = Profile {phone = newValue, ..}
+instance Property "Tags" Profile where
+  type PropertyType "Tags" Profile = [Tag]
+  set newValue Profile {..}
+    = Profile {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer.hs b/gen/Stratosphere/B2BI/Transformer.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer.hs
@@ -0,0 +1,90 @@
+module Stratosphere.B2BI.Transformer (
+        module Exports, Transformer(..), mkTransformer
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.InputConversionProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.MappingProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.OutputConversionProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.SampleDocumentsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Tag
+import Stratosphere.Value
+data Transformer
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html>
+    Transformer {haddock_workaround_ :: (),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html#cfn-b2bi-transformer-inputconversion>
+                 inputConversion :: (Prelude.Maybe InputConversionProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html#cfn-b2bi-transformer-mapping>
+                 mapping :: (Prelude.Maybe MappingProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html#cfn-b2bi-transformer-name>
+                 name :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html#cfn-b2bi-transformer-outputconversion>
+                 outputConversion :: (Prelude.Maybe OutputConversionProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html#cfn-b2bi-transformer-sampledocuments>
+                 sampleDocuments :: (Prelude.Maybe SampleDocumentsProperty),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html#cfn-b2bi-transformer-status>
+                 status :: (Value Prelude.Text),
+                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-b2bi-transformer.html#cfn-b2bi-transformer-tags>
+                 tags :: (Prelude.Maybe [Tag])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTransformer ::
+  Value Prelude.Text -> Value Prelude.Text -> Transformer
+mkTransformer name status
+  = Transformer
+      {haddock_workaround_ = (), name = name, status = status,
+       inputConversion = Prelude.Nothing, mapping = Prelude.Nothing,
+       outputConversion = Prelude.Nothing,
+       sampleDocuments = Prelude.Nothing, tags = Prelude.Nothing}
+instance ToResourceProperties Transformer where
+  toResourceProperties Transformer {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer", supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Name" JSON..= name, "Status" JSON..= status]
+                           (Prelude.catMaybes
+                              [(JSON..=) "InputConversion" Prelude.<$> inputConversion,
+                               (JSON..=) "Mapping" Prelude.<$> mapping,
+                               (JSON..=) "OutputConversion" Prelude.<$> outputConversion,
+                               (JSON..=) "SampleDocuments" Prelude.<$> sampleDocuments,
+                               (JSON..=) "Tags" Prelude.<$> tags]))}
+instance JSON.ToJSON Transformer where
+  toJSON Transformer {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Name" JSON..= name, "Status" JSON..= status]
+              (Prelude.catMaybes
+                 [(JSON..=) "InputConversion" Prelude.<$> inputConversion,
+                  (JSON..=) "Mapping" Prelude.<$> mapping,
+                  (JSON..=) "OutputConversion" Prelude.<$> outputConversion,
+                  (JSON..=) "SampleDocuments" Prelude.<$> sampleDocuments,
+                  (JSON..=) "Tags" Prelude.<$> tags])))
+instance Property "InputConversion" Transformer where
+  type PropertyType "InputConversion" Transformer = InputConversionProperty
+  set newValue Transformer {..}
+    = Transformer {inputConversion = Prelude.pure newValue, ..}
+instance Property "Mapping" Transformer where
+  type PropertyType "Mapping" Transformer = MappingProperty
+  set newValue Transformer {..}
+    = Transformer {mapping = Prelude.pure newValue, ..}
+instance Property "Name" Transformer where
+  type PropertyType "Name" Transformer = Value Prelude.Text
+  set newValue Transformer {..} = Transformer {name = newValue, ..}
+instance Property "OutputConversion" Transformer where
+  type PropertyType "OutputConversion" Transformer = OutputConversionProperty
+  set newValue Transformer {..}
+    = Transformer {outputConversion = Prelude.pure newValue, ..}
+instance Property "SampleDocuments" Transformer where
+  type PropertyType "SampleDocuments" Transformer = SampleDocumentsProperty
+  set newValue Transformer {..}
+    = Transformer {sampleDocuments = Prelude.pure newValue, ..}
+instance Property "Status" Transformer where
+  type PropertyType "Status" Transformer = Value Prelude.Text
+  set newValue Transformer {..} = Transformer {status = newValue, ..}
+instance Property "Tags" Transformer where
+  type PropertyType "Tags" Transformer = [Tag]
+  set newValue Transformer {..}
+    = Transformer {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/AdvancedOptionsProperty.hs b/gen/Stratosphere/B2BI/Transformer/AdvancedOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/AdvancedOptionsProperty.hs
@@ -0,0 +1,35 @@
+module Stratosphere.B2BI.Transformer.AdvancedOptionsProperty (
+        module Exports, AdvancedOptionsProperty(..),
+        mkAdvancedOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12AdvancedOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+data AdvancedOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-advancedoptions.html>
+    AdvancedOptionsProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-advancedoptions.html#cfn-b2bi-transformer-advancedoptions-x12>
+                             x12 :: (Prelude.Maybe X12AdvancedOptionsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkAdvancedOptionsProperty :: AdvancedOptionsProperty
+mkAdvancedOptionsProperty
+  = AdvancedOptionsProperty
+      {haddock_workaround_ = (), x12 = Prelude.Nothing}
+instance ToResourceProperties AdvancedOptionsProperty where
+  toResourceProperties AdvancedOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.AdvancedOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "X12" Prelude.<$> x12])}
+instance JSON.ToJSON AdvancedOptionsProperty where
+  toJSON AdvancedOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "X12" Prelude.<$> x12]))
+instance Property "X12" AdvancedOptionsProperty where
+  type PropertyType "X12" AdvancedOptionsProperty = X12AdvancedOptionsProperty
+  set newValue AdvancedOptionsProperty {..}
+    = AdvancedOptionsProperty {x12 = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/AdvancedOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/AdvancedOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/AdvancedOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.AdvancedOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data AdvancedOptionsProperty :: Prelude.Type
+instance ToResourceProperties AdvancedOptionsProperty
+instance Prelude.Eq AdvancedOptionsProperty
+instance Prelude.Show AdvancedOptionsProperty
+instance JSON.ToJSON AdvancedOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/FormatOptionsProperty.hs b/gen/Stratosphere/B2BI/Transformer/FormatOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/FormatOptionsProperty.hs
@@ -0,0 +1,29 @@
+module Stratosphere.B2BI.Transformer.FormatOptionsProperty (
+        module Exports, FormatOptionsProperty(..), mkFormatOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12DetailsProperty as Exports
+import Stratosphere.ResourceProperties
+data FormatOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-formatoptions.html>
+    FormatOptionsProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-formatoptions.html#cfn-b2bi-transformer-formatoptions-x12>
+                           x12 :: X12DetailsProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormatOptionsProperty ::
+  X12DetailsProperty -> FormatOptionsProperty
+mkFormatOptionsProperty x12
+  = FormatOptionsProperty {haddock_workaround_ = (), x12 = x12}
+instance ToResourceProperties FormatOptionsProperty where
+  toResourceProperties FormatOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.FormatOptions",
+         supportsTags = Prelude.False, properties = ["X12" JSON..= x12]}
+instance JSON.ToJSON FormatOptionsProperty where
+  toJSON FormatOptionsProperty {..} = JSON.object ["X12" JSON..= x12]
+instance Property "X12" FormatOptionsProperty where
+  type PropertyType "X12" FormatOptionsProperty = X12DetailsProperty
+  set newValue FormatOptionsProperty {..}
+    = FormatOptionsProperty {x12 = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/FormatOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/FormatOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/FormatOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.FormatOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormatOptionsProperty :: Prelude.Type
+instance ToResourceProperties FormatOptionsProperty
+instance Prelude.Eq FormatOptionsProperty
+instance Prelude.Show FormatOptionsProperty
+instance JSON.ToJSON FormatOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/InputConversionProperty.hs b/gen/Stratosphere/B2BI/Transformer/InputConversionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/InputConversionProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.B2BI.Transformer.InputConversionProperty (
+        module Exports, InputConversionProperty(..),
+        mkInputConversionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.AdvancedOptionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.FormatOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data InputConversionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-inputconversion.html>
+    InputConversionProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-inputconversion.html#cfn-b2bi-transformer-inputconversion-advancedoptions>
+                             advancedOptions :: (Prelude.Maybe AdvancedOptionsProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-inputconversion.html#cfn-b2bi-transformer-inputconversion-formatoptions>
+                             formatOptions :: (Prelude.Maybe FormatOptionsProperty),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-inputconversion.html#cfn-b2bi-transformer-inputconversion-fromformat>
+                             fromFormat :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkInputConversionProperty ::
+  Value Prelude.Text -> InputConversionProperty
+mkInputConversionProperty fromFormat
+  = InputConversionProperty
+      {haddock_workaround_ = (), fromFormat = fromFormat,
+       advancedOptions = Prelude.Nothing, formatOptions = Prelude.Nothing}
+instance ToResourceProperties InputConversionProperty where
+  toResourceProperties InputConversionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.InputConversion",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["FromFormat" JSON..= fromFormat]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AdvancedOptions" Prelude.<$> advancedOptions,
+                               (JSON..=) "FormatOptions" Prelude.<$> formatOptions]))}
+instance JSON.ToJSON InputConversionProperty where
+  toJSON InputConversionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["FromFormat" JSON..= fromFormat]
+              (Prelude.catMaybes
+                 [(JSON..=) "AdvancedOptions" Prelude.<$> advancedOptions,
+                  (JSON..=) "FormatOptions" Prelude.<$> formatOptions])))
+instance Property "AdvancedOptions" InputConversionProperty where
+  type PropertyType "AdvancedOptions" InputConversionProperty = AdvancedOptionsProperty
+  set newValue InputConversionProperty {..}
+    = InputConversionProperty
+        {advancedOptions = Prelude.pure newValue, ..}
+instance Property "FormatOptions" InputConversionProperty where
+  type PropertyType "FormatOptions" InputConversionProperty = FormatOptionsProperty
+  set newValue InputConversionProperty {..}
+    = InputConversionProperty
+        {formatOptions = Prelude.pure newValue, ..}
+instance Property "FromFormat" InputConversionProperty where
+  type PropertyType "FromFormat" InputConversionProperty = Value Prelude.Text
+  set newValue InputConversionProperty {..}
+    = InputConversionProperty {fromFormat = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/InputConversionProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/InputConversionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/InputConversionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.InputConversionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data InputConversionProperty :: Prelude.Type
+instance ToResourceProperties InputConversionProperty
+instance Prelude.Eq InputConversionProperty
+instance Prelude.Show InputConversionProperty
+instance JSON.ToJSON InputConversionProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/MappingProperty.hs b/gen/Stratosphere/B2BI/Transformer/MappingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/MappingProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.B2BI.Transformer.MappingProperty (
+        MappingProperty(..), mkMappingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MappingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-mapping.html>
+    MappingProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-mapping.html#cfn-b2bi-transformer-mapping-template>
+                     template :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-mapping.html#cfn-b2bi-transformer-mapping-templatelanguage>
+                     templateLanguage :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMappingProperty :: Value Prelude.Text -> MappingProperty
+mkMappingProperty templateLanguage
+  = MappingProperty
+      {haddock_workaround_ = (), templateLanguage = templateLanguage,
+       template = Prelude.Nothing}
+instance ToResourceProperties MappingProperty where
+  toResourceProperties MappingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.Mapping",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["TemplateLanguage" JSON..= templateLanguage]
+                           (Prelude.catMaybes [(JSON..=) "Template" Prelude.<$> template]))}
+instance JSON.ToJSON MappingProperty where
+  toJSON MappingProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["TemplateLanguage" JSON..= templateLanguage]
+              (Prelude.catMaybes [(JSON..=) "Template" Prelude.<$> template])))
+instance Property "Template" MappingProperty where
+  type PropertyType "Template" MappingProperty = Value Prelude.Text
+  set newValue MappingProperty {..}
+    = MappingProperty {template = Prelude.pure newValue, ..}
+instance Property "TemplateLanguage" MappingProperty where
+  type PropertyType "TemplateLanguage" MappingProperty = Value Prelude.Text
+  set newValue MappingProperty {..}
+    = MappingProperty {templateLanguage = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/MappingProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/MappingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/MappingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.MappingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MappingProperty :: Prelude.Type
+instance ToResourceProperties MappingProperty
+instance Prelude.Eq MappingProperty
+instance Prelude.Show MappingProperty
+instance JSON.ToJSON MappingProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/OutputConversionProperty.hs b/gen/Stratosphere/B2BI/Transformer/OutputConversionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/OutputConversionProperty.hs
@@ -0,0 +1,61 @@
+module Stratosphere.B2BI.Transformer.OutputConversionProperty (
+        module Exports, OutputConversionProperty(..),
+        mkOutputConversionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.AdvancedOptionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.FormatOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data OutputConversionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-outputconversion.html>
+    OutputConversionProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-outputconversion.html#cfn-b2bi-transformer-outputconversion-advancedoptions>
+                              advancedOptions :: (Prelude.Maybe AdvancedOptionsProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-outputconversion.html#cfn-b2bi-transformer-outputconversion-formatoptions>
+                              formatOptions :: (Prelude.Maybe FormatOptionsProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-outputconversion.html#cfn-b2bi-transformer-outputconversion-toformat>
+                              toFormat :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkOutputConversionProperty ::
+  Value Prelude.Text -> OutputConversionProperty
+mkOutputConversionProperty toFormat
+  = OutputConversionProperty
+      {haddock_workaround_ = (), toFormat = toFormat,
+       advancedOptions = Prelude.Nothing, formatOptions = Prelude.Nothing}
+instance ToResourceProperties OutputConversionProperty where
+  toResourceProperties OutputConversionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.OutputConversion",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ToFormat" JSON..= toFormat]
+                           (Prelude.catMaybes
+                              [(JSON..=) "AdvancedOptions" Prelude.<$> advancedOptions,
+                               (JSON..=) "FormatOptions" Prelude.<$> formatOptions]))}
+instance JSON.ToJSON OutputConversionProperty where
+  toJSON OutputConversionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ToFormat" JSON..= toFormat]
+              (Prelude.catMaybes
+                 [(JSON..=) "AdvancedOptions" Prelude.<$> advancedOptions,
+                  (JSON..=) "FormatOptions" Prelude.<$> formatOptions])))
+instance Property "AdvancedOptions" OutputConversionProperty where
+  type PropertyType "AdvancedOptions" OutputConversionProperty = AdvancedOptionsProperty
+  set newValue OutputConversionProperty {..}
+    = OutputConversionProperty
+        {advancedOptions = Prelude.pure newValue, ..}
+instance Property "FormatOptions" OutputConversionProperty where
+  type PropertyType "FormatOptions" OutputConversionProperty = FormatOptionsProperty
+  set newValue OutputConversionProperty {..}
+    = OutputConversionProperty
+        {formatOptions = Prelude.pure newValue, ..}
+instance Property "ToFormat" OutputConversionProperty where
+  type PropertyType "ToFormat" OutputConversionProperty = Value Prelude.Text
+  set newValue OutputConversionProperty {..}
+    = OutputConversionProperty {toFormat = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/OutputConversionProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/OutputConversionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/OutputConversionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.OutputConversionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data OutputConversionProperty :: Prelude.Type
+instance ToResourceProperties OutputConversionProperty
+instance Prelude.Eq OutputConversionProperty
+instance Prelude.Show OutputConversionProperty
+instance JSON.ToJSON OutputConversionProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/SampleDocumentKeysProperty.hs b/gen/Stratosphere/B2BI/Transformer/SampleDocumentKeysProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/SampleDocumentKeysProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.B2BI.Transformer.SampleDocumentKeysProperty (
+        SampleDocumentKeysProperty(..), mkSampleDocumentKeysProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SampleDocumentKeysProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-sampledocumentkeys.html>
+    SampleDocumentKeysProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-sampledocumentkeys.html#cfn-b2bi-transformer-sampledocumentkeys-input>
+                                input :: (Prelude.Maybe (Value Prelude.Text)),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-sampledocumentkeys.html#cfn-b2bi-transformer-sampledocumentkeys-output>
+                                output :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSampleDocumentKeysProperty :: SampleDocumentKeysProperty
+mkSampleDocumentKeysProperty
+  = SampleDocumentKeysProperty
+      {haddock_workaround_ = (), input = Prelude.Nothing,
+       output = Prelude.Nothing}
+instance ToResourceProperties SampleDocumentKeysProperty where
+  toResourceProperties SampleDocumentKeysProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.SampleDocumentKeys",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Input" Prelude.<$> input,
+                            (JSON..=) "Output" Prelude.<$> output])}
+instance JSON.ToJSON SampleDocumentKeysProperty where
+  toJSON SampleDocumentKeysProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Input" Prelude.<$> input,
+               (JSON..=) "Output" Prelude.<$> output]))
+instance Property "Input" SampleDocumentKeysProperty where
+  type PropertyType "Input" SampleDocumentKeysProperty = Value Prelude.Text
+  set newValue SampleDocumentKeysProperty {..}
+    = SampleDocumentKeysProperty {input = Prelude.pure newValue, ..}
+instance Property "Output" SampleDocumentKeysProperty where
+  type PropertyType "Output" SampleDocumentKeysProperty = Value Prelude.Text
+  set newValue SampleDocumentKeysProperty {..}
+    = SampleDocumentKeysProperty {output = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/SampleDocumentKeysProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/SampleDocumentKeysProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/SampleDocumentKeysProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.SampleDocumentKeysProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SampleDocumentKeysProperty :: Prelude.Type
+instance ToResourceProperties SampleDocumentKeysProperty
+instance Prelude.Eq SampleDocumentKeysProperty
+instance Prelude.Show SampleDocumentKeysProperty
+instance JSON.ToJSON SampleDocumentKeysProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/SampleDocumentsProperty.hs b/gen/Stratosphere/B2BI/Transformer/SampleDocumentsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/SampleDocumentsProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.B2BI.Transformer.SampleDocumentsProperty (
+        module Exports, SampleDocumentsProperty(..),
+        mkSampleDocumentsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.SampleDocumentKeysProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SampleDocumentsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-sampledocuments.html>
+    SampleDocumentsProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-sampledocuments.html#cfn-b2bi-transformer-sampledocuments-bucketname>
+                             bucketName :: (Value Prelude.Text),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-sampledocuments.html#cfn-b2bi-transformer-sampledocuments-keys>
+                             keys :: [SampleDocumentKeysProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSampleDocumentsProperty ::
+  Value Prelude.Text
+  -> [SampleDocumentKeysProperty] -> SampleDocumentsProperty
+mkSampleDocumentsProperty bucketName keys
+  = SampleDocumentsProperty
+      {haddock_workaround_ = (), bucketName = bucketName, keys = keys}
+instance ToResourceProperties SampleDocumentsProperty where
+  toResourceProperties SampleDocumentsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.SampleDocuments",
+         supportsTags = Prelude.False,
+         properties = ["BucketName" JSON..= bucketName,
+                       "Keys" JSON..= keys]}
+instance JSON.ToJSON SampleDocumentsProperty where
+  toJSON SampleDocumentsProperty {..}
+    = JSON.object
+        ["BucketName" JSON..= bucketName, "Keys" JSON..= keys]
+instance Property "BucketName" SampleDocumentsProperty where
+  type PropertyType "BucketName" SampleDocumentsProperty = Value Prelude.Text
+  set newValue SampleDocumentsProperty {..}
+    = SampleDocumentsProperty {bucketName = newValue, ..}
+instance Property "Keys" SampleDocumentsProperty where
+  type PropertyType "Keys" SampleDocumentsProperty = [SampleDocumentKeysProperty]
+  set newValue SampleDocumentsProperty {..}
+    = SampleDocumentsProperty {keys = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/SampleDocumentsProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/SampleDocumentsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/SampleDocumentsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.SampleDocumentsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SampleDocumentsProperty :: Prelude.Type
+instance ToResourceProperties SampleDocumentsProperty
+instance Prelude.Eq SampleDocumentsProperty
+instance Prelude.Show SampleDocumentsProperty
+instance JSON.ToJSON SampleDocumentsProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12AdvancedOptionsProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12AdvancedOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12AdvancedOptionsProperty.hs
@@ -0,0 +1,49 @@
+module Stratosphere.B2BI.Transformer.X12AdvancedOptionsProperty (
+        module Exports, X12AdvancedOptionsProperty(..),
+        mkX12AdvancedOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12SplitOptionsProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12ValidationOptionsProperty as Exports
+import Stratosphere.ResourceProperties
+data X12AdvancedOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12advancedoptions.html>
+    X12AdvancedOptionsProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12advancedoptions.html#cfn-b2bi-transformer-x12advancedoptions-splitoptions>
+                                splitOptions :: (Prelude.Maybe X12SplitOptionsProperty),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12advancedoptions.html#cfn-b2bi-transformer-x12advancedoptions-validationoptions>
+                                validationOptions :: (Prelude.Maybe X12ValidationOptionsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12AdvancedOptionsProperty :: X12AdvancedOptionsProperty
+mkX12AdvancedOptionsProperty
+  = X12AdvancedOptionsProperty
+      {haddock_workaround_ = (), splitOptions = Prelude.Nothing,
+       validationOptions = Prelude.Nothing}
+instance ToResourceProperties X12AdvancedOptionsProperty where
+  toResourceProperties X12AdvancedOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12AdvancedOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "SplitOptions" Prelude.<$> splitOptions,
+                            (JSON..=) "ValidationOptions" Prelude.<$> validationOptions])}
+instance JSON.ToJSON X12AdvancedOptionsProperty where
+  toJSON X12AdvancedOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "SplitOptions" Prelude.<$> splitOptions,
+               (JSON..=) "ValidationOptions" Prelude.<$> validationOptions]))
+instance Property "SplitOptions" X12AdvancedOptionsProperty where
+  type PropertyType "SplitOptions" X12AdvancedOptionsProperty = X12SplitOptionsProperty
+  set newValue X12AdvancedOptionsProperty {..}
+    = X12AdvancedOptionsProperty
+        {splitOptions = Prelude.pure newValue, ..}
+instance Property "ValidationOptions" X12AdvancedOptionsProperty where
+  type PropertyType "ValidationOptions" X12AdvancedOptionsProperty = X12ValidationOptionsProperty
+  set newValue X12AdvancedOptionsProperty {..}
+    = X12AdvancedOptionsProperty
+        {validationOptions = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12AdvancedOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12AdvancedOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12AdvancedOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12AdvancedOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12AdvancedOptionsProperty :: Prelude.Type
+instance ToResourceProperties X12AdvancedOptionsProperty
+instance Prelude.Eq X12AdvancedOptionsProperty
+instance Prelude.Show X12AdvancedOptionsProperty
+instance JSON.ToJSON X12AdvancedOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12CodeListValidationRuleProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12CodeListValidationRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12CodeListValidationRuleProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.B2BI.Transformer.X12CodeListValidationRuleProperty (
+        X12CodeListValidationRuleProperty(..),
+        mkX12CodeListValidationRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12CodeListValidationRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12codelistvalidationrule.html>
+    X12CodeListValidationRuleProperty {haddock_workaround_ :: (),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12codelistvalidationrule.html#cfn-b2bi-transformer-x12codelistvalidationrule-codestoadd>
+                                       codesToAdd :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12codelistvalidationrule.html#cfn-b2bi-transformer-x12codelistvalidationrule-codestoremove>
+                                       codesToRemove :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12codelistvalidationrule.html#cfn-b2bi-transformer-x12codelistvalidationrule-elementid>
+                                       elementId :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12CodeListValidationRuleProperty ::
+  Value Prelude.Text -> X12CodeListValidationRuleProperty
+mkX12CodeListValidationRuleProperty elementId
+  = X12CodeListValidationRuleProperty
+      {haddock_workaround_ = (), elementId = elementId,
+       codesToAdd = Prelude.Nothing, codesToRemove = Prelude.Nothing}
+instance ToResourceProperties X12CodeListValidationRuleProperty where
+  toResourceProperties X12CodeListValidationRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12CodeListValidationRule",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ElementId" JSON..= elementId]
+                           (Prelude.catMaybes
+                              [(JSON..=) "CodesToAdd" Prelude.<$> codesToAdd,
+                               (JSON..=) "CodesToRemove" Prelude.<$> codesToRemove]))}
+instance JSON.ToJSON X12CodeListValidationRuleProperty where
+  toJSON X12CodeListValidationRuleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ElementId" JSON..= elementId]
+              (Prelude.catMaybes
+                 [(JSON..=) "CodesToAdd" Prelude.<$> codesToAdd,
+                  (JSON..=) "CodesToRemove" Prelude.<$> codesToRemove])))
+instance Property "CodesToAdd" X12CodeListValidationRuleProperty where
+  type PropertyType "CodesToAdd" X12CodeListValidationRuleProperty = ValueList Prelude.Text
+  set newValue X12CodeListValidationRuleProperty {..}
+    = X12CodeListValidationRuleProperty
+        {codesToAdd = Prelude.pure newValue, ..}
+instance Property "CodesToRemove" X12CodeListValidationRuleProperty where
+  type PropertyType "CodesToRemove" X12CodeListValidationRuleProperty = ValueList Prelude.Text
+  set newValue X12CodeListValidationRuleProperty {..}
+    = X12CodeListValidationRuleProperty
+        {codesToRemove = Prelude.pure newValue, ..}
+instance Property "ElementId" X12CodeListValidationRuleProperty where
+  type PropertyType "ElementId" X12CodeListValidationRuleProperty = Value Prelude.Text
+  set newValue X12CodeListValidationRuleProperty {..}
+    = X12CodeListValidationRuleProperty {elementId = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12CodeListValidationRuleProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12CodeListValidationRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12CodeListValidationRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12CodeListValidationRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12CodeListValidationRuleProperty :: Prelude.Type
+instance ToResourceProperties X12CodeListValidationRuleProperty
+instance Prelude.Eq X12CodeListValidationRuleProperty
+instance Prelude.Show X12CodeListValidationRuleProperty
+instance JSON.ToJSON X12CodeListValidationRuleProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12DetailsProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12DetailsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12DetailsProperty.hs
@@ -0,0 +1,45 @@
+module Stratosphere.B2BI.Transformer.X12DetailsProperty (
+        X12DetailsProperty(..), mkX12DetailsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12DetailsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12details.html>
+    X12DetailsProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12details.html#cfn-b2bi-transformer-x12details-transactionset>
+                        transactionSet :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12details.html#cfn-b2bi-transformer-x12details-version>
+                        version :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12DetailsProperty :: X12DetailsProperty
+mkX12DetailsProperty
+  = X12DetailsProperty
+      {haddock_workaround_ = (), transactionSet = Prelude.Nothing,
+       version = Prelude.Nothing}
+instance ToResourceProperties X12DetailsProperty where
+  toResourceProperties X12DetailsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12Details",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "TransactionSet" Prelude.<$> transactionSet,
+                            (JSON..=) "Version" Prelude.<$> version])}
+instance JSON.ToJSON X12DetailsProperty where
+  toJSON X12DetailsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "TransactionSet" Prelude.<$> transactionSet,
+               (JSON..=) "Version" Prelude.<$> version]))
+instance Property "TransactionSet" X12DetailsProperty where
+  type PropertyType "TransactionSet" X12DetailsProperty = Value Prelude.Text
+  set newValue X12DetailsProperty {..}
+    = X12DetailsProperty {transactionSet = Prelude.pure newValue, ..}
+instance Property "Version" X12DetailsProperty where
+  type PropertyType "Version" X12DetailsProperty = Value Prelude.Text
+  set newValue X12DetailsProperty {..}
+    = X12DetailsProperty {version = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12DetailsProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12DetailsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12DetailsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12DetailsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12DetailsProperty :: Prelude.Type
+instance ToResourceProperties X12DetailsProperty
+instance Prelude.Eq X12DetailsProperty
+instance Prelude.Show X12DetailsProperty
+instance JSON.ToJSON X12DetailsProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ElementLengthValidationRuleProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12ElementLengthValidationRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ElementLengthValidationRuleProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.B2BI.Transformer.X12ElementLengthValidationRuleProperty (
+        X12ElementLengthValidationRuleProperty(..),
+        mkX12ElementLengthValidationRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12ElementLengthValidationRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12elementlengthvalidationrule.html>
+    X12ElementLengthValidationRuleProperty {haddock_workaround_ :: (),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12elementlengthvalidationrule.html#cfn-b2bi-transformer-x12elementlengthvalidationrule-elementid>
+                                            elementId :: (Value Prelude.Text),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12elementlengthvalidationrule.html#cfn-b2bi-transformer-x12elementlengthvalidationrule-maxlength>
+                                            maxLength :: (Value Prelude.Double),
+                                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12elementlengthvalidationrule.html#cfn-b2bi-transformer-x12elementlengthvalidationrule-minlength>
+                                            minLength :: (Value Prelude.Double)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12ElementLengthValidationRuleProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Double
+     -> Value Prelude.Double -> X12ElementLengthValidationRuleProperty
+mkX12ElementLengthValidationRuleProperty
+  elementId
+  maxLength
+  minLength
+  = X12ElementLengthValidationRuleProperty
+      {haddock_workaround_ = (), elementId = elementId,
+       maxLength = maxLength, minLength = minLength}
+instance ToResourceProperties X12ElementLengthValidationRuleProperty where
+  toResourceProperties X12ElementLengthValidationRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12ElementLengthValidationRule",
+         supportsTags = Prelude.False,
+         properties = ["ElementId" JSON..= elementId,
+                       "MaxLength" JSON..= maxLength, "MinLength" JSON..= minLength]}
+instance JSON.ToJSON X12ElementLengthValidationRuleProperty where
+  toJSON X12ElementLengthValidationRuleProperty {..}
+    = JSON.object
+        ["ElementId" JSON..= elementId, "MaxLength" JSON..= maxLength,
+         "MinLength" JSON..= minLength]
+instance Property "ElementId" X12ElementLengthValidationRuleProperty where
+  type PropertyType "ElementId" X12ElementLengthValidationRuleProperty = Value Prelude.Text
+  set newValue X12ElementLengthValidationRuleProperty {..}
+    = X12ElementLengthValidationRuleProperty {elementId = newValue, ..}
+instance Property "MaxLength" X12ElementLengthValidationRuleProperty where
+  type PropertyType "MaxLength" X12ElementLengthValidationRuleProperty = Value Prelude.Double
+  set newValue X12ElementLengthValidationRuleProperty {..}
+    = X12ElementLengthValidationRuleProperty {maxLength = newValue, ..}
+instance Property "MinLength" X12ElementLengthValidationRuleProperty where
+  type PropertyType "MinLength" X12ElementLengthValidationRuleProperty = Value Prelude.Double
+  set newValue X12ElementLengthValidationRuleProperty {..}
+    = X12ElementLengthValidationRuleProperty {minLength = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ElementLengthValidationRuleProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12ElementLengthValidationRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ElementLengthValidationRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12ElementLengthValidationRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12ElementLengthValidationRuleProperty :: Prelude.Type
+instance ToResourceProperties X12ElementLengthValidationRuleProperty
+instance Prelude.Eq X12ElementLengthValidationRuleProperty
+instance Prelude.Show X12ElementLengthValidationRuleProperty
+instance JSON.ToJSON X12ElementLengthValidationRuleProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ElementRequirementValidationRuleProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12ElementRequirementValidationRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ElementRequirementValidationRuleProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.B2BI.Transformer.X12ElementRequirementValidationRuleProperty (
+        X12ElementRequirementValidationRuleProperty(..),
+        mkX12ElementRequirementValidationRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12ElementRequirementValidationRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12elementrequirementvalidationrule.html>
+    X12ElementRequirementValidationRuleProperty {haddock_workaround_ :: (),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12elementrequirementvalidationrule.html#cfn-b2bi-transformer-x12elementrequirementvalidationrule-elementposition>
+                                                 elementPosition :: (Value Prelude.Text),
+                                                 -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12elementrequirementvalidationrule.html#cfn-b2bi-transformer-x12elementrequirementvalidationrule-requirement>
+                                                 requirement :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12ElementRequirementValidationRuleProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> X12ElementRequirementValidationRuleProperty
+mkX12ElementRequirementValidationRuleProperty
+  elementPosition
+  requirement
+  = X12ElementRequirementValidationRuleProperty
+      {haddock_workaround_ = (), elementPosition = elementPosition,
+       requirement = requirement}
+instance ToResourceProperties X12ElementRequirementValidationRuleProperty where
+  toResourceProperties
+    X12ElementRequirementValidationRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12ElementRequirementValidationRule",
+         supportsTags = Prelude.False,
+         properties = ["ElementPosition" JSON..= elementPosition,
+                       "Requirement" JSON..= requirement]}
+instance JSON.ToJSON X12ElementRequirementValidationRuleProperty where
+  toJSON X12ElementRequirementValidationRuleProperty {..}
+    = JSON.object
+        ["ElementPosition" JSON..= elementPosition,
+         "Requirement" JSON..= requirement]
+instance Property "ElementPosition" X12ElementRequirementValidationRuleProperty where
+  type PropertyType "ElementPosition" X12ElementRequirementValidationRuleProperty = Value Prelude.Text
+  set newValue X12ElementRequirementValidationRuleProperty {..}
+    = X12ElementRequirementValidationRuleProperty
+        {elementPosition = newValue, ..}
+instance Property "Requirement" X12ElementRequirementValidationRuleProperty where
+  type PropertyType "Requirement" X12ElementRequirementValidationRuleProperty = Value Prelude.Text
+  set newValue X12ElementRequirementValidationRuleProperty {..}
+    = X12ElementRequirementValidationRuleProperty
+        {requirement = newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ElementRequirementValidationRuleProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12ElementRequirementValidationRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ElementRequirementValidationRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12ElementRequirementValidationRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12ElementRequirementValidationRuleProperty :: Prelude.Type
+instance ToResourceProperties X12ElementRequirementValidationRuleProperty
+instance Prelude.Eq X12ElementRequirementValidationRuleProperty
+instance Prelude.Show X12ElementRequirementValidationRuleProperty
+instance JSON.ToJSON X12ElementRequirementValidationRuleProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12SplitOptionsProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12SplitOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12SplitOptionsProperty.hs
@@ -0,0 +1,34 @@
+module Stratosphere.B2BI.Transformer.X12SplitOptionsProperty (
+        X12SplitOptionsProperty(..), mkX12SplitOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data X12SplitOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12splitoptions.html>
+    X12SplitOptionsProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12splitoptions.html#cfn-b2bi-transformer-x12splitoptions-splitby>
+                             splitBy :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12SplitOptionsProperty :: X12SplitOptionsProperty
+mkX12SplitOptionsProperty
+  = X12SplitOptionsProperty
+      {haddock_workaround_ = (), splitBy = Prelude.Nothing}
+instance ToResourceProperties X12SplitOptionsProperty where
+  toResourceProperties X12SplitOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12SplitOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "SplitBy" Prelude.<$> splitBy])}
+instance JSON.ToJSON X12SplitOptionsProperty where
+  toJSON X12SplitOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "SplitBy" Prelude.<$> splitBy]))
+instance Property "SplitBy" X12SplitOptionsProperty where
+  type PropertyType "SplitBy" X12SplitOptionsProperty = Value Prelude.Text
+  set newValue X12SplitOptionsProperty {..}
+    = X12SplitOptionsProperty {splitBy = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12SplitOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12SplitOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12SplitOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12SplitOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12SplitOptionsProperty :: Prelude.Type
+instance ToResourceProperties X12SplitOptionsProperty
+instance Prelude.Eq X12SplitOptionsProperty
+instance Prelude.Show X12SplitOptionsProperty
+instance JSON.ToJSON X12SplitOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ValidationOptionsProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12ValidationOptionsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ValidationOptionsProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.B2BI.Transformer.X12ValidationOptionsProperty (
+        module Exports, X12ValidationOptionsProperty(..),
+        mkX12ValidationOptionsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12ValidationRuleProperty as Exports
+import Stratosphere.ResourceProperties
+data X12ValidationOptionsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12validationoptions.html>
+    X12ValidationOptionsProperty {haddock_workaround_ :: (),
+                                  -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12validationoptions.html#cfn-b2bi-transformer-x12validationoptions-validationrules>
+                                  validationRules :: (Prelude.Maybe [X12ValidationRuleProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12ValidationOptionsProperty :: X12ValidationOptionsProperty
+mkX12ValidationOptionsProperty
+  = X12ValidationOptionsProperty
+      {haddock_workaround_ = (), validationRules = Prelude.Nothing}
+instance ToResourceProperties X12ValidationOptionsProperty where
+  toResourceProperties X12ValidationOptionsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12ValidationOptions",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "ValidationRules" Prelude.<$> validationRules])}
+instance JSON.ToJSON X12ValidationOptionsProperty where
+  toJSON X12ValidationOptionsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "ValidationRules" Prelude.<$> validationRules]))
+instance Property "ValidationRules" X12ValidationOptionsProperty where
+  type PropertyType "ValidationRules" X12ValidationOptionsProperty = [X12ValidationRuleProperty]
+  set newValue X12ValidationOptionsProperty {..}
+    = X12ValidationOptionsProperty
+        {validationRules = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ValidationOptionsProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12ValidationOptionsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ValidationOptionsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12ValidationOptionsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12ValidationOptionsProperty :: Prelude.Type
+instance ToResourceProperties X12ValidationOptionsProperty
+instance Prelude.Eq X12ValidationOptionsProperty
+instance Prelude.Show X12ValidationOptionsProperty
+instance JSON.ToJSON X12ValidationOptionsProperty
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ValidationRuleProperty.hs b/gen/Stratosphere/B2BI/Transformer/X12ValidationRuleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ValidationRuleProperty.hs
@@ -0,0 +1,67 @@
+module Stratosphere.B2BI.Transformer.X12ValidationRuleProperty (
+        module Exports, X12ValidationRuleProperty(..),
+        mkX12ValidationRuleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12CodeListValidationRuleProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12ElementLengthValidationRuleProperty as Exports
+import {-# SOURCE #-} Stratosphere.B2BI.Transformer.X12ElementRequirementValidationRuleProperty as Exports
+import Stratosphere.ResourceProperties
+data X12ValidationRuleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12validationrule.html>
+    X12ValidationRuleProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12validationrule.html#cfn-b2bi-transformer-x12validationrule-codelistvalidationrule>
+                               codeListValidationRule :: (Prelude.Maybe X12CodeListValidationRuleProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12validationrule.html#cfn-b2bi-transformer-x12validationrule-elementlengthvalidationrule>
+                               elementLengthValidationRule :: (Prelude.Maybe X12ElementLengthValidationRuleProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-b2bi-transformer-x12validationrule.html#cfn-b2bi-transformer-x12validationrule-elementrequirementvalidationrule>
+                               elementRequirementValidationRule :: (Prelude.Maybe X12ElementRequirementValidationRuleProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkX12ValidationRuleProperty :: X12ValidationRuleProperty
+mkX12ValidationRuleProperty
+  = X12ValidationRuleProperty
+      {haddock_workaround_ = (),
+       codeListValidationRule = Prelude.Nothing,
+       elementLengthValidationRule = Prelude.Nothing,
+       elementRequirementValidationRule = Prelude.Nothing}
+instance ToResourceProperties X12ValidationRuleProperty where
+  toResourceProperties X12ValidationRuleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::B2BI::Transformer.X12ValidationRule",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "CodeListValidationRule"
+                              Prelude.<$> codeListValidationRule,
+                            (JSON..=) "ElementLengthValidationRule"
+                              Prelude.<$> elementLengthValidationRule,
+                            (JSON..=) "ElementRequirementValidationRule"
+                              Prelude.<$> elementRequirementValidationRule])}
+instance JSON.ToJSON X12ValidationRuleProperty where
+  toJSON X12ValidationRuleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "CodeListValidationRule"
+                 Prelude.<$> codeListValidationRule,
+               (JSON..=) "ElementLengthValidationRule"
+                 Prelude.<$> elementLengthValidationRule,
+               (JSON..=) "ElementRequirementValidationRule"
+                 Prelude.<$> elementRequirementValidationRule]))
+instance Property "CodeListValidationRule" X12ValidationRuleProperty where
+  type PropertyType "CodeListValidationRule" X12ValidationRuleProperty = X12CodeListValidationRuleProperty
+  set newValue X12ValidationRuleProperty {..}
+    = X12ValidationRuleProperty
+        {codeListValidationRule = Prelude.pure newValue, ..}
+instance Property "ElementLengthValidationRule" X12ValidationRuleProperty where
+  type PropertyType "ElementLengthValidationRule" X12ValidationRuleProperty = X12ElementLengthValidationRuleProperty
+  set newValue X12ValidationRuleProperty {..}
+    = X12ValidationRuleProperty
+        {elementLengthValidationRule = Prelude.pure newValue, ..}
+instance Property "ElementRequirementValidationRule" X12ValidationRuleProperty where
+  type PropertyType "ElementRequirementValidationRule" X12ValidationRuleProperty = X12ElementRequirementValidationRuleProperty
+  set newValue X12ValidationRuleProperty {..}
+    = X12ValidationRuleProperty
+        {elementRequirementValidationRule = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/B2BI/Transformer/X12ValidationRuleProperty.hs-boot b/gen/Stratosphere/B2BI/Transformer/X12ValidationRuleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/B2BI/Transformer/X12ValidationRuleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.B2BI.Transformer.X12ValidationRuleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data X12ValidationRuleProperty :: Prelude.Type
+instance ToResourceProperties X12ValidationRuleProperty
+instance Prelude.Eq X12ValidationRuleProperty
+instance Prelude.Show X12ValidationRuleProperty
+instance JSON.ToJSON X12ValidationRuleProperty
diff --git a/stratosphere-b2bi.cabal b/stratosphere-b2bi.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-b2bi.cabal
@@ -0,0 +1,108 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-b2bi
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS B2BI.
+description:    Integration into stratosphere to generate resources and properties for AWS B2BI
+category:       AWS, Cloud, B2BI
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.B2BI.Capability
+      Stratosphere.B2BI.Capability.CapabilityConfigurationProperty
+      Stratosphere.B2BI.Capability.EdiConfigurationProperty
+      Stratosphere.B2BI.Capability.EdiTypeProperty
+      Stratosphere.B2BI.Capability.S3LocationProperty
+      Stratosphere.B2BI.Capability.X12DetailsProperty
+      Stratosphere.B2BI.Partnership
+      Stratosphere.B2BI.Partnership.CapabilityOptionsProperty
+      Stratosphere.B2BI.Partnership.InboundEdiOptionsProperty
+      Stratosphere.B2BI.Partnership.OutboundEdiOptionsProperty
+      Stratosphere.B2BI.Partnership.WrapOptionsProperty
+      Stratosphere.B2BI.Partnership.X12AcknowledgmentOptionsProperty
+      Stratosphere.B2BI.Partnership.X12ControlNumbersProperty
+      Stratosphere.B2BI.Partnership.X12DelimitersProperty
+      Stratosphere.B2BI.Partnership.X12EnvelopeProperty
+      Stratosphere.B2BI.Partnership.X12FunctionalGroupHeadersProperty
+      Stratosphere.B2BI.Partnership.X12InboundEdiOptionsProperty
+      Stratosphere.B2BI.Partnership.X12InterchangeControlHeadersProperty
+      Stratosphere.B2BI.Partnership.X12OutboundEdiHeadersProperty
+      Stratosphere.B2BI.Profile
+      Stratosphere.B2BI.Transformer
+      Stratosphere.B2BI.Transformer.AdvancedOptionsProperty
+      Stratosphere.B2BI.Transformer.FormatOptionsProperty
+      Stratosphere.B2BI.Transformer.InputConversionProperty
+      Stratosphere.B2BI.Transformer.MappingProperty
+      Stratosphere.B2BI.Transformer.OutputConversionProperty
+      Stratosphere.B2BI.Transformer.SampleDocumentKeysProperty
+      Stratosphere.B2BI.Transformer.SampleDocumentsProperty
+      Stratosphere.B2BI.Transformer.X12AdvancedOptionsProperty
+      Stratosphere.B2BI.Transformer.X12CodeListValidationRuleProperty
+      Stratosphere.B2BI.Transformer.X12DetailsProperty
+      Stratosphere.B2BI.Transformer.X12ElementLengthValidationRuleProperty
+      Stratosphere.B2BI.Transformer.X12ElementRequirementValidationRuleProperty
+      Stratosphere.B2BI.Transformer.X12SplitOptionsProperty
+      Stratosphere.B2BI.Transformer.X12ValidationOptionsProperty
+      Stratosphere.B2BI.Transformer.X12ValidationRuleProperty
+  other-modules:
+      Paths_stratosphere_b2bi
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
