1{
2    "service": {
3        "has": {
4            "Alarm": {
5                "resource": {
6                    "type": "Alarm",
7                    "identifiers": [
8                        {
9                            "target": "Name",
10                            "source": "input"
11                        }
12                    ]
13                }
14            },
15            "Metric": {
16                "resource": {
17                    "type": "Metric",
18                    "identifiers": [
19                        {
20                            "target": "Namespace",
21                            "source": "input"
22                        },
23                        {
24                            "target": "Name",
25                            "source": "input"
26                        }
27                    ]
28                }
29            }
30        },
31        "hasMany": {
32            "Alarms": {
33                "request": { "operation": "DescribeAlarms" },
34                "resource": {
35                    "type": "Alarm",
36                    "identifiers": [
37                        {
38                            "target": "Name",
39                            "source": "response",
40                            "path": "MetricAlarms[].AlarmName"
41                        }
42                    ],
43                    "path": "MetricAlarms[]"
44                }
45            },
46            "Metrics": {
47                "request": { "operation": "ListMetrics" },
48                "resource": {
49                    "type": "Metric",
50                    "identifiers": [
51                        {
52                            "target": "Namespace",
53                            "source": "response",
54                            "path": "Metrics[].Namespace"
55                        },
56                        {
57                            "target": "Name",
58                            "source": "response",
59                            "path": "Metrics[].MetricName"
60                        }
61                    ],
62                    "path": "Metrics[]"
63                }
64            }
65        }
66    },
67    "resources": {
68        "Alarm": {
69            "identifiers": [
70                {
71                    "name": "Name",
72                    "memberName": "AlarmName"
73                }
74            ],
75            "shape": "MetricAlarm",
76            "load": {
77                "request": {
78                    "operation": "DescribeAlarms",
79                    "params": [
80                        {
81                            "target": "AlarmNames[0]",
82                            "source": "identifier",
83                            "name": "Name"
84                        }
85                    ]
86                },
87                "path": "MetricAlarms[0]"
88            },
89            "actions": {
90                "Delete": {
91                    "request": {
92                        "operation": "DeleteAlarms",
93                        "params": [
94                            {
95                                "target": "AlarmNames[0]",
96                                "source": "identifier",
97                                "name": "Name"
98                            }
99                        ]
100                    }
101                },
102                "DescribeHistory": {
103                    "request": {
104                        "operation": "DescribeAlarmHistory",
105                        "params": [
106                            {
107                                "target": "AlarmName",
108                                "source": "identifier",
109                                "name": "Name"
110                            }
111                        ]
112                    }
113                },
114                "DisableActions": {
115                    "request": {
116                        "operation": "DisableAlarmActions",
117                        "params": [
118                            {
119                                "target": "AlarmNames[0]",
120                                "source": "identifier",
121                                "name": "Name"
122                            }
123                        ]
124                    }
125                },
126                "EnableActions": {
127                    "request": {
128                        "operation": "EnableAlarmActions",
129                        "params": [
130                            {
131                                "target": "AlarmNames[0]",
132                                "source": "identifier",
133                                "name": "Name"
134                            }
135                        ]
136                    }
137                },
138                "SetState": {
139                    "request": {
140                        "operation": "SetAlarmState",
141                        "params": [
142                            {
143                                "target": "AlarmName",
144                                "source": "identifier",
145                                "name": "Name"
146                            }
147                        ]
148                    }
149                }
150            },
151            "batchActions": {
152                "Delete": {
153                    "request": {
154                        "operation": "DeleteAlarms",
155                        "params": [
156                            {
157                                "target": "AlarmNames[]",
158                                "source": "identifier",
159                                "name": "Name"
160                            }
161                        ]
162                    }
163                },
164                "DisableActions": {
165                    "request": {
166                        "operation": "DisableAlarmActions",
167                        "params": [
168                            {
169                                "target": "AlarmNames[]",
170                                "source": "identifier",
171                                "name": "Name"
172                            }
173                        ]
174                    }
175                },
176                "EnableActions": {
177                    "request": {
178                        "operation": "EnableAlarmActions",
179                        "params": [
180                            {
181                                "target": "AlarmNames[]",
182                                "source": "identifier",
183                                "name": "Name"
184                            }
185                        ]
186                    }
187                }
188            },
189            "has": {
190                "Metric": {
191                    "resource": {
192                        "type": "Metric",
193                        "identifiers": [
194                            {
195                                "target": "Namespace",
196                                "source": "data",
197                                "path": "Namespace"
198                            },
199                            {
200                                "target": "Name",
201                                "source": "data",
202                                "path": "MetricName"
203                            }
204                        ]
205                    }
206                }
207            }
208        },
209        "Metric": {
210            "identifiers": [
211                {
212                    "name": "Namespace",
213                    "memberName": "Namespace"
214                },
215                {
216                    "name": "Name",
217                    "memberName": "MetricName"
218                }
219            ],
220            "shape": "Metric",
221            "load": {
222                "request": {
223                    "operation": "ListMetrics",
224                    "params": [
225                        {
226                            "target": "MetricName",
227                            "source": "identifier",
228                            "name": "Name"
229                        },
230                        {
231                            "target": "Namespace",
232                            "source": "identifier",
233                            "name": "Namespace"
234                        }
235                    ]
236                },
237                "path": "Metrics[0]"
238            },
239            "actions": {
240                "GetStatistics": {
241                    "request": {
242                        "operation": "GetMetricStatistics",
243                        "params": [
244                            {
245                                "target": "Namespace",
246                                "source": "identifier",
247                                "name": "Namespace"
248                            },
249                            {
250                                "target": "MetricName",
251                                "source": "identifier",
252                                "name": "Name"
253                            }
254                        ]
255                    }
256                },
257                "PutAlarm": {
258                    "request": {
259                        "operation": "PutMetricAlarm",
260                        "params": [
261                            {
262                                "target": "Namespace",
263                                "source": "identifier",
264                                "name": "Namespace"
265                            },
266                            {
267                                "target": "MetricName",
268                                "source": "identifier",
269                                "name": "Name"
270                            }
271                        ]
272                    },
273                    "resource": {
274                        "type": "Alarm",
275                        "identifiers": [
276                            {
277                                "target": "Name",
278                                "source": "requestParameter",
279                                "path": "AlarmName"
280                            }
281                        ]
282                    }
283                },
284                "PutData": {
285                    "request": {
286                        "operation": "PutMetricData",
287                        "params": [
288                            {
289                                "target": "Namespace",
290                                "source": "identifier",
291                                "name": "Namespace"
292                            },
293                            {
294                                "target": "MetricData[].MetricName",
295                                "source": "identifier",
296                                "name": "Name"
297                            }
298                        ]
299                    }
300                }
301            },
302            "hasMany": {
303                "Alarms": {
304                    "request": {
305                        "operation": "DescribeAlarmsForMetric",
306                        "params": [
307                            {
308                                "target": "Namespace",
309                                "source": "identifier",
310                                "name": "Namespace"
311                            },
312                            {
313                                "target": "MetricName",
314                                "source": "identifier",
315                                "name": "Name"
316                            }
317                        ]
318                    },
319                    "resource": {
320                        "type": "Alarm",
321                        "identifiers": [
322                            {
323                                "target": "Name",
324                                "source": "response",
325                                "path": "MetricAlarms[].AlarmName"
326                            }
327                        ],
328                        "path": "MetricAlarms[]"
329                    }
330                }
331            }
332        }
333    }
334}
335