11// Copyright (c) The LEGO Group. All rights reserved.
2-
32namespace LEGO . AsyncAPI . Bindings . Sns
43{
54 using System ;
65 using System . Collections . Generic ;
76 using LEGO . AsyncAPI . Attributes ;
7+ using LEGO . AsyncAPI . Models ;
88 using LEGO . AsyncAPI . Models . Interfaces ;
99 using LEGO . AsyncAPI . Writers ;
1010
1111 public class Statement : IAsyncApiExtensible
1212 {
13+ /// <summary>
14+ /// Indicates whether the policy allows or denies access.
15+ /// </summary>
1316 public Effect Effect { get ; set ; }
1417
1518 /// <summary>
16- /// The AWS account or resource ARN that this statement applies to.
19+ /// The AWS account(s) or resource ARN(s) that this statement applies to.
1720 /// </summary>
18- // public StringOrStringList Principal { get; set; }
19- public StringOrStringList Principal { get ; set ; }
21+ public Principal Principal { get ; set ; }
2022
2123 /// <summary>
2224 /// The SNS permission being allowed or denied e.g. sns:Publish.
2325 /// </summary>
2426 public StringOrStringList Action { get ; set ; }
2527
28+ /// <summary>
29+ /// The resource(s) that this policy applies to.
30+ /// </summary>
31+ public StringOrStringList ? Resource { get ; set ; }
32+
33+ /// <summary>
34+ /// Specific circumstances under which the policy grants permission.
35+ /// </summary>
36+ public AsyncApiAny ? Condition { get ; set ; }
37+
2638 public IDictionary < string , IAsyncApiExtension > Extensions { get ; set ; } = new Dictionary < string , IAsyncApiExtension > ( ) ;
2739
2840 public void Serialize ( IAsyncApiWriter writer )
@@ -34,8 +46,10 @@ public void Serialize(IAsyncApiWriter writer)
3446
3547 writer . WriteStartObject ( ) ;
3648 writer . WriteRequiredProperty ( "effect" , this . Effect . GetDisplayName ( ) ) ;
37- writer . WriteRequiredObject ( "principal" , this . Principal , ( w , t ) => t . Value . Write ( w ) ) ;
49+ writer . WriteRequiredObject ( "principal" , this . Principal , ( w , t ) => t . Serialize ( w ) ) ;
3850 writer . WriteRequiredObject ( "action" , this . Action , ( w , t ) => t . Value . Write ( w ) ) ;
51+ writer . WriteOptionalObject ( "resource" , this . Resource , ( w , t ) => t ? . Value . Write ( w ) ) ;
52+ writer . WriteOptionalObject ( "condition" , this . Condition , ( w , t ) => t ? . Write ( w ) ) ;
3953 writer . WriteExtensions ( this . Extensions ) ;
4054 writer . WriteEndObject ( ) ;
4155 }
0 commit comments