1{
2    "version": "1.0",
3    "parameters": {
4        "Region": {
5            "builtIn": "AWS::Region",
6            "required": false,
7            "documentation": "The AWS region used to dispatch the request.",
8            "type": "String"
9        },
10        "UseFIPS": {
11            "builtIn": "AWS::UseFIPS",
12            "required": true,
13            "default": false,
14            "documentation": "When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.",
15            "type": "Boolean"
16        },
17        "UseDualStack": {
18            "builtIn": "AWS::UseDualStack",
19            "required": true,
20            "default": false,
21            "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.",
22            "type": "Boolean"
23        },
24        "Endpoint": {
25            "builtIn": "SDK::Endpoint",
26            "required": false,
27            "documentation": "Override the endpoint used to send this request",
28            "type": "String"
29        },
30        "ApiType": {
31            "required": true,
32            "documentation": "Parameter to determine whether current API is a control plane or dataplane API",
33            "type": "String"
34        }
35    },
36    "rules": [
37        {
38            "conditions": [
39                {
40                    "fn": "isSet",
41                    "argv": [
42                        {
43                            "ref": "Endpoint"
44                        }
45                    ]
46                }
47            ],
48            "rules": [
49                {
50                    "conditions": [
51                        {
52                            "fn": "booleanEquals",
53                            "argv": [
54                                {
55                                    "ref": "UseFIPS"
56                                },
57                                true
58                            ]
59                        }
60                    ],
61                    "error": "Invalid Configuration: FIPS and custom endpoint are not supported",
62                    "type": "error"
63                },
64                {
65                    "conditions": [
66                        {
67                            "fn": "booleanEquals",
68                            "argv": [
69                                {
70                                    "ref": "UseDualStack"
71                                },
72                                true
73                            ]
74                        }
75                    ],
76                    "error": "Invalid Configuration: Dualstack and custom endpoint are not supported",
77                    "type": "error"
78                },
79                {
80                    "conditions": [],
81                    "endpoint": {
82                        "url": {
83                            "ref": "Endpoint"
84                        },
85                        "properties": {},
86                        "headers": {}
87                    },
88                    "type": "endpoint"
89                }
90            ],
91            "type": "tree"
92        },
93        {
94            "conditions": [
95                {
96                    "fn": "isSet",
97                    "argv": [
98                        {
99                            "ref": "Region"
100                        }
101                    ]
102                }
103            ],
104            "rules": [
105                {
106                    "conditions": [
107                        {
108                            "fn": "aws.partition",
109                            "argv": [
110                                {
111                                    "ref": "Region"
112                                }
113                            ],
114                            "assign": "PartitionResult"
115                        }
116                    ],
117                    "rules": [
118                        {
119                            "conditions": [
120                                {
121                                    "fn": "booleanEquals",
122                                    "argv": [
123                                        {
124                                            "ref": "UseFIPS"
125                                        },
126                                        true
127                                    ]
128                                },
129                                {
130                                    "fn": "booleanEquals",
131                                    "argv": [
132                                        {
133                                            "ref": "UseDualStack"
134                                        },
135                                        true
136                                    ]
137                                }
138                            ],
139                            "rules": [
140                                {
141                                    "conditions": [
142                                        {
143                                            "fn": "booleanEquals",
144                                            "argv": [
145                                                true,
146                                                {
147                                                    "fn": "getAttr",
148                                                    "argv": [
149                                                        {
150                                                            "ref": "PartitionResult"
151                                                        },
152                                                        "supportsFIPS"
153                                                    ]
154                                                }
155                                            ]
156                                        },
157                                        {
158                                            "fn": "booleanEquals",
159                                            "argv": [
160                                                true,
161                                                {
162                                                    "fn": "getAttr",
163                                                    "argv": [
164                                                        {
165                                                            "ref": "PartitionResult"
166                                                        },
167                                                        "supportsDualStack"
168                                                    ]
169                                                }
170                                            ]
171                                        }
172                                    ],
173                                    "rules": [
174                                        {
175                                            "conditions": [
176                                                {
177                                                    "fn": "stringEquals",
178                                                    "argv": [
179                                                        {
180                                                            "ref": "ApiType"
181                                                        },
182                                                        "ControlPlane"
183                                                    ]
184                                                }
185                                            ],
186                                            "endpoint": {
187                                                "url": "https://neptune-graph-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",
188                                                "properties": {},
189                                                "headers": {}
190                                            },
191                                            "type": "endpoint"
192                                        },
193                                        {
194                                            "conditions": [
195                                                {
196                                                    "fn": "stringEquals",
197                                                    "argv": [
198                                                        {
199                                                            "ref": "ApiType"
200                                                        },
201                                                        "DataPlane"
202                                                    ]
203                                                }
204                                            ],
205                                            "error": "Invalid Configuration: fips endpoint is not supported for this API",
206                                            "type": "error"
207                                        },
208                                        {
209                                            "conditions": [],
210                                            "error": "Invalid Configuration: Unknown ApiType",
211                                            "type": "error"
212                                        }
213                                    ],
214                                    "type": "tree"
215                                },
216                                {
217                                    "conditions": [],
218                                    "error": "FIPS and DualStack are enabled, but this partition does not support one or both",
219                                    "type": "error"
220                                }
221                            ],
222                            "type": "tree"
223                        },
224                        {
225                            "conditions": [
226                                {
227                                    "fn": "booleanEquals",
228                                    "argv": [
229                                        {
230                                            "ref": "UseFIPS"
231                                        },
232                                        true
233                                    ]
234                                }
235                            ],
236                            "rules": [
237                                {
238                                    "conditions": [
239                                        {
240                                            "fn": "booleanEquals",
241                                            "argv": [
242                                                true,
243                                                {
244                                                    "fn": "getAttr",
245                                                    "argv": [
246                                                        {
247                                                            "ref": "PartitionResult"
248                                                        },
249                                                        "supportsFIPS"
250                                                    ]
251                                                }
252                                            ]
253                                        }
254                                    ],
255                                    "rules": [
256                                        {
257                                            "conditions": [
258                                                {
259                                                    "fn": "stringEquals",
260                                                    "argv": [
261                                                        {
262                                                            "ref": "ApiType"
263                                                        },
264                                                        "ControlPlane"
265                                                    ]
266                                                }
267                                            ],
268                                            "endpoint": {
269                                                "url": "https://neptune-graph-fips.{Region}.{PartitionResult#dnsSuffix}",
270                                                "properties": {},
271                                                "headers": {}
272                                            },
273                                            "type": "endpoint"
274                                        },
275                                        {
276                                            "conditions": [
277                                                {
278                                                    "fn": "stringEquals",
279                                                    "argv": [
280                                                        {
281                                                            "ref": "ApiType"
282                                                        },
283                                                        "DataPlane"
284                                                    ]
285                                                }
286                                            ],
287                                            "error": "Invalid Configuration: fips endpoint is not supported for this API",
288                                            "type": "error"
289                                        },
290                                        {
291                                            "conditions": [],
292                                            "error": "Invalid Configuration: Unknown ApiType",
293                                            "type": "error"
294                                        }
295                                    ],
296                                    "type": "tree"
297                                },
298                                {
299                                    "conditions": [],
300                                    "error": "FIPS is enabled but this partition does not support FIPS",
301                                    "type": "error"
302                                }
303                            ],
304                            "type": "tree"
305                        },
306                        {
307                            "conditions": [
308                                {
309                                    "fn": "booleanEquals",
310                                    "argv": [
311                                        {
312                                            "ref": "UseDualStack"
313                                        },
314                                        true
315                                    ]
316                                }
317                            ],
318                            "rules": [
319                                {
320                                    "conditions": [
321                                        {
322                                            "fn": "booleanEquals",
323                                            "argv": [
324                                                true,
325                                                {
326                                                    "fn": "getAttr",
327                                                    "argv": [
328                                                        {
329                                                            "ref": "PartitionResult"
330                                                        },
331                                                        "supportsDualStack"
332                                                    ]
333                                                }
334                                            ]
335                                        }
336                                    ],
337                                    "rules": [
338                                        {
339                                            "conditions": [
340                                                {
341                                                    "fn": "stringEquals",
342                                                    "argv": [
343                                                        {
344                                                            "ref": "ApiType"
345                                                        },
346                                                        "ControlPlane"
347                                                    ]
348                                                }
349                                            ],
350                                            "endpoint": {
351                                                "url": "https://neptune-graph.{Region}.{PartitionResult#dualStackDnsSuffix}",
352                                                "properties": {},
353                                                "headers": {}
354                                            },
355                                            "type": "endpoint"
356                                        },
357                                        {
358                                            "conditions": [
359                                                {
360                                                    "fn": "stringEquals",
361                                                    "argv": [
362                                                        {
363                                                            "ref": "ApiType"
364                                                        },
365                                                        "DataPlane"
366                                                    ]
367                                                }
368                                            ],
369                                            "endpoint": {
370                                                "url": "https://neptune-graph.{Region}.on.aws",
371                                                "properties": {},
372                                                "headers": {}
373                                            },
374                                            "type": "endpoint"
375                                        },
376                                        {
377                                            "conditions": [],
378                                            "error": "Invalid Configuration: Unknown ApiType",
379                                            "type": "error"
380                                        }
381                                    ],
382                                    "type": "tree"
383                                },
384                                {
385                                    "conditions": [],
386                                    "error": "DualStack is enabled but this partition does not support DualStack",
387                                    "type": "error"
388                                }
389                            ],
390                            "type": "tree"
391                        },
392                        {
393                            "conditions": [
394                                {
395                                    "fn": "stringEquals",
396                                    "argv": [
397                                        {
398                                            "ref": "ApiType"
399                                        },
400                                        "ControlPlane"
401                                    ]
402                                }
403                            ],
404                            "endpoint": {
405                                "url": "https://neptune-graph.{Region}.{PartitionResult#dnsSuffix}",
406                                "properties": {},
407                                "headers": {}
408                            },
409                            "type": "endpoint"
410                        },
411                        {
412                            "conditions": [
413                                {
414                                    "fn": "stringEquals",
415                                    "argv": [
416                                        {
417                                            "ref": "ApiType"
418                                        },
419                                        "DataPlane"
420                                    ]
421                                }
422                            ],
423                            "endpoint": {
424                                "url": "https://{Region}.neptune-graph.{PartitionResult#dnsSuffix}",
425                                "properties": {},
426                                "headers": {}
427                            },
428                            "type": "endpoint"
429                        },
430                        {
431                            "conditions": [],
432                            "error": "Invalid Configuration: Unknown ApiType",
433                            "type": "error"
434                        }
435                    ],
436                    "type": "tree"
437                }
438            ],
439            "type": "tree"
440        },
441        {
442            "conditions": [],
443            "error": "Invalid Configuration: Missing Region",
444            "type": "error"
445        }
446    ]
447}