forked from Geonovum/KP-APIs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
snapshot.html
2442 lines (2347 loc) · 216 KB
/
snapshot.html
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html><html lang="nl"><!-- HTML-Header ----------------------------------------------------------------------------- --><head><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta content="text/html; charset=utf-8" http-equiv="content-type"><meta name="generator" content="ReSpec 23.7.4"><style>/* --- ISSUES/NOTES --- */
div.issue-title, div.note-title , div.ednote-title, div.warning-title {
padding-right: 1em;
min-width: 7.5em;
color: #b9ab2d;
}
div.issue-title { color: #e05252; }
div.note-title, div.ednote-title { color: #2b2; }
div.warning-title { color: #f22; }
div.issue-title span, div.note-title span, div.ednote-title span, div.warning-title span {
text-transform: uppercase;
}
div.note, div.issue, div.ednote, div.warning {
margin-top: 1em;
margin-bottom: 1em;
}
.note > p:first-child, .ednote > p:first-child, .issue > p:first-child, .warning > p:first-child { margin-top: 0 }
.issue, .note, .ednote, .warning {
padding: .5em;
border-left-width: .5em;
border-left-style: solid;
}
div.issue, div.note , div.ednote, div.warning {
padding: 1em 1.2em 0.5em;
margin: 1em 0;
position: relative;
clear: both;
}
span.note, span.ednote, span.issue, span.warning { padding: .1em .5em .15em; }
.issue {
border-color: #e05252;
background: #fbe9e9;
}
.issue.closed span.issue-number {
text-decoration: line-through;
}
.note, .ednote {
border-color: #52e052;
background: #e9fbe9;
}
.warning {
border-color: #f11;
border-width: .2em;
border-style: solid;
background: #fbe9e9;
}
.warning-title:before{
content: "⚠"; /*U+26A0 WARNING SIGN*/
font-size: 3em;
float: left;
height: 100%;
padding-right: .3em;
vertical-align: top;
margin-top: -0.5em;
}
li.task-list-item {
list-style: none;
}
input.task-list-item-checkbox {
margin: 0 0.35em 0.25em -1.6em;
vertical-align: middle;
}
.issue a.respec-gh-label {
padding: 5px;
margin: 0 2px 0 2px;
font-size: 10px;
text-transform: none;
text-decoration: none;
font-weight: bold;
border-radius: 4px;
position: relative;
bottom: 2px;
}
.issue a.respec-label-dark {
color: #fff;
background-color: #000;
}
.issue a.respec-label-light {
color: #000;
background-color: #fff;
}
</style>
<!-- -----------------------------------------------------------------------------------------------
//-- File. . . : index.html
//-- Bevat . . : Template voor de index.html die verplicht is voor respec
//-- Gebaseerd op https://github.com/Geonovum/respec/wiki
//-- Deze file moet worden neergezet in de root-directory van de
//-- betreffende standaard.
//-- Door. . . : Jan van Gelder
//-- -----------------------------------------------------------------------------------------------
//-- -----------------------------------------------------------------------------------------------
//-- Log . . . : 20181015 - JvG - Initiele versie
//
----------------------------------------------------------------------------------------------------
0 1 2 3 4 5 6 7 8 9 0
1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
------------------------------------------------------------------------------------------------ -->
<!-- Invullen: de titel van de standaard of het document ----------------------------------- -->
<title>API strategie voor de Nederlandse overheid</title>
<!-- Invullen: de naam van de lokale CSS file ---------------------------------------------- -->
<link rel="stylesheet" type="text/css" href="./media/style.css">
<link rel="shortcut icon" type="image/x-icon" href="https://tools.geostandaarden.nl/respec/style/logos/Geonovum.ico">
<style id="respec-mainstyle">/*****************************************************************
* ReSpec 3 CSS
* Robin Berjon - http://berjon.com/
*****************************************************************/
/* Override code highlighter background */
.hljs {
background: transparent !important;
}
/* --- INLINES --- */
h1 abbr,
h2 abbr,
h3 abbr,
h4 abbr,
h5 abbr,
h6 abbr,
a abbr {
border: none;
}
dfn {
font-weight: bold;
}
a.internalDFN {
color: inherit;
border-bottom: 1px solid #99c;
text-decoration: none;
}
a.externalDFN {
color: inherit;
border-bottom: 1px dotted #ccc;
text-decoration: none;
}
a.bibref {
text-decoration: none;
}
#references :target {
background: #eaf3ff;
}
cite .bibref {
font-style: normal;
}
code {
color: #c83500;
}
th code {
color: inherit;
}
/* --- TOC --- */
.toc a,
.tof a {
text-decoration: none;
}
a .secno,
a .figno {
color: #000;
}
ul.tof,
ol.tof {
list-style: none outside none;
}
.caption {
margin-top: 0.5em;
font-style: italic;
}
/* --- TABLE --- */
table.simple {
border-spacing: 0;
border-collapse: collapse;
border-bottom: 3px solid #005a9c;
}
.simple th {
background: #005a9c;
color: #fff;
padding: 3px 5px;
text-align: left;
}
.simple th[scope="row"] {
background: inherit;
color: inherit;
border-top: 1px solid #ddd;
}
.simple td {
padding: 3px 10px;
border-top: 1px solid #ddd;
}
.simple tr:nth-child(even) {
background: #f0f6ff;
}
/* --- DL --- */
.section dd>p:first-child {
margin-top: 0;
}
.section dd>p:last-child {
margin-bottom: 0;
}
.section dd {
margin-bottom: 1em;
}
.section dl.attrs dd,
.section dl.eldef dd {
margin-bottom: 0;
}
#issue-summary>ul,
.respec-dfn-list {
column-count: 2;
}
#issue-summary li,
.respec-dfn-list li {
list-style: none;
}
details.respec-tests-details {
margin-left: 1em;
display: inline-block;
vertical-align: top;
}
details.respec-tests-details>* {
padding-right: 2em;
}
details.respec-tests-details[open] {
z-index: 999999;
position: absolute;
border: thin solid #cad3e2;
border-radius: 0.3em;
background-color: white;
padding-bottom: 0.5em;
}
details.respec-tests-details[open]>summary {
border-bottom: thin solid #cad3e2;
padding-left: 1em;
margin-bottom: 1em;
line-height: 2em;
}
details.respec-tests-details>ul {
width: 100%;
margin-top: -0.3em;
}
details.respec-tests-details>li {
padding-left: 1em;
}
a[href].self-link:hover {
opacity: 1;
text-decoration: none;
background-color: transparent;
}
h2,
h3,
h4,
h5,
h6 {
position: relative;
}
aside.example .marker > a.self-link {
color: inherit;
}
h2>a.self-link,
h3>a.self-link,
h4>a.self-link,
h5>a.self-link,
h6>a.self-link {
border: none;
color: inherit;
font-size: 83%;
height: 2em;
left: -1.6em;
opacity: .5;
position: absolute;
text-align: center;
text-decoration: none;
top: 0;
transition: opacity .2s;
width: 2em;
}
h2>a.self-link::before,
h3>a.self-link::before,
h4>a.self-link::before,
h5>a.self-link::before,
h6>a.self-link::before {
content: "§";
display: block;
}
@media (max-width: 767px) {
dd {
margin-left: 0;
}
/* Don't position self-link in headings off-screen */
h2>a.self-link,
h3>a.self-link,
h4>a.self-link,
h5>a.self-link,
h6>a.self-link {
left: auto;
top: auto;
}
}
@media print {
.removeOnSave {
display: none;
}
}
</style><style>/*
github.com style (c) Vasily Polovnyov <[email protected]>
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
color: #333;
background: #f8f8f8;
}
.hljs-comment,
.hljs-quote {
color: #998;
font-style: italic;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-subst {
color: #333;
font-weight: bold;
}
.hljs-number,
.hljs-literal,
.hljs-variable,
.hljs-template-variable,
.hljs-tag .hljs-attr {
color: #008080;
}
.hljs-string,
.hljs-doctag {
color: #d14;
}
.hljs-title,
.hljs-section,
.hljs-selector-id {
color: #900;
font-weight: bold;
}
.hljs-subst {
font-weight: normal;
}
.hljs-type,
.hljs-class .hljs-title {
color: #458;
font-weight: bold;
}
.hljs-tag,
.hljs-name,
.hljs-attribute {
color: #000080;
font-weight: normal;
}
.hljs-regexp,
.hljs-link {
color: #009926;
}
.hljs-symbol,
.hljs-bullet {
color: #990073;
}
.hljs-built_in,
.hljs-builtin-name {
color: #0086b3;
}
.hljs-meta {
color: #999;
font-weight: bold;
}
.hljs-deletion {
background: #fdd;
}
.hljs-addition {
background: #dfd;
}
.hljs-emphasis {
font-style: italic;
}
.hljs-strong {
font-weight: bold;
}
</style><link rel="stylesheet" href="https://tools.geostandaarden.nl/respec/style/GN-CV.css"><link rel="shortcut icon" type="image/x-icon" href="https://tools.geostandaarden.nl/respec/style/logos/Geonovum.ico"><script id="initialUserConfig" type="application/json">{
"specStatus": "GN-CV",
"specType": "HR",
"pubDomain": "api",
"publishDate": "2019-02-13",
"editors": [
{
"name": "Frank Terpstra",
"company": "Geonovum",
"companyURL": "http://www.geonovum.nl/"
},
{
"name": "Jan van Gelder",
"company": "Geonovum",
"companyURL": "http://www.Geonovum.nl/"
}
],
"authors": [
{
"name": "Lancelot Schellevis",
"company": "Forum Standaardisatie",
"companyURL": "http://www.forumstandaardisatie.nl/"
},
{
"name": "Friso Penninga",
"company": "Geonovum",
"companyURL": "http://geonovum.nl/"
},
{
"name": "Matthias Snoei",
"company": "Swis",
"companyURL": "http://swis.nl/"
},
{
"name": "Jasper Roes",
"company": "Het Kadaster",
"companyURL": "http://www.kadaster.nl/"
},
{
"name": "Emile van de Maas",
"company": "",
"companyURL": ""
}
],
"shortName": "API-Strategie",
"subtitle": "Consultatieversie",
"github": "https://github.com/geonovum/KP-APIs",
"issueBase": "https://github.com/geonovum/KP-APIs/issues/",
"localBiblio": {
"OAuth2": {
"href": "https://tools.ietf.org/html/rfc6749",
"title": "The OAuth 2.0 Authorization Framework",
"authors": [
"D. Hardt"
],
"date": "October 2012",
"publisher": "The Internet Engineering Task Force"
},
"Expert": {
"href": "https://www.forumstandaardisatie.nl/sites/bfs/files/Expertadvies%20OAuth%202.0.pdf",
"title": "Expertadvies OAuth 2.0",
"authors": [
"P. Dam"
],
"date": "24 februari 2017",
"publisher": "Forum Standaardisatie",
"id": "expert"
},
"JWT": {
"href": "https://tools.ietf.org/html/rfc7519",
"title": "JSON Web Token (JWT)",
"authors": [
"M. Jones, J. Bradley, N. Sakimura"
],
"date": "may 2015",
"publisher": "IETF"
},
"JWS": {
"href": "https://tools.ietf.org/html/rfc7515",
"title": "JSON Web Signature (JWS)",
"authors": [
"M. Jones, J. Bradley, N. Sakimura"
],
"date": "may 2015",
"publisher": "IETF"
},
"JWE": {
"href": "https://tools.ietf.org/html/rfc7516",
"title": "JSON Web Encryption (JWE)",
"authors": [
"M. Jones, J. Hildebrand"
],
"date": "may 2015",
"publisher": "IETF"
},
"JWK": {
"href": "https://tools.ietf.org/html/rfc7517",
"title": "JSON Web Key (JWK))",
"authors": [
"M. Jones"
],
"date": "may 2015",
"publisher": "IETF"
},
"JWA": {
"href": "https://tools.ietf.org/html/rfc7518",
"title": "JSON Web Algorithms (JWA)",
"authors": [
"M. Jones"
],
"date": "may 2015",
"publisher": "IETF"
},
"PKCE": {
"href": "https://tools.ietf.org/html/rfc7636",
"title": "Proof Key for Code Exchange by OAuth Public Clients",
"authors": [
"N. Sakimura, J. Bradley, N. Agarwal"
],
"date": "september 2015",
"publisher": "IETF"
},
"Introspection": {
"href": "https://tools.ietf.org/html/rfc7662",
"title": "OAuth 2.0 Token Introspection",
"authors": [
"J. Richer"
],
"date": "October 2015",
"publisher": "IETF"
},
"OpenID.Core": {
"href": "https://openid.net/specs/openid-connect-core-1_0.html",
"title": "OpenID Connect Core 1.0",
"authors": [
"N. Sakimura, J. Bradley, M. Jones, B. de Medeiros, C. Mortimore"
],
"date": "November 8 2014",
"publisher": "OpenID foundation"
},
"iGOV.OpenID": {
"href": "https://openid.net/specs/openid-igov-openid-connect-1_0.html",
"title": "International Government Assurance Profile (iGov) for OpenID Connect 1.0 - draft 3",
"authors": [
"M. Varley, P. Grassi"
],
"date": "October 5 2018",
"publisher": "OpenID foundation",
"id": "igov.openid"
},
"iGOV.OAuth2": {
"href": "https://openid.net/specs/openid-igov-oauth2-1_0.html",
"title": "International Government Assurance Profile (iGov) for OAuth 2.0",
"authors": [
"J. Richer, M. Varley, P. Grassi"
],
"date": "October 5 2018",
"publisher": "OpenID foundation",
"id": "igov.oauth2"
},
"OpenID.Discovery": {
"href": "https://openid.net/specs/openid-connect-discovery-1_0.html",
"title": "OpenID Connect Discovery 1.0",
"authors": [
"N. Sakimura, J. Bradley, M. Jones, E. Jay"
],
"date": "November 8 2014",
"publisher": "OpenID foundation"
},
"I-D.ietf-oauth-pop-architecture": {
"href": "https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture-08",
"title": "OAuth 2.0 Proof-of-Possession (PoP) Security Architecture",
"authors": [
"P. Hunt, J. Richer, W. Mills, P. Mishra, H. Tschofenig"
],
"date": "July 8, 2016",
"publisher": "IETF"
},
"HEART.OAuth2": {
"href": "https://openid.net/specs/openid-heart-oauth2-1_0.html",
"title": "Health Relationship Trust Profile for OAuth 2.0",
"authors": [
"J. Richer"
],
"date": "April 25, 2017",
"publisher": "OpenID foundation"
},
"JWS.JWE.Algs": {
"href": "https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms",
"title": "IANA JSON Web Signatures and Encryption Algorithms registry",
"authors": [
"Jim Schaad, Jeff Hodges, Joe Hildebrand, Sean Turner"
],
"date": "",
"publisher": "IANA"
},
"BCP195": {
"href": "https://tools.ietf.org/html/bcp195",
"title": "Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)",
"authors": [
"Y. Sheffer, R. Holz, P. Saint-Andre"
],
"date": "May 2015",
"publisher": "IETF"
},
"HAL": {
"href": "http://stateless.co/hal_specification.html",
"title": "HAL - Hypertext Application Language",
"authors": [
"Mike Kelly"
],
"date": " 2013-09-18",
"id": "hal"
}
},
"publishISODate": "2019-02-13T00:00:00.000Z",
"generatedSubtitle": "Consultatieversie 13 februari 2019"
}</script><meta name="description" content="Dit document beschrijft een API strategie voor de Nederlandse overheid."><script type="application/ld+json">{
"@context": [
"http://schema.org",
{
"@vocab": "http://schema.org/",
"@language": "nl",
"foaf": "http://xmlns.com/foaf/0.1/",
"datePublished": {
"@type": "http://www.w3.org/2001/XMLSchema#date"
},
"inLanguage": {
"@language": null
},
"isBasedOn": {
"@type": "@id"
},
"license": {
"@type": "@id"
}
}
],
"id": "https://docs.geostandaarden.nl/api/cv-hr-API-Strategie-20190213/",
"type": [
"TechArticle"
],
"name": "API strategie voor de Nederlandse overheid",
"inLanguage": "nl",
"license": "https://creativecommons.org/licenses/by-nd/4.0/legalcode.nl",
"datePublished": "2019-02-13",
"copyrightHolder": {
"name": "Geonovum",
"url": "https://www.geonovum.nl/"
},
"discussionUrl": "https://github.com/geonovum/KP-APIs/issues/",
"alternativeHeadline": "Consultatieversie",
"description": "Dit document beschrijft een API strategie voor de Nederlandse overheid.",
"editor": [
{
"type": "Person",
"name": "Frank Terpstra",
"worksFor": {
"name": "Geonovum",
"url": "http://www.geonovum.nl/"
}
},
{
"type": "Person",
"name": "Jan van Gelder",
"worksFor": {
"name": "Geonovum",
"url": "http://www.Geonovum.nl/"
}
}
],
"contributor": [
{
"type": "Person",
"name": "Lancelot Schellevis",
"worksFor": {
"name": "Forum Standaardisatie",
"url": "http://www.forumstandaardisatie.nl/"
}
},
{
"type": "Person",
"name": "Friso Penninga",
"worksFor": {
"name": "Geonovum",
"url": "http://geonovum.nl/"
}
},
{
"type": "Person",
"name": "Matthias Snoei",
"worksFor": {
"name": "Swis",
"url": "http://swis.nl/"
}
},
{
"type": "Person",
"name": "Jasper Roes",
"worksFor": {
"name": "Het Kadaster",
"url": "http://www.kadaster.nl/"
}
},
{
"type": "Person",
"name": "Emile van de Maas"
}
],
"citation": [
{
"id": "http://stateless.co/hal_specification.html",
"type": "TechArticle",
"name": "HAL - Hypertext Application Language",
"url": "http://stateless.co/hal_specification.html"
},
{
"id": "https://tools.ietf.org/html/rfc8142",
"type": "TechArticle",
"name": "GeoJSON Text Sequences",
"url": "https://tools.ietf.org/html/rfc8142"
},
{
"id": "https://tools.ietf.org/html/rfc6585",
"type": "TechArticle",
"name": "Additional HTTP Status Codes",
"url": "https://tools.ietf.org/html/rfc6585"
},
{
"id": "https://tools.ietf.org/html/rfc7807",
"type": "TechArticle",
"name": "Problem Details for HTTP APIs",
"url": "https://tools.ietf.org/html/rfc7807"
},
{
"id": "https://www.forumstandaardisatie.nl/sites/bfs/files/Expertadvies%20OAuth%202.0.pdf",
"type": "TechArticle",
"name": "Expertadvies OAuth 2.0",
"url": "https://www.forumstandaardisatie.nl/sites/bfs/files/Expertadvies%20OAuth%202.0.pdf"
},
{
"id": "https://openid.net/specs/openid-igov-oauth2-1_0.html",
"type": "TechArticle",
"name": "International Government Assurance Profile (iGov) for OAuth 2.0",
"url": "https://openid.net/specs/openid-igov-oauth2-1_0.html"
},
{
"id": "https://openid.net/specs/openid-igov-openid-connect-1_0.html",
"type": "TechArticle",
"name": "International Government Assurance Profile (iGov) for OpenID Connect 1.0 - draft 3",
"url": "https://openid.net/specs/openid-igov-openid-connect-1_0.html"
}
]
}</script></head>
<!-- HTML-Body ------------------------------------------------------------------------------- -->
<body class="h-entry"><div class="head">
<a href="https://www.geonovum.nl/" class="logo"><img id="Geonovum" alt="Geonovum" width="132" height="67" src="https://tools.geostandaarden.nl/respec/style/logos/Geonovum.svg"></a>
<h1 class="title p-name" id="title">API strategie voor de Nederlandse overheid</h1>
<h2 id="subtitle">Consultatieversie</h2>
<h2>Geonovum Handreiking<br>
Consultatieversie <time class="dt-published" datetime="2019-02-13">13 februari 2019</time></h2>
<dl>
<dt>Deze versie:</dt><dd><a class="u-url" href="https://docs.geostandaarden.nl/api/cv-hr-API-Strategie-20190213/">https://docs.geostandaarden.nl/api/cv-hr-API-Strategie-20190213/</a></dd><dt>Laatst gepubliceerde versie:</dt><dd><a href="https://docs.geostandaarden.nl/api/API-Strategie/">https://docs.geostandaarden.nl/api/API-Strategie/</a></dd>
<dt>Laatste werkversie:</dt><dd><a href="https://geonovum.github.io/KP-APIs/">https://geonovum.github.io/KP-APIs/</a></dd>
<dt>Redacteurs:</dt>
<dd class="p-author h-card vcard"><span class="p-name fn">Frank Terpstra</span>, <a class="p-org org h-org h-card" href="http://www.geonovum.nl/">Geonovum</a></dd><dd class="p-author h-card vcard"><span class="p-name fn">Jan van Gelder</span>, <a class="p-org org h-org h-card" href="http://www.Geonovum.nl/">Geonovum</a></dd>
<dt>Auteurs:</dt><dd class="p-author h-card vcard"><span class="p-name fn">Lancelot Schellevis</span>, <a class="p-org org h-org h-card" href="http://www.forumstandaardisatie.nl/">Forum Standaardisatie</a></dd><dd class="p-author h-card vcard"><span class="p-name fn">Friso Penninga</span>, <a class="p-org org h-org h-card" href="http://geonovum.nl/">Geonovum</a></dd><dd class="p-author h-card vcard"><span class="p-name fn">Matthias Snoei</span>, <a class="p-org org h-org h-card" href="http://swis.nl/">Swis</a></dd><dd class="p-author h-card vcard"><span class="p-name fn">Jasper Roes</span>, <a class="p-org org h-org h-card" href="http://www.kadaster.nl/">Het Kadaster</a></dd><dd class="p-author h-card vcard"><span class="p-name fn">Emile van de Maas</span></dd>
<dt>Doe mee:</dt><dd>
<a href="https://github.com/geonovum/KP-APIs/">GitHub geonovum/KP-APIs</a>
</dd><dd>
<a href="https://github.com/geonovum/KP-APIs/issues/">Dien een melding in</a>
</dd><dd>
<a href="https://github.com/geonovum/KP-APIs/commits/gh-pages">Revisiehistorie</a>
</dd><dd>
<a href="https://github.com/geonovum/KP-APIs/pulls/">Pull requests</a>
</dd>
</dl>
<dl>
<dt>Rechtenbeleid:</dt>
<dd>
<div class="copyright" style="margin: 0.25em 0;">
<abbr title="Creative Commons Naamsvermelding-GeenAfgeleideWerken 4.0 Internationaal">
<a href="https://creativecommons.org/licenses/by-nd/4.0/legalcode.nl"><img src="https://tools.geostandaarden.nl/respec/style/logos/CC-Licentie.svg" width="115" height="40" alt="Creative Commons Naamsvermelding-GeenAfgeleideWerken 4.0 Internationaal"></a>
</abbr>
<div style="display:inline-block; vertical-align:top">
<p style="font-size: small;">Creative Commons Naamsvermelding-GeenAfgeleideWerken 4.0 Internationaal<br>(CC-BY-ND)</p>
</div>
</div>
</dd>
</dl>
<hr title="Separator for header">
</div>
<section id="abstract" data-format="markdown" aria-busy="false" class="introductory"><h2>Samenvatting</h2><p>Dit document beschrijft een API strategie voor de Nederlandse overheid.</p></section>
<section id="sotd" class="introductory"><h2>Status van dit document</h2><p>
<em>Deze paragraaf beschrijft de status van dit document ten tijde van publicatie. Het is mogelijk dat er actuelere versies van dit document bestaan. Een lijst van Geonovum publicaties en de laatste gepubliceerde versie van dit document zijn te vinden op <a href="https://www.geonovum.nl/geo-standaarden/alle-standaarden">https://www.geonovum.nl/geo-standaarden/alle-standaarden</a>.</em>
</p><p>
Dit is een door de werkgroep goedgekeurde consultatieversie. Commentaar over dit document kan gestuurd worden naar
<a href="mailto:[email protected]">
[email protected]</a>.
</p><p></p></section><nav id="toc"><h2 class="introductory" id="inhoudsopgave">Inhoudsopgave</h2><ol class="toc"><li class="tocline"><a href="#inleiding" class="tocxref"><span class="secno">1. </span>Inleiding</a><ol class="toc"><li class="tocline"><a href="#status-van-de-api-strategie" class="tocxref"><span class="secno">1.1 </span>Status van de API strategie</a></li><li class="tocline"><a href="#leeswijzer" class="tocxref"><span class="secno">1.2 </span>Leeswijzer</a></li></ol></li><li class="tocline"><a href="#communicatie-en-beleid" class="tocxref"><span class="secno">2. </span>Communicatie en Beleid</a><ol class="toc"><li class="tocline"><a href="#application-programming-interfaces-wat-zijn-het-en-waarom-hierop-in-te-zetten" class="tocxref"><span class="secno">2.1 </span>Application Programming Interfaces, wat zijn het en waarom hierop in te zetten</a></li><li class="tocline"><a href="#de-rol-van-api-s-in-de-platform-economie" class="tocxref"><span class="secno">2.2 </span>De rol van API’s in de platform economie</a></li><li class="tocline"><a href="#wat-is-een-api" class="tocxref"><span class="secno">2.3 </span>Wat is een API</a></li><li class="tocline"><a href="#achtergrond" class="tocxref"><span class="secno">2.4 </span>Achtergrond</a></li><li class="tocline"><a href="#belang-voor-de-overheid" class="tocxref"><span class="secno">2.5 </span>Belang voor de overheid</a></li><li class="tocline"><a href="#developer-first" class="tocxref"><span class="secno">2.6 </span>Developer First</a></li><li class="tocline"><a href="#gegevens-bevragen-bij-de-bron" class="tocxref"><span class="secno">2.7 </span>Gegevens bevragen bij de bron</a></li><li class="tocline"><a href="#wat-kan-je-zelf-doen" class="tocxref"><span class="secno">2.8 </span>Wat kan je zelf doen?</a></li><li class="tocline"><a href="#enkele-voorbeelden" class="tocxref"><span class="secno">2.9 </span>Enkele voorbeelden</a></li></ol></li><li class="tocline"><a href="#gebruikerswensen" class="tocxref"><span class="secno">3. </span><!-- Hoofdstuk 3 -->Gebruikerswensen</a><ol class="toc"><li class="tocline"><a href="#inleiding-0" class="tocxref"><span class="secno">3.1 </span><!-- 3.1 -->Inleiding</a></li><li class="tocline"><a href="#overkoepelende-aanbeveling-biedt-een-goede-developer-experience-dx" class="tocxref"><span class="secno">3.2 </span><!-- 3.2 -->Overkoepelende aanbeveling: biedt een goede ‘developer experience (DX)’</a></li><li class="tocline"><a href="#gebruik-van-onboarding-tot-in-productie" class="tocxref"><span class="secno">3.3 </span><!-- 3.3 -->Gebruik: van ‘onboarding’ tot ‘in productie’</a></li><li class="tocline"><a href="#specifieke-aanbevelingen-voor-een-goede-dx" class="tocxref"><span class="secno">3.4 </span><!-- 3.4 -->Specifieke aanbevelingen voor een goede DX</a><ol class="toc"><li class="tocline"><a href="#aanbeveling-1-werk-met-meerdere-persona-s" class="tocxref"><span class="secno">3.4.1 </span>Aanbeveling 1: werk met (meerdere) persona’s</a></li><li class="tocline"><a href="#aanbeveling-2-analyseer-welke-api-s-je-aan-moet-bieden-welke-informatievragen-wil-je-beantwoorden" class="tocxref"><span class="secno">3.4.2 </span>Aanbeveling 2: analyseer welke API’s je aan moet bieden: welke informatievragen wil je beantwoorden?</a></li><li class="tocline"><a href="#aanbeveling-3-documenteer-gericht-op-de-gebruiker-biedt-snel-inzicht-en-gebruik-oas-3" class="tocxref"><span class="secno">3.4.3 </span>Aanbeveling 3: documenteer gericht op de gebruiker, biedt snel inzicht en gebruik OAS 3</a></li><li class="tocline"><a href="#aanbeveling-4-minimaliseer-time-to-first-call-met-een-goede-sandbox" class="tocxref"><span class="secno">3.4.4 </span>Aanbeveling 4: minimaliseer Time to First Call met een goede Sandbox</a></li><li class="tocline"><a href="#aanbeveling-5-borg-ontwikkeling-en-beheer" class="tocxref"><span class="secno">3.4.5 </span>Aanbeveling 5: borg ontwikkeling en beheer</a><ol class="toc"><li class="tocline"><a href="#aanbeveling-5-1-stel-een-sla-op" class="tocxref"><span class="secno">3.4.5.1 </span>Aanbeveling 5.1 Stel een SLA op</a></li><li class="tocline"><a href="#aanbeveling-5-2-biedt-een-roadmap-aan" class="tocxref"><span class="secno">3.4.5.2 </span>Aanbeveling 5.2 Biedt een roadmap aan</a></li><li class="tocline"><a href="#aanbeveling-5-3-doe-aan-versiebeheer" class="tocxref"><span class="secno">3.4.5.3 </span>Aanbeveling 5.3 Doe aan versiebeheer</a></li><li class="tocline"><a href="#aanbeveling-5-4-sluit-de-feedback-loop-betrek-de-community" class="tocxref"><span class="secno">3.4.5.4 </span>Aanbeveling 5.4 Sluit de feedback-loop: betrek de community</a></li></ol></li><li class="tocline"><a href="#aanbeveling-6-maak-duidelijk-wat-je-data-betekent" class="tocxref"><span class="secno">3.4.6 </span>Aanbeveling 6: maak duidelijk wat je data betekent</a></li><li class="tocline"><a href="#aanbeveling-7-wees-vindbaar-voor-developers" class="tocxref"><span class="secno">3.4.7 </span>Aanbeveling 7: wees vindbaar voor developers</a></li><li class="tocline"><a href="#aanbeveling-8-niet-alles-is-een-api" class="tocxref"><span class="secno">3.4.8 </span>Aanbeveling 8: niet alles is een API!</a></li></ol></li></ol></li><li class="tocline"><a href="#api-designrules-ontwerpregels" class="tocxref"><span class="secno">4. </span>API designrules (ontwerpregels)</a><ol class="toc"><li class="tocline"><a href="#inleiding-1" class="tocxref"><span class="secno">4.1 </span>Inleiding</a></li><li class="tocline"><a href="#restful-principes" class="tocxref"><span class="secno">4.2 </span>RESTful principes</a><ol class="toc"><li class="tocline"><a href="#wat-zijn-resources" class="tocxref"><span class="secno">4.2.1 </span>Wat zijn resources?</a></li><li class="tocline"><a href="#welke-taal" class="tocxref"><span class="secno">4.2.2 </span>Welke taal?</a></li><li class="tocline"><a href="#naamgeving-eindpunten-in-enkelvoud-of-meervoud" class="tocxref"><span class="secno">4.2.3 </span>Naamgeving eindpunten in enkelvoud of meervoud?</a></li><li class="tocline"><a href="#hoe-omgaan-met-relaties" class="tocxref"><span class="secno">4.2.4 </span>Hoe omgaan met relaties?</a></li><li class="tocline"><a href="#automatische-laden-van-gelinkte-resources" class="tocxref"><span class="secno">4.2.5 </span>Automatische laden van gelinkte resources</a></li><li class="tocline"><a href="#aanpasbare-representatie" class="tocxref"><span class="secno">4.2.6 </span>Aanpasbare representatie</a></li><li class="tocline"><a href="#hoe-om-te-gaan-met-acties-die-niet-passen-in-het-crud-model" class="tocxref"><span class="secno">4.2.7 </span>Hoe om te gaan met acties die niet passen in het CRUD model?</a></li></ol></li><li class="tocline"><a href="#api-beveiliging" class="tocxref"><span class="secno">4.3 </span>API Beveiliging</a><ol class="toc"><li class="tocline"><a href="#authenticatie-en-autorisatie" class="tocxref"><span class="secno">4.3.1 </span>Authenticatie en autorisatie</a><ol class="toc"><li class="tocline"><a href="#autorisatiefouten" class="tocxref"><span class="secno">4.3.1.1 </span>Autorisatiefouten</a></li><li class="tocline"><a href="#openbare-identifiers" class="tocxref"><span class="secno">4.3.1.2 </span>Openbare identifiers</a></li><li class="tocline"><a href="#blootstellen-api-key" class="tocxref"><span class="secno">4.3.1.3 </span>Blootstellen API-key</a></li><li class="tocline"><a href="#cors-policy" class="tocxref"><span class="secno">4.3.1.4 </span>CORS-policy</a></li></ol></li></ol></li><li class="tocline"><a href="#documentatie" class="tocxref"><span class="secno">4.4 </span>Documentatie</a><ol class="toc"><li class="tocline"><a href="#best-practice-s" class="tocxref"><span class="secno">4.4.1 </span>Best practice(s)</a></li></ol></li><li class="tocline"><a href="#versionering" class="tocxref"><span class="secno">4.5 </span>Versionering</a><ol class="toc"><li class="tocline"><a href="#uitfaseren-van-een-major-api-versie" class="tocxref"><span class="secno">4.5.1 </span>Uitfaseren van een major API versie</a></li><li class="tocline"><a href="#de-warning-response-header" class="tocxref"><span class="secno">4.5.2 </span>De Warning response header</a></li></ol></li><li class="tocline"><a href="#json" class="tocxref"><span class="secno">4.6 </span>JSON</a><ol class="toc"><li class="tocline"><a href="#veldnamen-in-snake_case-camelcase-uppercamelcase-of-kebab-case" class="tocxref"><span class="secno">4.6.1 </span>Veldnamen in <code>snake_case</code>, <code>camelCase</code>, <code>UpperCamelCase</code> of <code>kebab-case</code>?</a></li><li class="tocline"><a href="#pretty-print" class="tocxref"><span class="secno">4.6.2 </span>Pretty print</a></li><li class="tocline"><a href="#gebruik-geen-envelop" class="tocxref"><span class="secno">4.6.3 </span>Gebruik geen envelop</a></li><li class="tocline"><a href="#json-gecodeerde-post-put-en-patch-payloads" class="tocxref"><span class="secno">4.6.4 </span>JSON gecodeerde <code>POST</code>, <code>PUT</code> en <code>PATCH</code> payloads</a></li></ol></li><li class="tocline"><a href="#filteren-sorteren-en-zoeken" class="tocxref"><span class="secno">4.7 </span>Filteren, sorteren en zoeken</a><ol class="toc"><li class="tocline"><a href="#filteren" class="tocxref"><span class="secno">4.7.1 </span>Filteren</a></li><li class="tocline"><a href="#sorteren" class="tocxref"><span class="secno">4.7.2 </span>Sorteren</a></li><li class="tocline"><a href="#zoeken" class="tocxref"><span class="secno">4.7.3 </span>Zoeken</a></li><li class="tocline"><a href="#wildcards" class="tocxref"><span class="secno">4.7.4 </span>Wildcards</a></li><li class="tocline"><a href="#aliassen-voor-terugkerende-queries" class="tocxref"><span class="secno">4.7.5 </span>Aliassen voor terugkerende queries</a></li></ol></li><li class="tocline"><a href="#tijdreizen" class="tocxref"><span class="secno">4.8 </span>Tijdreizen</a><ol class="toc"><li class="tocline"><a href="#mate-van-ondersteuning" class="tocxref"><span class="secno">4.8.1 </span>Mate van ondersteuning</a></li><li class="tocline"><a href="#robuustheid" class="tocxref"><span class="secno">4.8.2 </span>Robuustheid</a></li></ol></li><li class="tocline"><a href="#geo-ondersteuning" class="tocxref"><span class="secno">4.9 </span>GEO-ondersteuning</a><ol class="toc"><li class="tocline"><a href="#resultaat-response" class="tocxref"><span class="secno">4.9.1 </span>Resultaat (response)</a></li><li class="tocline"><a href="#aanroep-requests" class="tocxref"><span class="secno">4.9.2 </span>Aanroep (requests)</a></li><li class="tocline"><a href="#crs-negotiation" class="tocxref"><span class="secno">4.9.3 </span>CRS-negotiation</a></li><li class="tocline"><a href="#crs-transformatie" class="tocxref"><span class="secno">4.9.4 </span>CRS-transformatie</a></li></ol></li><li class="tocline"><a href="#paginering" class="tocxref"><span class="secno">4.10 </span>Paginering</a></li><li class="tocline"><a href="#caching" class="tocxref"><span class="secno">4.11 </span>Caching</a><ol class="toc"><li class="tocline"><a href="#etag" class="tocxref"><span class="secno">4.11.1 </span>ETag</a></li><li class="tocline"><a href="#last-modified" class="tocxref"><span class="secno">4.11.2 </span>Last-Modified</a></li></ol></li><li class="tocline"><a href="#begrenzingen" class="tocxref"><span class="secno">4.12 </span>Begrenzingen</a></li><li class="tocline"><a href="#foutafhandeling" class="tocxref"><span class="secno">4.13 </span>Foutafhandeling</a><ol class="toc"><li class="tocline"><a href="#http-statuscodes" class="tocxref"><span class="secno">4.13.1 </span>HTTP statuscodes</a></li></ol></li></ol></li><li class="tocline"><a href="#beveiliging" class="tocxref"><span class="secno">5. </span>Beveiliging</a><ol class="toc"><li class="tocline"><a href="#nederlands-profiel-oauth" class="tocxref"><span class="secno">5.1 </span>Nederlands profiel OAuth</a><ol class="toc"><li class="tocline"><a href="#expert-advies-oauth-forum-standaardisatie" class="tocxref"><span class="secno">5.1.1 </span>Expert advies OAuth forum standaardisatie</a></li><li class="tocline"><a href="#werkingsgebied-standaard" class="tocxref"><span class="secno">5.1.2 </span>Werkingsgebied standaard</a></li><li class="tocline"><a href="#toepassingsgebied-standaard" class="tocxref"><span class="secno">5.1.3 </span>Toepassingsgebied standaard</a></li><li class="tocline"><a href="#openid-connect-buiten-scope" class="tocxref"><span class="secno">5.1.4 </span>OpenID connect buiten scope</a></li><li class="tocline"><a href="#aansluiting-op-internationale-standaard-igov" class="tocxref"><span class="secno">5.1.5 </span>Aansluiting op internationale standaard iGov</a></li></ol></li></ol></li><li class="tocline"><a href="#bijlagen" class="tocxref"><span class="secno">6. </span>Bijlagen</a><ol class="toc"><li class="tocline"><a href="#api-principes" class="tocxref"><span class="secno">6.1 </span><span name="api-principes" class="formerLink"></span>API Principes</a><ol class="toc"><li class="tocline"><a href="#api-01-api-s-garanderen-dat-operaties-veilig-en-of-idempotent-zijn" class="tocxref"><span class="secno">6.1.1 </span><span name="api-01" class="formerLink"></span>API-01: API's garanderen dat operaties "Veilig" en/of "Idempotent" zijn</a></li><li class="tocline"><a href="#api-02-toestandsinformatie-wordt-nooit-op-de-server-opgeslagen" class="tocxref"><span class="secno">6.1.2 </span><span name="api-02" class="formerLink"></span>API-02: Toestandsinformatie wordt nooit op de server opgeslagen</a></li><li class="tocline"><a href="#api-03-alleen-standaard-http-operaties-worden-toegepast" class="tocxref"><span class="secno">6.1.3 </span><span name="api-03" class="formerLink"></span>API-03: Alleen standaard HTTP-operaties worden toegepast</a></li><li class="tocline"><a href="#api-04-definitie-van-het-koppelvlak-is-in-het-nederlands-tenzij-er-sprake-is-van-een-officieel-engelstalig-begrippenkader" class="tocxref"><span class="secno">6.1.4 </span><span name="api-04" class="formerLink"></span>API-04: Definitie van het koppelvlak is in het Nederlands tenzij er sprake is van een officieel Engelstalig begrippenkader</a></li><li class="tocline"><a href="#api-05-resource-namen-zijn-zelfstandige-naamwoorden-in-het-meervoud" class="tocxref"><span class="secno">6.1.5 </span><span name="api-05" class="formerLink"></span>API-05: Resource namen zijn zelfstandige naamwoorden in het meervoud</a></li><li class="tocline"><a href="#api-06-relaties-van-geneste-resources-worden-bij-voorkeur-binnen-het-eindpunt-gecreeerd" class="tocxref"><span class="secno">6.1.6 </span><span name="api-06" class="formerLink"></span>API-06: Relaties van geneste resources worden bij voorkeur binnen het eindpunt gecreëerd</a></li><li class="tocline"><a href="#api-07-resources-ondersteunen-bij-voorkeur-lazy-en-eager-laden-van-relaties" class="tocxref"><span class="secno">6.1.7 </span><span name="api-07" class="formerLink"></span>API-07: Resources ondersteunen bij voorkeur "lazy" en "eager" laden van relaties</a></li><li class="tocline"><a href="#api-08-gelinkte-resources-worden-expliciet-en-selectief-mee-geladen" class="tocxref"><span class="secno">6.1.8 </span><span name="api-08" class="formerLink"></span>API-08: Gelinkte resources worden expliciet en selectief mee-geladen</a></li><li class="tocline"><a href="#api-09-indien-representatie-op-maat-wordt-ondersteund-dan-conform-dit-principe" class="tocxref"><span class="secno">6.1.9 </span><span name="api-09" class="formerLink"></span>API-09: Indien representatie op maat wordt ondersteund, dan conform dit principe.</a></li><li class="tocline"><a href="#api-10-acties-die-niet-passen-in-het-crud-model-worden-een-sub-resource" class="tocxref"><span class="secno">6.1.10 </span><span name="api-10" class="formerLink"></span>API-10: Acties die niet passen in het CRUD model worden een sub-resource</a></li><li class="tocline"><a href="#api-11-de-verbinding-is-altijd-versleuteld-met-minimaal-tls-v1-2" class="tocxref"><span class="secno">6.1.11 </span><span name="api-11" class="formerLink"></span>API-11: De verbinding is ALTIJD versleuteld met minimaal TLS V1.2</a></li><li class="tocline"><a href="#api-12-api-s-zijn-bij-voorkeur-alleen-bruikbaar-met-behulp-van-een-api-key" class="tocxref"><span class="secno">6.1.12 </span><span name="api-12" class="formerLink"></span>API-12: API's zijn bij voorkeur alleen bruikbaar met behulp van een API-key</a></li><li class="tocline"><a href="#api-13-tokens-worden-niet-gebruikt-in-query-parameters" class="tocxref"><span class="secno">6.1.13 </span><span name="api-13" class="formerLink"></span>API-13: Tokens worden niet gebruikt in query parameters</a></li><li class="tocline"><a href="#api-14-autorisatie-is-waar-nodig-gebaseerd-op-oauth-2-0" class="tocxref"><span class="secno">6.1.14 </span><span name="api-14" class="formerLink"></span>API-14: Autorisatie is waar nodig gebaseerd op OAuth 2.0</a></li><li class="tocline"><a href="#api-15-authenticatie-voor-api-s-met-toegangsbeperking-of-doelbinding-is-gebaseerd-op-pkioverheid" class="tocxref"><span class="secno">6.1.15 </span><span name="api-15" class="formerLink"></span>API-15: Authenticatie voor API's met toegangsbeperking of doelbinding is gebaseerd op PKIoverheid</a></li><li class="tocline"><a href="#api-16-documentatie-is-gebaseerd-op-oas-3-0-of-hoger" class="tocxref"><span class="secno">6.1.16 </span><span name="api-16" class="formerLink"></span>API-16: Documentatie is gebaseerd op OAS 3.0 of hoger</a></li><li class="tocline"><a href="#api-17-documentatie-is-in-het-nederlands-tenzij-er-sprake-is-van-bestaande-documentatie-in-het-engels-of-er-sprake-is-van-een-officieel-engelstalig-begrippenkader" class="tocxref"><span class="secno">6.1.17 </span><span name="api-17" class="formerLink"></span>API-17: Documentatie is in het Nederlands tenzij er sprake is van bestaande documentatie in het Engels of er sprake is van een officieel Engelstalig begrippenkader</a></li><li class="tocline"><a href="#api-18-wijzigingen-worden-gepubliceerd-met-een-uitfaseringschema" class="tocxref"><span class="secno">6.1.18 </span><span name="api-18" class="formerLink"></span>API-18: Wijzigingen worden gepubliceerd met een uitfaseringschema</a></li><li class="tocline"><a href="#api-19-de-overgangsperiode-bij-een-nieuwe-api-versie-is-maximaal-1-jaar" class="tocxref"><span class="secno">6.1.19 </span><span name="api-19" class="formerLink"></span>API-19: De overgangsperiode bij een nieuwe API versie is maximaal 1 jaar</a></li><li class="tocline"><a href="#api-20-alleen-het-major-versienummer-is-onderdeel-van-de-uri" class="tocxref"><span class="secno">6.1.20 </span><span name="api-20" class="formerLink"></span>API-20: Alleen het major versienummer is onderdeel van de URI</a></li><li class="tocline"><a href="#api-21-gebruikers-van-een-deprecated-api-worden-actief-gewaarschuwd" class="tocxref"><span class="secno">6.1.21 </span><span name="api-21" class="formerLink"></span>API-21 Gebruikers van een ‘deprecated' API worden actief gewaarschuwd</a></li><li class="tocline"><a href="#api-22-json-first-api-s-ontvangen-en-versturen-json" class="tocxref"><span class="secno">6.1.22 </span><span name="api-22" class="formerLink"></span>API-22: JSON first - API's ontvangen en versturen JSON</a></li><li class="tocline"><a href="#api-23-api-s-zijn-optioneel-voorzien-van-een-json-schema" class="tocxref"><span class="secno">6.1.23 </span><span name="api-23" class="formerLink"></span>API-23: API's zijn optioneel voorzien van een JSON Schema</a></li><li class="tocline"><a href="#api-24-content-negotiation-wordt-volledig-ondersteund" class="tocxref"><span class="secno">6.1.24 </span><span name="api-24" class="formerLink"></span>API-24: Content negotiation wordt volledig ondersteund</a></li><li class="tocline"><a href="#api-25-api-s-controleren-dat-de-content-type-header-is-ingesteld" class="tocxref"><span class="secno">6.1.25 </span><span name="api-25" class="formerLink"></span>API-25: API's controleren dat de Content-Type header is ingesteld</a></li><li class="tocline"><a href="#api-26-woorden-in-veldnamen-zijn-gedefinieerd-in-camelcase" class="tocxref"><span class="secno">6.1.26 </span><span name="api-26" class="formerLink"></span>API-26: Woorden in veldnamen zijn gedefinieerd in <code>camelCase</code></a></li><li class="tocline"><a href="#api-27-pretty-print-is-standaard-uitgeschakeld" class="tocxref"><span class="secno">6.1.27 </span><span name="api-27" class="formerLink"></span>API-27: Pretty print is standaard uitgeschakeld</a></li><li class="tocline"><a href="#api-28-een-json-response-heeft-geen-omhullende-envelop" class="tocxref"><span class="secno">6.1.28 </span><span name="api-28" class="formerLink"></span>API-28: Een JSON-response heeft geen omhullende envelop</a></li><li class="tocline"><a href="#api-29-api-s-ondersteunen-json-gecodeerde-post-put-en-patch-payloads" class="tocxref"><span class="secno">6.1.29 </span><span name="api-29" class="formerLink"></span>API-29: API's ondersteunen JSON gecodeerde POST, PUT en PATCH payloads</a></li><li class="tocline"><a href="#api-30-filter-query-parameters-zijn-gelijk-aan-de-velden-waarop-gefilterd-kan-worden" class="tocxref"><span class="secno">6.1.30 </span><span name="api-30" class="formerLink"></span>API-30: Filter query-parameters zijn gelijk aan de velden waarop gefilterd kan worden</a></li><li class="tocline"><a href="#api-31-voor-sorteren-wordt-de-query-parameter-sorteer-gebruikt" class="tocxref"><span class="secno">6.1.31 </span><span name="api-31" class="formerLink"></span>API-31: Voor sorteren wordt de query-parameter sorteer gebruikt</a></li><li class="tocline"><a href="#api-32-voor-vrije-tekst-zoeken-wordt-een-query-parameter-zoek-gebruikt" class="tocxref"><span class="secno">6.1.32 </span><span name="api-32" class="formerLink"></span>API-32: Voor vrije-tekst zoeken wordt een query-parameter zoek gebruikt</a></li><li class="tocline"><a href="#api-33-api-s-die-vrije-tekst-zoeken-ondersteunen-kunnen-overweg-met-twee-soorten-wildcard-karakters-en" class="tocxref"><span class="secno">6.1.33 </span><span name="api-33" class="formerLink"></span>API-33: API's die vrije-tekst zoeken ondersteunen kunnen overweg met twee soorten wildcard karakters: <code>*</code> en <code>?</code></a></li><li class="tocline"><a href="#api-34-geo-api-s-ontvangen-en-versturen-bij-voorkeur-geojson" class="tocxref"><span class="secno">6.1.34 </span><span name="api-34" class="formerLink"></span>API-34: GEO API's ontvangen en versturen bij voorkeur GeoJSON</a></li><li class="tocline"><a href="#api-35-geojson-is-onderdeel-van-de-embedded-resource-in-de-json-response" class="tocxref"><span class="secno">6.1.35 </span><span name="api-35" class="formerLink"></span>API-35: GeoJSON is onderdeel van de embedded resource in de JSON response</a></li><li class="tocline"><a href="#api-36-voor-geo-queries-is-een-post-end-point-beschikbaar" class="tocxref"><span class="secno">6.1.36 </span><span name="api-36" class="formerLink"></span>API-36: Voor GEO queries is een POST end-point beschikbaar</a></li><li class="tocline"><a href="#api-37-post-end-points-zijn-uitbreidbaar-voor-gecombineerde-vragen" class="tocxref"><span class="secno">6.1.37 </span><span name="api-37" class="formerLink"></span>API-37: POST end-points zijn uitbreidbaar voor gecombineerde vragen</a></li><li class="tocline"><a href="#api-38-resultaten-van-een-globale-geometrische-zoekvraag-worden-in-de-relevante-geometrische-context-geplaatst" class="tocxref"><span class="secno">6.1.38 </span><span name="api-38" class="formerLink"></span>API-38: Resultaten van een globale geometrische zoekvraag worden in de relevante geometrische context geplaatst</a></li><li class="tocline"><a href="#api-39-het-voorkeur-coordinatenstelsels-crs-is-etrs89-maar-het-crs-wordt-niet-impliciet-geselecteerd" class="tocxref"><span class="secno">6.1.39 </span><span name="api-39" class="formerLink"></span>API-39: Het voorkeur-coördinatenstelsels (CRS) is ETRS89, maar het CRS wordt niet impliciet geselecteerd</a></li><li class="tocline"><a href="#api-40-het-coordinatenstelsel-crs-van-de-vraag-en-het-antwoord-wordt-in-de-header-meegestuurd" class="tocxref"><span class="secno">6.1.40 </span><span name="api-40" class="formerLink"></span>API-40: Het coördinatenstelsel (CRS) van de vraag en het antwoord wordt in de header meegestuurd</a></li><li class="tocline"><a href="#api-41-het-gewenste-coordinatenstelsel-wordt-op-basis-van-content-negotiation-overeengekomen" class="tocxref"><span class="secno">6.1.41 </span><span name="api-41" class="formerLink"></span>API-41: Het gewenste coördinatenstelsel wordt op basis van content negotiation overeengekomen</a></li><li class="tocline"><a href="#api-42-paginering-wordt-gerealiseerd-op-basis-van-json-hal-bij-media-type-application-hal-json" class="tocxref"><span class="secno">6.1.42 </span><span name="api-42" class="formerLink"></span>API-42: Paginering wordt gerealiseerd op basis van JSON+HAL bij media type: application/hal+json</a></li><li class="tocline"><a href="#api-43-waar-relevant-wordt-caching-toegepast" class="tocxref"><span class="secno">6.1.43 </span><span name="api-43" class="formerLink"></span>API-43: Waar relevant wordt caching toegepast</a></li><li class="tocline"><a href="#api-44-beperken-van-het-aantal-verzoeken-per-tijdsperiode-wordt-aangeraden" class="tocxref"><span class="secno">6.1.44 </span><span name="api-44" class="formerLink"></span>API-44: Beperken van het aantal verzoeken per tijdsperiode wordt aangeraden</a></li><li class="tocline"><a href="#api-45-begrenzingen-worden-proactief-gemeld" class="tocxref"><span class="secno">6.1.45 </span><span name="api-45" class="formerLink"></span>API-45: Begrenzingen worden proactief gemeld</a></li><li class="tocline"><a href="#api-46-foutafhandeling-is-gestandaardiseerd" class="tocxref"><span class="secno">6.1.46 </span><span name="api-46" class="formerLink"></span>API-46: Foutafhandeling is gestandaardiseerd</a></li><li class="tocline"><a href="#api-47-api-s-passen-de-verplichte-http-statuscodes-toe" class="tocxref"><span class="secno">6.1.47 </span><span name="api-47" class="formerLink"></span>API-47: API's passen de verplichte HTTP-statuscodes toe</a></li><li class="tocline"><a href="#api-48-api-endpoints-mogen-geen-trailing-slashes-bevatten" class="tocxref"><span class="secno">6.1.48 </span><span name="api-48" class="formerLink"></span>API-48: API-endpoints mogen géén trailing slashes bevatten</a></li><li class="tocline"><a href="#api-49-gebruik-publieke-api-key" class="tocxref"><span class="secno">6.1.49 </span><span name="api-49" class="formerLink"></span>API-49: Gebruik "publieke" API-Key</a></li><li class="tocline"><a href="#api-50-controleer-toegang-en-gebruik-cors-header" class="tocxref"><span class="secno">6.1.50 </span><span name="api-50" class="formerLink"></span>API-50: Controleer toegang en gebruik CORS-header</a></li><li class="tocline"><a href="#api-51-oas-via-basis-uri-beschikbaar-in-json-formaat" class="tocxref"><span class="secno">6.1.51 </span><span name="api-51" class="formerLink"></span>API-51: OAS via basis-URI beschikbaar in JSON-formaat</a></li></ol></li><li class="tocline"><a href="#architectuur" class="tocxref"><span class="secno">6.2 </span>Architectuur</a><ol class="toc"><li class="tocline"><a href="#inleiding-2" class="tocxref"><span class="secno">6.2.1 </span>Inleiding</a></li><li class="tocline"><a href="#diensten-toegang-api-management" class="tocxref"><span class="secno">6.2.2 </span>Diensten toegang & API management</a></li><li class="tocline"><a href="#beveiliging-0" class="tocxref"><span class="secno">6.2.3 </span>Beveiliging</a></li><li class="tocline"><a href="#autorisatie" class="tocxref"><span class="secno">6.2.4 </span>Autorisatie</a></li><li class="tocline"><a href="#semantiek" class="tocxref"><span class="secno">6.2.5 </span>Semantiek</a></li><li class="tocline"><a href="#metadata" class="tocxref"><span class="secno">6.2.6 </span>Metadata</a></li><li class="tocline"><a href="#interoperabiliteit" class="tocxref"><span class="secno">6.2.7 </span>Interoperabiliteit</a></li><li class="tocline"><a href="#patronen-0" class="tocxref"><span class="secno">6.2.8 </span><!-- 6.3.3 --> Patronen</a><ol class="toc"><li class="tocline"><a href="#herbruikbaarheid" class="tocxref"><span class="secno">6.2.8.1 </span>Herbruikbaarheid</a></li><li class="tocline"><a href="#patroon-bijhouden" class="tocxref"><span class="secno">6.2.8.2 </span>Patroon ‘Bijhouden’</a></li><li class="tocline"><a href="#patroon-afnemen" class="tocxref"><span class="secno">6.2.8.3 </span>Patroon ‘Afnemen’</a></li><li class="tocline"><a href="#patroon-terugmelden" class="tocxref"><span class="secno">6.2.8.4 </span>Patroon ‘Terugmelden’</a></li></ol></li><li class="tocline"><a href="#componenten" class="tocxref"><span class="secno">6.2.9 </span>Componenten</a></li><li class="tocline"><a href="#begrippen" class="tocxref"><span class="secno">6.2.10 </span>Begrippen</a></li><li class="tocline"><a href="#standaarden" class="tocxref"><span class="secno">6.2.11 </span>Standaarden</a></li><li class="tocline"><a href="#use-cases" class="tocxref"><span class="secno">6.2.12 </span>Use cases</a></li><li class="tocline"><a href="#architectuur-bijlagen" class="tocxref"><span class="secno">6.2.13 </span>Architectuur bijlagen</a></li></ol></li></ol></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">A. </span>Referenties</a><ol class="toc"><li class="tocline"><a href="#normatieve-referenties" class="tocxref"><span class="secno">A.1 </span>Normatieve referenties</a></li></ol></li></ol></nav>
<!-- vanaf hier per hoofdstuk een sectie of een div in het document ------------------------ -->
<!-- Secties komen in de inhoudsopgave div's niet ------------------------------------------ -->
<!-- Secties hebben verplicht <h2> tags, div's niet ---------------------------------------- -->
<section data-format="markdown" aria-busy="false" id="inleiding"><!--OddPage--><h2 id="x1-inleiding"><span class="secno">1. </span>Inleiding</h2><p>Dit hoofdstuk geeft een inleiding op de Nederlandse API strategie</p><section id="status-van-de-api-strategie"><h3 id="x1-1-status-van-de-api-strategie"><span class="secno">1.1 </span>Status van de API strategie</h3></section><section id="leeswijzer"><h3 id="x1-2-leeswijzer"><span class="secno">1.2 </span>Leeswijzer</h3><p>Dit document bevat twee delen, waarbij het eerste deel "niet-technisch" en het tweede deel "technisch" van aard is.
In het eerste deel zitten de hoofdstukken <a href="#communicatie-en-beleid">Communicatie en Beleid</a> en <a href="#gebruikerswensen">Gebruikerswensen</a>.</p><p>Het tweede deel bevat de hoofdstukken <a href="#api-designrules-ontwerpregels">API designrules</a>, <a href="#beveiliging">Beveiliging</a> en <a href="#architectuur">Architectuur</a>, waarin een technische uitwerking van de eerste twee hoofdstukken staat. </p></section></section>
<section data-format="markdown" aria-busy="false" id="communicatie-en-beleid"><!--OddPage--><h2 id="x2-communicatie-en-beleid"><span class="secno">2. </span>Communicatie en Beleid</h2><blockquote>
<p><em>Dit hoofdstuk is een Management samenvatting voor managers van overheden en partijen die met de overheid te maken hebben.</em>
<em>Dit hoofdstuk beschrijft:</em><br><em>- waarom wil je API's gebruiken.</em><br><em>- Hoe relateert het gebruik van API's aan de maatschappelijke discussie.</em><br><em>- Wat is de uitwerking voor inclusiviteit regie op gegevens veiligheid.</em><br><em>- Uitgelegd en verduidelijkt met voorbeelden</em> </p>
</blockquote><section id="application-programming-interfaces-wat-zijn-het-en-waarom-hierop-in-te-zetten"><h3 id="x2-1-application-programming-interfaces-wat-zijn-het-en-waarom-hierop-in-te-zetten"><span class="secno">2.1 </span>Application Programming Interfaces, wat zijn het en waarom hierop in te zetten</h3><p>Dit hoofdstuk heeft als doel om voor het beleid- en managementniveau te duiden
wat API’s zijn en wat het belang ervan is. Het geeft inzicht in de mogelijkheden
van API’s en waarom het voor de overheid van meerwaarde is om strategisch om te
gaan met het aanbieden van API’s.</p></section><section id="de-rol-van-api-s-in-de-platform-economie"><h3 id="x2-2-de-rol-van-api-s-in-de-platform-economie"><span class="secno">2.2 </span>De rol van API’s in de platform economie</h3><p>Online platformen nemen een steeds grotere rol in binnen onze samenleving. Zowel
als het gaat om sociale interactie als wanneer het gaat om financiële
transacties. Het is een organisatievorm die in toenemende mate aan belang wint
en hele sectoren kan transformeren. Deze platformen zorgen ervoor dat personen
en diensten elkaar makkelijk kunnen vinden, waardoor er nieuwe verbindingen
tussen vele (onbekende) partijen ontstaan en ruimte ontstaat voor innovatie.
Voor allerhande problemen en toepassingen zijn er dan ook steeds meer
programma’s en app’s die je helpen. Bekende voorbeelden zijn Facebook, Google,
Amazon en Airbnb, maar ook Adyen en BOL zijn platformen waar mensen en/of
diensten elkaar vinden om transacties uit te voeren. Deze platformen zijn
bovendien in staat om informatie snel en eenvoudig uit te wisselen en systemen
efficiënt aan elkaar te koppelen. Deze koppelingen tussen systemen worden vaak
via API’s gerealiseerd. Vanuit technisch perspectief zijn het dan ook API’s die
ervoor hebben gezorgd dat deze platformen zo wendbaar zijn, makkelijk kunnen
opschalen en dienstverlening centraal kunnen stellen. Hierdoor zijn ze in staat
om snel nieuwe diensten uit te rollen en binnen enkele jaren uit te groeien tot
organisaties die miljoenen mensen bereiken. Los van de discussie wat de impact
is van deze platformen op onze samenleving, kan de overheid leren van de
technieken die ze gebruiken om verschillende online diensten, bronnen en
(basis)registraties beter te ontsluiten en met elkaar te laten samenwerken – via
API’s.</p></section><section id="wat-is-een-api"><h3 id="x2-3-wat-is-een-api"><span class="secno">2.3 </span>Wat is een API</h3><p>Een Application Programming Interface (API) is een combinatie van technische
bestanden, documentatie en andere ondersteuning die helpen bij het aanroepen van
externe applicaties (Als het in deze API-strategie gaat over API’s dan bedoelen
we daarmee RESTful API’s). Een API wordt gepubliceerd door een
softwareontwikkelaar, zodat andere ontwikkelaars weten hoe de software te
koppelen aan de eigen software. Zodoende kunnen twee applicaties rechtstreeks en
online met elkaar communiceren. Het is daarmee geen standaard, maar eerder een
handleiding die kan worden gebruikt voor een machine tot machine koppeling. Met
name daar waar veel digitale diensten met elkaar samenwerken en informatie
realtime op een makkelijke en toegankelijke manier willen delen zijn API’s zeer
geschikt. De belangrijke eigenschappen van moderne API’s zijn:</p><ul>
<li><p>prestaties (het zorgt ervoor dat machines snel met elkaar praten);</p>
</li>
<li><p>schaalbaarheid (het zorgt ervoor dat het blijft werken bij veel
gebruik(ers);</p>
</li>
<li><p>simpele interfaces (de communicatie tussen componenten is eenvoudig en
overzichtelijk).</p>
</li>
</ul><p><em>API’s kunnen gezien worden als ‘proven technology’, er is veel kennis over en
ervaring mee in de markt. Berichten uitwisselen via API’s is niet perse
onveiliger of veiliger dan hoe de overheid op dit moment haar
berichtenuitwisseling organiseert. Het gebruik van API’s beperkt zich daarmee
niet alleen tot open data, maar kan juist ook goed worden ingezet voor meer
gevoelige / gesloten data.</em></p></section><section id="achtergrond"><h3 id="x2-4-achtergrond"><span class="secno">2.4 </span>Achtergrond</h3><p>De opkomst van de API begon rond 2008. Tot die tijd was er op het internet maar
één kanaal belangrijk: de menselijke gebruiker met een webbrowser. Sindsdien
zijn er veel meer kanalen ontstaan via welke je als organisatie je diensten wil
ontsluiten, bijvoorbeeld via mobiele devices, internet of things toepassingen,
social media platforms en wearables. Ook de beweging naar cloud computing draagt
bij aan het gebruik van API’s. Diensten worden steeds meer in de cloud
aangeboden (en afgenomen), waarbij het nodig kan zijn om deze diensten met
elkaar te integreren in andere producten.</p><p>Voor Nederlandse burgers en bedrijven betekenen de mogelijkheden die API’s
bieden dat ze hetzelfde van de overheid verlangen als wat ze gewend zijn van
(commerciële) platforms. Deze platforms zijn slim in het creëren van nieuwe
diensten door het koppelen van verschillende API’s en kunnen makkelijk inspelen
op nieuwe ontwikkelingen en goede dienstverlening. Daarnaast willen burgers
informatie en diensten van de overheid snel en plaats-onafhankelijk gebruiken op
alle kanalen die ze gewend zijn. De overheid biedt echter nog maar weinig API’s
aan en maakt nog te gefragmenteerd gebruik van deze techniek. Omdat veel
overheid-ICT is gebaseerd op principes uit de jaren ’90 en begin jaren ’00, kan
de overheid onvoldoende meebewegen met technologische ontwikkelingen, nieuwe
wetgeving en verwachtingen van haar burgers en bedrijven en raakt hierdoor
achterop op technologisch vlak.</p></section><section id="belang-voor-de-overheid"><h3 id="x2-5-belang-voor-de-overheid"><span class="secno">2.5 </span>Belang voor de overheid</h3><p>Verschillende ontwikkelingen en factoren maken het voor de overheid relevant om
meer in te zetten op gegevensuitwisseling via API’s:</p><ul>
<li><p>Meer autonomie en controle over gegevens. API’s maken het makkelijker om
gegevens vanuit de bron te ontsluiten en dan wel alleen die gegevens die
noodzakelijk zijn voor een specifieke vraag. Hierdoor wordt voorkomen dat er
onnodig veel gegevens worden uitgewisseld. Ook is het voordeel dat gegevens
op één plek worden gemuteerd en vanuit daar worden geraadpleegd. Hierdoor is
er meer grip op de informatiehuishouding en zijn de beheerlasten lager.</p>
</li>
<li><p>Er zijn een toenemend aantal (tijdelijke) samenwerkingsverbanden en
organisaties die met elkaar gegevens uitwisselen. Interactie tussen
personen, organisaties, diensten en applicaties zijn meer fluïde en tussen
(voor elkaar) onbekende organisaties of personen. Zie bijvoorbeeld een Smart
City waar veel verschillende organisaties en personen bij elkaar komen op
verschillende onderwerpen. Relatief neemt het belang van vaste ketens
hierdoor af. Makkelijke koppelingen zijn in deze situaties noodzakelijk
zonder grote investeringen of uitgebreide studies.</p>
</li>
<li><p>De noodzaak van een meer flexibele ICT en minder faalkosten bij het
ontwikkelen van ICT. De huidige manier van ICT ontwikkeling is door agile te
werken. Met deze methode kan je beter incrementeel het huidige ICT landschap
verbeteren en niet via een ‘big bang’. API’s sluiten goed aan op deze trend
omdat aansluiten en ontwikkelen makkelijker is. Het gevolg is een minder
complexe ICT met een lagere beheerlast.</p>
</li>
<li><p>Bevorderen van innovatie. De huidige ICT infrastructuur van de overheid is
gebouwd met als primair doel gegevensuitwisseling binnen de overheid zelf.
API gedreven informatie uitwisseling draait dit om en gaat ervan uit dat
potentieel iedereen zou moeten kunnen aansluiten en met elkaar samenwerken,
ook nu nog onbekende partijen. Aansluiten moet dan zo makkelijk, eenduidig
en goedkoop mogelijk zijn en de kwaliteit van data moet hoog zijn zodat
realtime gegevensuitwisseling mogelijk is. Op deze manier wordt innovatie
beter gefaciliteerd en kunnen bedrijven en overheden meer met elkaar
samenwerken.</p>
</li>
<li><p>Er is een tekort aan goed geschoold ICT personeel en de overheid heeft
moeite om goed ICT personeel te vinden. Zodra beter wordt aangesloten op wat
de gangbare kennis in de markt is en er meer gebruik wordt gemaakt van de
mogelijkheden die moderne technieken bieden, wordt het werken bij de
overheid interessanter. Hierdoor groeit het aanbod van potentiële kandidaten
en wordt de overheid een aantrekkelijkere werkgever voor ICT personeel.</p>
</li>
</ul></section><section id="developer-first"><h3 id="x2-6-developer-first"><span class="secno">2.6 </span>Developer First</h3><p>De belangrijkste doelgroep van de digitale overheid die vaak wordt vergeten, is
de programmeur. Vaak gaat het binnen de digitale overheid over betere
dienstverlening voor burgers en bedrijven, maar bij het neerzetten van een goede
ICT dienstverlening is de softwareontwikkelaar als doelgroep cruciaal. Het is
immers de ontwikkelaar die de producten gaat bouwen en de data ontsluit en
daarmee een cruciale rol inneemt als intermediair in de dienstverlening naar burgers en
bedrijven. In de praktijk is er echter weinig aandacht om deze doelgroep goed te
faciliteren.</p><p>Deze ‘developer first’ gedachte staat juist centraal binnen de online
platformen. Daar wordt uitgegaan van een scheiding tussen data en processen.
Voor een organisatie is het namelijk ondoenlijk om je te bemoeien met hoe de
userinterface op alle kanalen en diensten eruit ziet. Terwijl het van
toegevoegde waarde kan zijn om zijn unieke resources te ontsluiten zodat
ontwikkelaars van andere platforms / organisaties hierop kunnen aansluiten en
deze kunnen integreren. Als organisatie wil je er natuurlijk wel voor zorgen dat
zoveel mogelijk gebruik gemaakt wordt van jouw API. Als anderen deze API
hergebruiken krijg je namelijk ook hun gebruikers of klanten erbij en heb je een
breder bereik. Hergebruik is te realiseren door het programmeurs van andere
partijen zo makkelijk mogelijk te maken.</p><p>Er wordt dan ook voor gepleit om de ‘time to first call’ zo laag mogelijk te