-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmanifest_template.yml
More file actions
147 lines (145 loc) · 4.73 KB
/
manifest_template.yml
File metadata and controls
147 lines (145 loc) · 4.73 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
SERVICE_NAME: patient-care-aggregator-api
PRODUCT_DISPLAY_NAME: Patient Care Aggregator
DESCRIPTION: example description
APIGEE_ENVIRONMENTS:
- name: internal-dev
display_name: Internal Development
- name: internal-qa
display_name: Internal QA
- name: int
display_name: Integration Testing
- name: prod
display_name: Production
approval_type: manual
INTERNAL_DEV_VARIANTS:
- name: alpha
---
meta:
api:
name: patient-care-aggregator-api
guid: 92103283-2be2-42b3-b008-80d246d90f85
spec_guids:
- 2d4c93af-0022-47d8-b952-2bbcadbaa36a
schema_version: 1.3
apigee:
environments:
{% for ENV in APIGEE_ENVIRONMENTS %}
{% set TITLE = PRODUCT_DISPLAY_NAME + ' (' + ENV.display_name + ' Environment)' %}
{% set NAME = SERVICE_NAME + '-' + ENV.name %}
{% set approval_type = env.approval_type | default('auto') %}
{% if ENV.name == 'internal-dev' %}
- name: {{ ENV.name }}
products:
- name: {{ NAME }}
approvalType: {{ approval_type }}
attributes:
- name: access
value: public
# For a parameterised example of rate limiting per environment,
# see https://github.com/NHSDigital/personal-demographics-service-api/blob/master/manifest_template.yml
- name: ratelimiting
value:
{{ NAME }}:
quota:
enabled: true
limit: 6000
interval: 1
timeunit: minute
spikeArrest:
enabled: true
ratelimit: 12000pm
app:
quota:
enabled: true
limit: 6000
interval: 1
timeunit: minute
spikeArrest:
enabled: true
ratelimit: 12000pm
description: {{ DESCRIPTION }}
displayName: {{ TITLE }}
environments: [ {{ ENV.name }} ]
proxies:
- {{ NAME }}
- {{ SERVICE_NAME }}-alpha-{{ ENV.name }}
- {{ SERVICE_NAME }}-nft-{{ ENV.name }}
- identity-service-{{ ENV.name }}
scopes:
- 'urn:nhsd:apim:user-nhs-login:P9:{{ SERVICE_NAME }}'
specs:
- name: {{ NAME }}
path: {{ SERVICE_NAME }}-consumer-api.json
- name: {{ NAME }}-producer-api-standards
path: {{ SERVICE_NAME }}-producer-api-standards.json
- name: {{ NAME }}-record-service-api
path: {{ SERVICE_NAME }}-record-service-api.json
api_catalog:
- edgeAPIProductName: {{ NAME }}
anonAllowed: true
description: {{ DESCRIPTION }}
requireCallbackUrl: false
title: {{ TITLE }}
visibility: {{ ENV.portal_visibility | default(true) }}
specId: {{ NAME }}
{% else %}
- name: {{ ENV.name }}
products:
- name: {{ NAME }}
approvalType: {{ approval_type }}
attributes:
- name: access
value: public
# For a parameterised example of rate limiting per environment,
# see https://github.com/NHSDigital/personal-demographics-service-api/blob/master/manifest_template.yml
- name: ratelimiting
value:
{{ NAME }}:
quota:
enabled: true
limit: 6000
interval: 1
timeunit: minute
spikeArrest:
enabled: true
ratelimit: 12000pm
app:
quota:
enabled: false
limit: 6000
interval: 1
timeunit: minute
spikeArrest:
enabled: false
ratelimit: 12000pm
description: {{ DESCRIPTION }}
displayName: {{ TITLE }}
environments: [ {{ ENV.name }} ]
proxies:
- {{ NAME }}
- identity-service-{{ ENV.name }}
{% if ENV.name == 'int' %}
- identity-service-{{ ENV.name }}-no-smartcard
{% endif %}
{% if ENV.name == 'internal-qa' %}
- identity-service-internal-qa-int
{% endif %}
scopes:
- 'urn:nhsd:apim:user-nhs-login:P9:{{ SERVICE_NAME }}'
specs:
- name: {{ NAME }}
path: {{ SERVICE_NAME }}-consumer-api.json
- name: {{ NAME }}-producer-api-standards
path: {{ SERVICE_NAME }}-producer-api-standards.json
- name: {{ NAME }}-record-service-api
path: {{ SERVICE_NAME }}-record-service-api.json
api_catalog:
- edgeAPIProductName: {{ NAME }}
anonAllowed: true
description: {{ DESCRIPTION }}
requireCallbackUrl: false
title: {{ TITLE }}
visibility: {{ ENV.portal_visibility | default(true) }}
specId: {{ NAME }}
{% endif %}
{% endfor %}