From fda2d31f384eabbbf432ad1ee77ff8db6d0f2e73 Mon Sep 17 00:00:00 2001 From: Paul Maddox Date: Thu, 30 Jan 2020 20:42:00 +0400 Subject: [PATCH] feat(schema): CloudFormation Updates (2020-01-30) (#263) Updated the following AWS CloudFormation resources: - AWS::Cognito::UserPool - AWS::ACMPCA::Certificate - AWS::ACMPCA::CertificateAuthorityActivation - AWS::ACMPCA::CertificateAuthority - AWS::Cognito::UserPool.RecoveryOption - AWS::Transfer::Server.EndpointDetails - AWS::Cognito::UserPool.AccountRecoverySetting --- .../acmpca/aws-acmpca-certificate.go | 117 ++++++++ .../acmpca/aws-acmpca-certificateauthority.go | 123 ++++++++ ...s-acmpca-certificateauthorityactivation.go | 112 ++++++++ cloudformation/all.go | 76 +++++ .../cognito/aws-cognito-userpool.go | 5 + ...cognito-userpool_accountrecoverysetting.go | 32 +++ .../aws-cognito-userpool_recoveryoption.go | 37 +++ .../aws-transfer-server_endpointdetails.go | 17 +- schema/cloudformation.go | 262 +++++++++++++++++- schema/cloudformation.schema.json | 262 +++++++++++++++++- schema/sam.go | 262 +++++++++++++++++- schema/sam.schema.json | 262 +++++++++++++++++- 12 files changed, 1554 insertions(+), 13 deletions(-) create mode 100644 cloudformation/acmpca/aws-acmpca-certificate.go create mode 100644 cloudformation/acmpca/aws-acmpca-certificateauthority.go create mode 100644 cloudformation/acmpca/aws-acmpca-certificateauthorityactivation.go create mode 100644 cloudformation/cognito/aws-cognito-userpool_accountrecoverysetting.go create mode 100644 cloudformation/cognito/aws-cognito-userpool_recoveryoption.go diff --git a/cloudformation/acmpca/aws-acmpca-certificate.go b/cloudformation/acmpca/aws-acmpca-certificate.go new file mode 100644 index 0000000000..4d56caf582 --- /dev/null +++ b/cloudformation/acmpca/aws-acmpca-certificate.go @@ -0,0 +1,117 @@ +package acmpca + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// Certificate AWS CloudFormation Resource (AWS::ACMPCA::Certificate) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html +type Certificate struct { + + // CertificateAuthorityArn AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-certificateauthorityarn + CertificateAuthorityArn string `json:"CertificateAuthorityArn,omitempty"` + + // CertificateSigningRequest AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-certificatesigningrequest + CertificateSigningRequest string `json:"CertificateSigningRequest,omitempty"` + + // SigningAlgorithm AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-signingalgorithm + SigningAlgorithm string `json:"SigningAlgorithm,omitempty"` + + // TemplateArn AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-templatearn + TemplateArn string `json:"TemplateArn,omitempty"` + + // Validity AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificate.html#cfn-acmpca-certificate-validity + Validity interface{} `json:"Validity,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *Certificate) AWSCloudFormationType() string { + return "AWS::ACMPCA::Certificate" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r Certificate) MarshalJSON() ([]byte, error) { + type Properties Certificate + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *Certificate) UnmarshalJSON(b []byte) error { + type Properties Certificate + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = Certificate(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/acmpca/aws-acmpca-certificateauthority.go b/cloudformation/acmpca/aws-acmpca-certificateauthority.go new file mode 100644 index 0000000000..2d74fab541 --- /dev/null +++ b/cloudformation/acmpca/aws-acmpca-certificateauthority.go @@ -0,0 +1,123 @@ +package acmpca + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" + "github.com/awslabs/goformation/v4/cloudformation/tags" +) + +// CertificateAuthority AWS CloudFormation Resource (AWS::ACMPCA::CertificateAuthority) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html +type CertificateAuthority struct { + + // KeyAlgorithm AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-keyalgorithm + KeyAlgorithm string `json:"KeyAlgorithm,omitempty"` + + // RevocationConfiguration AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-revocationconfiguration + RevocationConfiguration interface{} `json:"RevocationConfiguration,omitempty"` + + // SigningAlgorithm AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-signingalgorithm + SigningAlgorithm string `json:"SigningAlgorithm,omitempty"` + + // Subject AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-subject + Subject interface{} `json:"Subject,omitempty"` + + // Tags AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-tags + Tags []tags.Tag `json:"Tags,omitempty"` + + // Type AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-type + Type string `json:"Type,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *CertificateAuthority) AWSCloudFormationType() string { + return "AWS::ACMPCA::CertificateAuthority" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r CertificateAuthority) MarshalJSON() ([]byte, error) { + type Properties CertificateAuthority + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *CertificateAuthority) UnmarshalJSON(b []byte) error { + type Properties CertificateAuthority + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = CertificateAuthority(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/acmpca/aws-acmpca-certificateauthorityactivation.go b/cloudformation/acmpca/aws-acmpca-certificateauthorityactivation.go new file mode 100644 index 0000000000..357a73fffb --- /dev/null +++ b/cloudformation/acmpca/aws-acmpca-certificateauthorityactivation.go @@ -0,0 +1,112 @@ +package acmpca + +import ( + "bytes" + "encoding/json" + "fmt" + + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// CertificateAuthorityActivation AWS CloudFormation Resource (AWS::ACMPCA::CertificateAuthorityActivation) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html +type CertificateAuthorityActivation struct { + + // Certificate AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-certificate + Certificate string `json:"Certificate,omitempty"` + + // CertificateAuthorityArn AWS CloudFormation Property + // Required: true + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-certificateauthorityarn + CertificateAuthorityArn string `json:"CertificateAuthorityArn,omitempty"` + + // CertificateChain AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-certificatechain + CertificateChain string `json:"CertificateChain,omitempty"` + + // Status AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthorityactivation.html#cfn-acmpca-certificateauthorityactivation-status + Status string `json:"Status,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *CertificateAuthorityActivation) AWSCloudFormationType() string { + return "AWS::ACMPCA::CertificateAuthorityActivation" +} + +// MarshalJSON is a custom JSON marshalling hook that embeds this object into +// an AWS CloudFormation JSON resource's 'Properties' field and adds a 'Type'. +func (r CertificateAuthorityActivation) MarshalJSON() ([]byte, error) { + type Properties CertificateAuthorityActivation + return json.Marshal(&struct { + Type string + Properties Properties + DependsOn []string `json:"DependsOn,omitempty"` + Metadata map[string]interface{} `json:"Metadata,omitempty"` + DeletionPolicy policies.DeletionPolicy `json:"DeletionPolicy,omitempty"` + Condition string `json:"Condition,omitempty"` + }{ + Type: r.AWSCloudFormationType(), + Properties: (Properties)(r), + DependsOn: r.AWSCloudFormationDependsOn, + Metadata: r.AWSCloudFormationMetadata, + DeletionPolicy: r.AWSCloudFormationDeletionPolicy, + Condition: r.AWSCloudFormationCondition, + }) +} + +// UnmarshalJSON is a custom JSON unmarshalling hook that strips the outer +// AWS CloudFormation resource object, and just keeps the 'Properties' field. +func (r *CertificateAuthorityActivation) UnmarshalJSON(b []byte) error { + type Properties CertificateAuthorityActivation + res := &struct { + Type string + Properties *Properties + DependsOn []string + Metadata map[string]interface{} + DeletionPolicy string + Condition string + }{} + + dec := json.NewDecoder(bytes.NewReader(b)) + dec.DisallowUnknownFields() // Force error if unknown field is found + + if err := dec.Decode(&res); err != nil { + fmt.Printf("ERROR: %s\n", err) + return err + } + + // If the resource has no Properties set, it could be nil + if res.Properties != nil { + *r = CertificateAuthorityActivation(*res.Properties) + } + if res.DependsOn != nil { + r.AWSCloudFormationDependsOn = res.DependsOn + } + if res.Metadata != nil { + r.AWSCloudFormationMetadata = res.Metadata + } + if res.DeletionPolicy != "" { + r.AWSCloudFormationDeletionPolicy = policies.DeletionPolicy(res.DeletionPolicy) + } + if res.Condition != "" { + r.AWSCloudFormationCondition = res.Condition + } + return nil +} diff --git a/cloudformation/all.go b/cloudformation/all.go index fbb247c904..3f4a518818 100644 --- a/cloudformation/all.go +++ b/cloudformation/all.go @@ -3,6 +3,7 @@ package cloudformation import ( "fmt" "github.com/awslabs/goformation/v4/cloudformation/accessanalyzer" + "github.com/awslabs/goformation/v4/cloudformation/acmpca" "github.com/awslabs/goformation/v4/cloudformation/amazonmq" "github.com/awslabs/goformation/v4/cloudformation/amplify" "github.com/awslabs/goformation/v4/cloudformation/apigateway" @@ -112,6 +113,9 @@ import ( // AllResources fetches an iterable map all CloudFormation and SAM resources func AllResources() map[string]Resource { return map[string]Resource{ + "AWS::ACMPCA::Certificate": &acmpca.Certificate{}, + "AWS::ACMPCA::CertificateAuthority": &acmpca.CertificateAuthority{}, + "AWS::ACMPCA::CertificateAuthorityActivation": &acmpca.CertificateAuthorityActivation{}, "AWS::AccessAnalyzer::Analyzer": &accessanalyzer.Analyzer{}, "AWS::AmazonMQ::Broker": &amazonmq.Broker{}, "AWS::AmazonMQ::Configuration": &amazonmq.Configuration{}, @@ -608,6 +612,78 @@ func AllResources() map[string]Resource { } } +// GetAllACMPCACertificateResources retrieves all acmpca.Certificate items from an AWS CloudFormation template +func (t *Template) GetAllACMPCACertificateResources() map[string]*acmpca.Certificate { + results := map[string]*acmpca.Certificate{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *acmpca.Certificate: + results[name] = resource + } + } + return results +} + +// GetACMPCACertificateWithName retrieves all acmpca.Certificate items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetACMPCACertificateWithName(name string) (*acmpca.Certificate, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *acmpca.Certificate: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type acmpca.Certificate not found", name) +} + +// GetAllACMPCACertificateAuthorityResources retrieves all acmpca.CertificateAuthority items from an AWS CloudFormation template +func (t *Template) GetAllACMPCACertificateAuthorityResources() map[string]*acmpca.CertificateAuthority { + results := map[string]*acmpca.CertificateAuthority{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *acmpca.CertificateAuthority: + results[name] = resource + } + } + return results +} + +// GetACMPCACertificateAuthorityWithName retrieves all acmpca.CertificateAuthority items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetACMPCACertificateAuthorityWithName(name string) (*acmpca.CertificateAuthority, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *acmpca.CertificateAuthority: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type acmpca.CertificateAuthority not found", name) +} + +// GetAllACMPCACertificateAuthorityActivationResources retrieves all acmpca.CertificateAuthorityActivation items from an AWS CloudFormation template +func (t *Template) GetAllACMPCACertificateAuthorityActivationResources() map[string]*acmpca.CertificateAuthorityActivation { + results := map[string]*acmpca.CertificateAuthorityActivation{} + for name, untyped := range t.Resources { + switch resource := untyped.(type) { + case *acmpca.CertificateAuthorityActivation: + results[name] = resource + } + } + return results +} + +// GetACMPCACertificateAuthorityActivationWithName retrieves all acmpca.CertificateAuthorityActivation items from an AWS CloudFormation template +// whose logical ID matches the provided name. Returns an error if not found. +func (t *Template) GetACMPCACertificateAuthorityActivationWithName(name string) (*acmpca.CertificateAuthorityActivation, error) { + if untyped, ok := t.Resources[name]; ok { + switch resource := untyped.(type) { + case *acmpca.CertificateAuthorityActivation: + return resource, nil + } + } + return nil, fmt.Errorf("resource %q of type acmpca.CertificateAuthorityActivation not found", name) +} + // GetAllAccessAnalyzerAnalyzerResources retrieves all accessanalyzer.Analyzer items from an AWS CloudFormation template func (t *Template) GetAllAccessAnalyzerAnalyzerResources() map[string]*accessanalyzer.Analyzer { results := map[string]*accessanalyzer.Analyzer{} diff --git a/cloudformation/cognito/aws-cognito-userpool.go b/cloudformation/cognito/aws-cognito-userpool.go index 360b36fe14..8d7e1a066b 100644 --- a/cloudformation/cognito/aws-cognito-userpool.go +++ b/cloudformation/cognito/aws-cognito-userpool.go @@ -12,6 +12,11 @@ import ( // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html type UserPool struct { + // AccountRecoverySetting AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-accountrecoverysetting + AccountRecoverySetting *UserPool_AccountRecoverySetting `json:"AccountRecoverySetting,omitempty"` + // AdminCreateUserConfig AWS CloudFormation Property // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html#cfn-cognito-userpool-admincreateuserconfig diff --git a/cloudformation/cognito/aws-cognito-userpool_accountrecoverysetting.go b/cloudformation/cognito/aws-cognito-userpool_accountrecoverysetting.go new file mode 100644 index 0000000000..1b61f8ba09 --- /dev/null +++ b/cloudformation/cognito/aws-cognito-userpool_accountrecoverysetting.go @@ -0,0 +1,32 @@ +package cognito + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// UserPool_AccountRecoverySetting AWS CloudFormation Resource (AWS::Cognito::UserPool.AccountRecoverySetting) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-accountrecoverysetting.html +type UserPool_AccountRecoverySetting struct { + + // RecoveryMechanisms AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-accountrecoverysetting.html#cfn-cognito-userpool-accountrecoverysetting-recoverymechanisms + RecoveryMechanisms []UserPool_RecoveryOption `json:"RecoveryMechanisms,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *UserPool_AccountRecoverySetting) AWSCloudFormationType() string { + return "AWS::Cognito::UserPool.AccountRecoverySetting" +} diff --git a/cloudformation/cognito/aws-cognito-userpool_recoveryoption.go b/cloudformation/cognito/aws-cognito-userpool_recoveryoption.go new file mode 100644 index 0000000000..af07c8f325 --- /dev/null +++ b/cloudformation/cognito/aws-cognito-userpool_recoveryoption.go @@ -0,0 +1,37 @@ +package cognito + +import ( + "github.com/awslabs/goformation/v4/cloudformation/policies" +) + +// UserPool_RecoveryOption AWS CloudFormation Resource (AWS::Cognito::UserPool.RecoveryOption) +// See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-recoveryoption.html +type UserPool_RecoveryOption struct { + + // Name AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-recoveryoption.html#cfn-cognito-userpool-recoveryoption-name + Name string `json:"Name,omitempty"` + + // Priority AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-userpool-recoveryoption.html#cfn-cognito-userpool-recoveryoption-priority + Priority int `json:"Priority,omitempty"` + + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy + AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` + + // AWSCloudFormationDependsOn stores the logical ID of the resources to be created before this resource + AWSCloudFormationDependsOn []string `json:"-"` + + // AWSCloudFormationMetadata stores structured data associated with this resource + AWSCloudFormationMetadata map[string]interface{} `json:"-"` + + // AWSCloudFormationCondition stores the logical ID of the condition that must be satisfied for this resource to be created + AWSCloudFormationCondition string `json:"-"` +} + +// AWSCloudFormationType returns the AWS CloudFormation resource type +func (r *UserPool_RecoveryOption) AWSCloudFormationType() string { + return "AWS::Cognito::UserPool.RecoveryOption" +} diff --git a/cloudformation/transfer/aws-transfer-server_endpointdetails.go b/cloudformation/transfer/aws-transfer-server_endpointdetails.go index 0ac386be77..ae7b789d4f 100644 --- a/cloudformation/transfer/aws-transfer-server_endpointdetails.go +++ b/cloudformation/transfer/aws-transfer-server_endpointdetails.go @@ -8,11 +8,26 @@ import ( // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html type Server_EndpointDetails struct { + // AddressAllocationIds AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-addressallocationids + AddressAllocationIds []string `json:"AddressAllocationIds,omitempty"` + + // SubnetIds AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-subnetids + SubnetIds []string `json:"SubnetIds,omitempty"` + // VpcEndpointId AWS CloudFormation Property - // Required: true + // Required: false // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-vpcendpointid VpcEndpointId string `json:"VpcEndpointId,omitempty"` + // VpcId AWS CloudFormation Property + // Required: false + // See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-server-endpointdetails.html#cfn-transfer-server-endpointdetails-vpcid + VpcId string `json:"VpcId,omitempty"` + // AWSCloudFormationDeletionPolicy represents a CloudFormation DeletionPolicy AWSCloudFormationDeletionPolicy policies.DeletionPolicy `json:"-"` diff --git a/schema/cloudformation.go b/schema/cloudformation.go index c320e3a817..442542b045 100644 --- a/schema/cloudformation.go +++ b/schema/cloudformation.go @@ -5,6 +5,214 @@ var CloudformationSchema = `{ "$id": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": { + "AWS::ACMPCA::Certificate": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "SigningAlgorithm": { + "type": "string" + }, + "TemplateArn": { + "type": "string" + }, + "Validity": { + "type": "object" + } + }, + "required": [ + "CertificateAuthorityArn", + "CertificateSigningRequest", + "SigningAlgorithm", + "Validity" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::Certificate" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "KeyAlgorithm": { + "type": "string" + }, + "RevocationConfiguration": { + "type": "object" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "KeyAlgorithm", + "SigningAlgorithm", + "Subject", + "Type" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthority" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthorityActivation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Certificate": { + "type": "string" + }, + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateChain": { + "type": "string" + }, + "Status": { + "type": "string" + } + }, + "required": [ + "Certificate", + "CertificateAuthorityArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthorityActivation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::AccessAnalyzer::Analyzer": { "additionalProperties": false, "properties": { @@ -12942,6 +13150,9 @@ var CloudformationSchema = `{ "Properties": { "additionalProperties": false, "properties": { + "AccountRecoverySetting": { + "$ref": "#/definitions/AWS::Cognito::UserPool.AccountRecoverySetting" + }, "AdminCreateUserConfig": { "$ref": "#/definitions/AWS::Cognito::UserPool.AdminCreateUserConfig" }, @@ -13032,6 +13243,18 @@ var CloudformationSchema = `{ ], "type": "object" }, + "AWS::Cognito::UserPool.AccountRecoverySetting": { + "additionalProperties": false, + "properties": { + "RecoveryMechanisms": { + "items": { + "$ref": "#/definitions/AWS::Cognito::UserPool.RecoveryOption" + }, + "type": "array" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.AdminCreateUserConfig": { "additionalProperties": false, "properties": { @@ -13176,6 +13399,18 @@ var CloudformationSchema = `{ }, "type": "object" }, + "AWS::Cognito::UserPool.RecoveryOption": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Priority": { + "type": "number" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.SchemaAttribute": { "additionalProperties": false, "properties": { @@ -54725,13 +54960,25 @@ var CloudformationSchema = `{ "AWS::Transfer::Server.EndpointDetails": { "additionalProperties": false, "properties": { + "AddressAllocationIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + }, "VpcEndpointId": { "type": "string" + }, + "VpcId": { + "type": "string" } }, - "required": [ - "VpcEndpointId" - ], "type": "object" }, "AWS::Transfer::Server.IdentityProviderDetails": { @@ -58269,6 +58516,15 @@ var CloudformationSchema = `{ "patternProperties": { "^[a-zA-Z0-9]+$": { "anyOf": [ + { + "$ref": "#/definitions/AWS::ACMPCA::Certificate" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthorityActivation" + }, { "$ref": "#/definitions/AWS::AccessAnalyzer::Analyzer" }, diff --git a/schema/cloudformation.schema.json b/schema/cloudformation.schema.json index 5f9d9e8a55..f8989a8b35 100644 --- a/schema/cloudformation.schema.json +++ b/schema/cloudformation.schema.json @@ -2,6 +2,214 @@ "$id": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": { + "AWS::ACMPCA::Certificate": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "SigningAlgorithm": { + "type": "string" + }, + "TemplateArn": { + "type": "string" + }, + "Validity": { + "type": "object" + } + }, + "required": [ + "CertificateAuthorityArn", + "CertificateSigningRequest", + "SigningAlgorithm", + "Validity" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::Certificate" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "KeyAlgorithm": { + "type": "string" + }, + "RevocationConfiguration": { + "type": "object" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "KeyAlgorithm", + "SigningAlgorithm", + "Subject", + "Type" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthority" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthorityActivation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Certificate": { + "type": "string" + }, + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateChain": { + "type": "string" + }, + "Status": { + "type": "string" + } + }, + "required": [ + "Certificate", + "CertificateAuthorityArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthorityActivation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::AccessAnalyzer::Analyzer": { "additionalProperties": false, "properties": { @@ -12939,6 +13147,9 @@ "Properties": { "additionalProperties": false, "properties": { + "AccountRecoverySetting": { + "$ref": "#/definitions/AWS::Cognito::UserPool.AccountRecoverySetting" + }, "AdminCreateUserConfig": { "$ref": "#/definitions/AWS::Cognito::UserPool.AdminCreateUserConfig" }, @@ -13029,6 +13240,18 @@ ], "type": "object" }, + "AWS::Cognito::UserPool.AccountRecoverySetting": { + "additionalProperties": false, + "properties": { + "RecoveryMechanisms": { + "items": { + "$ref": "#/definitions/AWS::Cognito::UserPool.RecoveryOption" + }, + "type": "array" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.AdminCreateUserConfig": { "additionalProperties": false, "properties": { @@ -13173,6 +13396,18 @@ }, "type": "object" }, + "AWS::Cognito::UserPool.RecoveryOption": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Priority": { + "type": "number" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.SchemaAttribute": { "additionalProperties": false, "properties": { @@ -54722,13 +54957,25 @@ "AWS::Transfer::Server.EndpointDetails": { "additionalProperties": false, "properties": { + "AddressAllocationIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + }, "VpcEndpointId": { "type": "string" + }, + "VpcId": { + "type": "string" } }, - "required": [ - "VpcEndpointId" - ], "type": "object" }, "AWS::Transfer::Server.IdentityProviderDetails": { @@ -58266,6 +58513,15 @@ "patternProperties": { "^[a-zA-Z0-9]+$": { "anyOf": [ + { + "$ref": "#/definitions/AWS::ACMPCA::Certificate" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthorityActivation" + }, { "$ref": "#/definitions/AWS::AccessAnalyzer::Analyzer" }, diff --git a/schema/sam.go b/schema/sam.go index c909cfd918..9bacb63aa2 100644 --- a/schema/sam.go +++ b/schema/sam.go @@ -5,6 +5,214 @@ var SamSchema = `{ "$id": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": { + "AWS::ACMPCA::Certificate": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "SigningAlgorithm": { + "type": "string" + }, + "TemplateArn": { + "type": "string" + }, + "Validity": { + "type": "object" + } + }, + "required": [ + "CertificateAuthorityArn", + "CertificateSigningRequest", + "SigningAlgorithm", + "Validity" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::Certificate" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "KeyAlgorithm": { + "type": "string" + }, + "RevocationConfiguration": { + "type": "object" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "KeyAlgorithm", + "SigningAlgorithm", + "Subject", + "Type" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthority" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthorityActivation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Certificate": { + "type": "string" + }, + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateChain": { + "type": "string" + }, + "Status": { + "type": "string" + } + }, + "required": [ + "Certificate", + "CertificateAuthorityArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthorityActivation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::AccessAnalyzer::Analyzer": { "additionalProperties": false, "properties": { @@ -12942,6 +13150,9 @@ var SamSchema = `{ "Properties": { "additionalProperties": false, "properties": { + "AccountRecoverySetting": { + "$ref": "#/definitions/AWS::Cognito::UserPool.AccountRecoverySetting" + }, "AdminCreateUserConfig": { "$ref": "#/definitions/AWS::Cognito::UserPool.AdminCreateUserConfig" }, @@ -13032,6 +13243,18 @@ var SamSchema = `{ ], "type": "object" }, + "AWS::Cognito::UserPool.AccountRecoverySetting": { + "additionalProperties": false, + "properties": { + "RecoveryMechanisms": { + "items": { + "$ref": "#/definitions/AWS::Cognito::UserPool.RecoveryOption" + }, + "type": "array" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.AdminCreateUserConfig": { "additionalProperties": false, "properties": { @@ -13176,6 +13399,18 @@ var SamSchema = `{ }, "type": "object" }, + "AWS::Cognito::UserPool.RecoveryOption": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Priority": { + "type": "number" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.SchemaAttribute": { "additionalProperties": false, "properties": { @@ -56019,13 +56254,25 @@ var SamSchema = `{ "AWS::Transfer::Server.EndpointDetails": { "additionalProperties": false, "properties": { + "AddressAllocationIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + }, "VpcEndpointId": { "type": "string" + }, + "VpcId": { + "type": "string" } }, - "required": [ - "VpcEndpointId" - ], "type": "object" }, "AWS::Transfer::Server.IdentityProviderDetails": { @@ -59563,6 +59810,15 @@ var SamSchema = `{ "patternProperties": { "^[a-zA-Z0-9]+$": { "anyOf": [ + { + "$ref": "#/definitions/AWS::ACMPCA::Certificate" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthorityActivation" + }, { "$ref": "#/definitions/AWS::AccessAnalyzer::Analyzer" }, diff --git a/schema/sam.schema.json b/schema/sam.schema.json index 860fe005b0..ab158f5f22 100644 --- a/schema/sam.schema.json +++ b/schema/sam.schema.json @@ -2,6 +2,214 @@ "$id": "http://json-schema.org/draft-04/schema#", "additionalProperties": false, "definitions": { + "AWS::ACMPCA::Certificate": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateSigningRequest": { + "type": "string" + }, + "SigningAlgorithm": { + "type": "string" + }, + "TemplateArn": { + "type": "string" + }, + "Validity": { + "type": "object" + } + }, + "required": [ + "CertificateAuthorityArn", + "CertificateSigningRequest", + "SigningAlgorithm", + "Validity" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::Certificate" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthority": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "KeyAlgorithm": { + "type": "string" + }, + "RevocationConfiguration": { + "type": "object" + }, + "SigningAlgorithm": { + "type": "string" + }, + "Subject": { + "type": "object" + }, + "Tags": { + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "Type": { + "type": "string" + } + }, + "required": [ + "KeyAlgorithm", + "SigningAlgorithm", + "Subject", + "Type" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthority" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, + "AWS::ACMPCA::CertificateAuthorityActivation": { + "additionalProperties": false, + "properties": { + "DeletionPolicy": { + "enum": [ + "Delete", + "Retain", + "Snapshot" + ], + "type": "string" + }, + "DependsOn": { + "anyOf": [ + { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + { + "items": { + "pattern": "^[a-zA-Z0-9]+$", + "type": "string" + }, + "type": "array" + } + ] + }, + "Metadata": { + "type": "object" + }, + "Properties": { + "additionalProperties": false, + "properties": { + "Certificate": { + "type": "string" + }, + "CertificateAuthorityArn": { + "type": "string" + }, + "CertificateChain": { + "type": "string" + }, + "Status": { + "type": "string" + } + }, + "required": [ + "Certificate", + "CertificateAuthorityArn" + ], + "type": "object" + }, + "Type": { + "enum": [ + "AWS::ACMPCA::CertificateAuthorityActivation" + ], + "type": "string" + } + }, + "required": [ + "Type", + "Properties" + ], + "type": "object" + }, "AWS::AccessAnalyzer::Analyzer": { "additionalProperties": false, "properties": { @@ -12939,6 +13147,9 @@ "Properties": { "additionalProperties": false, "properties": { + "AccountRecoverySetting": { + "$ref": "#/definitions/AWS::Cognito::UserPool.AccountRecoverySetting" + }, "AdminCreateUserConfig": { "$ref": "#/definitions/AWS::Cognito::UserPool.AdminCreateUserConfig" }, @@ -13029,6 +13240,18 @@ ], "type": "object" }, + "AWS::Cognito::UserPool.AccountRecoverySetting": { + "additionalProperties": false, + "properties": { + "RecoveryMechanisms": { + "items": { + "$ref": "#/definitions/AWS::Cognito::UserPool.RecoveryOption" + }, + "type": "array" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.AdminCreateUserConfig": { "additionalProperties": false, "properties": { @@ -13173,6 +13396,18 @@ }, "type": "object" }, + "AWS::Cognito::UserPool.RecoveryOption": { + "additionalProperties": false, + "properties": { + "Name": { + "type": "string" + }, + "Priority": { + "type": "number" + } + }, + "type": "object" + }, "AWS::Cognito::UserPool.SchemaAttribute": { "additionalProperties": false, "properties": { @@ -56016,13 +56251,25 @@ "AWS::Transfer::Server.EndpointDetails": { "additionalProperties": false, "properties": { + "AddressAllocationIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "SubnetIds": { + "items": { + "type": "string" + }, + "type": "array" + }, "VpcEndpointId": { "type": "string" + }, + "VpcId": { + "type": "string" } }, - "required": [ - "VpcEndpointId" - ], "type": "object" }, "AWS::Transfer::Server.IdentityProviderDetails": { @@ -59560,6 +59807,15 @@ "patternProperties": { "^[a-zA-Z0-9]+$": { "anyOf": [ + { + "$ref": "#/definitions/AWS::ACMPCA::Certificate" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthority" + }, + { + "$ref": "#/definitions/AWS::ACMPCA::CertificateAuthorityActivation" + }, { "$ref": "#/definitions/AWS::AccessAnalyzer::Analyzer" },