-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathmanifest_template.yml
More file actions
228 lines (223 loc) · 6.46 KB
/
manifest_template.yml
File metadata and controls
228 lines (223 loc) · 6.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# Templating vars - Immunisation fhir API
APIGEE_ENVIRONMENTS:
- name: internal-dev
has_mock_auth: true
display_name_suffix: Internal Development
ratelimiting:
immunisation-fhir-api-internal-dev:
# 5 requests per second on average
quota:
enabled: true
limit: 300
interval: 1
timeunit: minute
# 10 requests per second max
spikeArrest:
enabled: true
ratelimit: 600pm
app:
quota:
enabled: false
spikeArrest:
enabled: false
- name: internal-qa
has_mock_auth: true
display_name_suffix: Internal Quality Assurance
ratelimiting:
immunisation-fhir-api-internal-qa:
# 100 requests per second on average
quota:
enabled: true
limit: 6000
interval: 1
timeunit: minute
# 200 requests per second max
spikeArrest:
enabled: true
ratelimit: 12000pm
app:
# 50 requests per second on average
quota:
enabled: true
limit: 3000
interval: 1
timeunit: minute
# 100 requests per second max
spikeArrest:
enabled: true
ratelimit: 6000pm
- name: internal-dev-sandbox
display_name_suffix: Internal Development Sandbox
# Ratelimiting is currently disabled for all sandbox environments
ratelimiting:
immunisation-fhir-api-internal-dev-sandbox:
quota:
enabled: false
spikeArrest:
enabled: false
app:
quota:
enabled: false
spikeArrest:
enabled: false
- name: int
has_mock_auth: false
display_name_suffix: Integration Testing
ratelimiting:
immunisation-fhir-api-int:
# 100 requests per second on average
quota:
enabled: true
limit: 6000
interval: 1
timeunit: minute
# 200 requests per second max
spikeArrest:
enabled: true
ratelimit: 12000pm
app:
# 50 requests per second on average
quota:
enabled: true
limit: 3000
interval: 1
timeunit: minute
# 100 requests per second max
spikeArrest:
enabled: true
ratelimit: 6000pm
- name: sandbox
display_name_suffix: Sandbox
portal_visibility: false
# Ratelimiting is currently disabled for sandbox environments
ratelimiting:
immunisation-fhir-api-sandbox:
quota:
enabled: false
spikeArrest:
enabled: false
app:
quota:
enabled: false
spikeArrest:
enabled: false
- name: ref
has_mock_auth: false
display_name_suffix: Reference
ratelimiting:
immunisation-fhir-api-ref:
# 500 requests per second on average
quota:
enabled: true
limit: 30000
interval: 1
timeunit: minute
# 1000 requests per second max
spikeArrest:
enabled: true
ratelimit: 60000pm
app:
quota:
enabled: false
spikeArrest:
enabled: false
- name: prod
has_mock_auth: false
approval_type: manual
display_name_suffix: production
ratelimiting:
immunisation-fhir-api-prod:
# 100 requests per second on average
quota:
enabled: true
limit: 6000
interval: 1
timeunit: minute
# 200 requests per second max
spikeArrest:
enabled: true
ratelimit: 12000pm
app:
# 20 requests per second on average
quota:
enabled: true
limit: 1200
interval: 1
timeunit: minute
# 40 requests per second max
spikeArrest:
enabled: true
ratelimit: 2400pm
ACCESS_MODES:
- name: user-restricted
nameSuffix: ''
displayName: Authorisation
scopes: [
'urn:nhsd:apim:user-nhs-id:aal3:immunisation-fhir-api',
'urn:nhsd:apim:user-nhs-cis2:aal3:immunisation-fhir-api'
]
requireCallbackUrl: true
description: User restricted
- name: application-restricted
nameSuffix: -application-restricted
displayName: Application-Restricted
scopes: ['urn:nhsd:apim:app:level3:immunisation-fhir-api']
requireCallbackUrl: false
description: Application Restricted
# - name: patient-access
# nameSuffix: -patient-access
# displayName: Patient-Access
# scopes: ['urn:nhsd:apim:user-nhs-login:P9:immunisation-fhir-api']
# requireCallbackUrl: false
# description: Patient Access
---
# Manifest definition
meta:
schema_version: 1
api:
name: immunisation-fhir-api
guid: 87a3e100-ceb6-42bd-bf3f-869ee2c1e0c7
spec_guids:
- e8a8dc7a-3c26-408c-8318-457cd2758790
apigee:
environments:
{% for env in APIGEE_ENVIRONMENTS %}
{% set portal_visibility = env.portal_visibility | default('true') %}
- name: {{ env.name }}
products:
{% set approval_type = env.approval_type | default('auto') %}
{% for mode in ACCESS_MODES %}
- name: immunisation-fhir-api-{{ env.name }}{{ mode.nameSuffix }}
approvalType: {{ approval_type }}
attributes:
- name: access
value: public
- name: ratelimiting
value: {{ env.ratelimiting }}
description: {{ mode.description }}
displayName: Immunisation Fhir API - {{ mode.displayName }} ({{ env.display_name_suffix }})
environments: [ {{ env.name }} ]
proxies:
{% if env.has_mock_auth | default(false) %}
- identity-service-mock-{{ env.name }}
- immunisation-fhir-api-{{ env.name }}
{% else %}
- identity-service-{{ env.name }}
- immunisation-fhir-api-{{ env.name }}
{% endif %}
scopes: {{ mode.scopes }}
{% endfor %}
specs:
- name: immunisation-fhir-api-{{ env.name }}
path: immunisation-fhir-api.json
api_catalog:
{% for mode in ACCESS_MODES %}
- edgeAPIProductName: immunisation-fhir-api-{{ env.name }}{{ mode.nameSuffix }}
anonAllowed: true
description: Immunisation fhir API - {{ mode.displayName|lower }} access mode - {{ env.display_name_suffix|lower }} environment
requireCallbackUrl: {{ mode.requireCallbackUrl }}
title: Immunisation fhir Api - {{ mode.displayName }} ({{ env.display_name_suffix }})
visibility: {{ portal_visibility }}
specId: immunisation-fhir-api-{{ env.name }}
{% endfor %}
{% endfor %}