From a5171fb7c5cb77f459d00c1437906976e0d7bc41 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 27 Nov 2019 06:53:23 +0100 Subject: [PATCH 01/46] Setting up deploy file --- .github/deploy.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/deploy.yml diff --git a/.github/deploy.yml b/.github/deploy.yml new file mode 100644 index 00000000..3bd4c3c9 --- /dev/null +++ b/.github/deploy.yml @@ -0,0 +1,4 @@ +# View examples and documentation at https://deliverybot.dev/docs/ +production: + environment: production + production_environment: true From f394cee1fc974e1af641c7e8d704e60bd48db79d Mon Sep 17 00:00:00 2001 From: bbrands02 <57346398+bbrands02@users.noreply.github.com> Date: Mon, 2 Dec 2019 16:17:03 +0100 Subject: [PATCH 02/46] APIProperty removed --- TUTORIAL.md | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/TUTORIAL.md b/TUTORIAL.md index 74aad7ba..4107e573 100644 --- a/TUTORIAL.md +++ b/TUTORIAL.md @@ -224,18 +224,7 @@ with //... /** * @var \Ramsey\Uuid\UuidInterface - * - * @ApiProperty( - * identifier=true, - * attributes={ - * "openapi_context"={ - * "description" = "The UUID identifier of this object", - * "type"="string", - * "format"="uuid", - * "example"="e2984465-190a-4562-829e-a8cca81aa35d" - * } - * } - * ) + * @example e2984465-190a-4562-829e-a8cca81aa35d * * @Groups({"read"}) * @ORM\Id From 78057468b516a073c345049c943f066a4b535686 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2019 18:59:10 +0000 Subject: [PATCH 03/46] Bump symfony/cache from 4.3.4 to 4.3.9 in /api Bumps [symfony/cache](https://github.com/symfony/cache) from 4.3.4 to 4.3.9. - [Release notes](https://github.com/symfony/cache/releases) - [Changelog](https://github.com/symfony/cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/symfony/cache/compare/v4.3.4...v4.3.9) Signed-off-by: dependabot[bot] --- api/composer.lock | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/api/composer.lock b/api/composer.lock index cdf70a77..8f53d27f 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -2229,8 +2229,8 @@ "authors": [ { "name": "Luís Otávio Cobucci Oblonczyk", - "role": "Developer", - "email": "lcobucci@gmail.com" + "email": "lcobucci@gmail.com", + "role": "Developer" } ], "description": "A simple library to work with JSON Web Token and JSON Web Signature", @@ -3025,16 +3025,16 @@ }, { "name": "psr/log", - "version": "1.1.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, "require": { @@ -3043,7 +3043,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -3068,7 +3068,7 @@ "psr", "psr-3" ], - "time": "2018-11-20T15:27:04+00:00" + "time": "2019-11-01T11:05:21+00:00" }, { "name": "ralouphie/getallheaders", @@ -3420,16 +3420,16 @@ }, { "name": "symfony/cache", - "version": "v4.3.4", + "version": "v4.3.9", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "1d8f7fee990c586f275cde1a9fc883d6b1e2d43e" + "reference": "2a7bcc592adcaab9efc165bbced5a91fe905fad4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/1d8f7fee990c586f275cde1a9fc883d6b1e2d43e", - "reference": "1d8f7fee990c586f275cde1a9fc883d6b1e2d43e", + "url": "https://api.github.com/repos/symfony/cache/zipball/2a7bcc592adcaab9efc165bbced5a91fe905fad4", + "reference": "2a7bcc592adcaab9efc165bbced5a91fe905fad4", "shasum": "" }, "require": { @@ -3494,20 +3494,20 @@ "caching", "psr6" ], - "time": "2019-08-26T08:26:39+00:00" + "time": "2019-12-01T10:50:31+00:00" }, { "name": "symfony/cache-contracts", - "version": "v1.1.5", + "version": "v1.1.7", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "ec5524b669744b5f1dc9c66d3c2b091eb7e7f0db" + "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ec5524b669744b5f1dc9c66d3c2b091eb7e7f0db", - "reference": "ec5524b669744b5f1dc9c66d3c2b091eb7e7f0db", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1", + "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1", "shasum": "" }, "require": { @@ -3552,7 +3552,7 @@ "interoperability", "standards" ], - "time": "2019-06-13T11:15:36+00:00" + "time": "2019-10-04T21:43:27+00:00" }, { "name": "symfony/config", @@ -6313,16 +6313,16 @@ }, { "name": "symfony/service-contracts", - "version": "v1.1.6", + "version": "v1.1.8", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3" + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ea7263d6b6d5f798b56a45a5b8d686725f2719a3", - "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", "shasum": "" }, "require": { @@ -6367,7 +6367,7 @@ "interoperability", "standards" ], - "time": "2019-08-20T14:44:19+00:00" + "time": "2019-10-14T12:27:06+00:00" }, { "name": "symfony/stopwatch", @@ -6749,28 +6749,28 @@ }, { "name": "symfony/var-exporter", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "d5b4e2d334c1d80e42876c7d489896cfd37562f2" + "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/d5b4e2d334c1d80e42876c7d489896cfd37562f2", - "reference": "d5b4e2d334c1d80e42876c7d489896cfd37562f2", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/e566070effe60b8d16b99e958cdbd92aa2e470cb", + "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb", "shasum": "" }, "require": { "php": "^7.1.3" }, "require-dev": { - "symfony/var-dumper": "^4.1.1" + "symfony/var-dumper": "^4.1.1|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -6805,7 +6805,7 @@ "instantiate", "serialize" ], - "time": "2019-08-22T07:33:08+00:00" + "time": "2019-12-01T08:39:58+00:00" }, { "name": "symfony/web-link", From 17d2e31d35d09ef9672eb3aca08d5ab9abbe7873 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2019 20:09:32 +0000 Subject: [PATCH 04/46] Bump symfony/security-http from 4.3.4 to 4.3.9 in /api Bumps [symfony/security-http](https://github.com/symfony/security-http) from 4.3.4 to 4.3.9. - [Release notes](https://github.com/symfony/security-http/releases) - [Commits](https://github.com/symfony/security-http/compare/v4.3.4...v4.3.9) Signed-off-by: dependabot[bot] --- api/composer.lock | 230 +++++++++++++++++++++++----------------------- 1 file changed, 117 insertions(+), 113 deletions(-) diff --git a/api/composer.lock b/api/composer.lock index cdf70a77..71601ac8 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -2229,8 +2229,8 @@ "authors": [ { "name": "Luís Otávio Cobucci Oblonczyk", - "role": "Developer", - "email": "lcobucci@gmail.com" + "email": "lcobucci@gmail.com", + "role": "Developer" } ], "description": "A simple library to work with JSON Web Token and JSON Web Signature", @@ -3025,16 +3025,16 @@ }, { "name": "psr/log", - "version": "1.1.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, "require": { @@ -3043,7 +3043,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -3068,7 +3068,7 @@ "psr", "psr-3" ], - "time": "2018-11-20T15:27:04+00:00" + "time": "2019-11-01T11:05:21+00:00" }, { "name": "ralouphie/getallheaders", @@ -3766,16 +3766,16 @@ }, { "name": "symfony/debug", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced" + "reference": "b8600a1d7d20b0e80906398bb1f50612fa074a8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/afcdea44a2e399c1e4b52246ec8d54c715393ced", - "reference": "afcdea44a2e399c1e4b52246ec8d54c715393ced", + "url": "https://api.github.com/repos/symfony/debug/zipball/b8600a1d7d20b0e80906398bb1f50612fa074a8e", + "reference": "b8600a1d7d20b0e80906398bb1f50612fa074a8e", "shasum": "" }, "require": { @@ -3786,12 +3786,12 @@ "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/http-kernel": "~3.4|~4.0" + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -3818,7 +3818,7 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-08-20T14:27:59+00:00" + "time": "2019-11-28T13:33:56+00:00" }, { "name": "symfony/dependency-injection", @@ -4103,16 +4103,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2" + "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/429d0a1451d4c9c4abe1959b2986b88794b9b7d2", - "reference": "429d0a1451d4c9c4abe1959b2986b88794b9b7d2", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b3c3068a72623287550fe20b84a2b01dcba2686f", + "reference": "b3c3068a72623287550fe20b84a2b01dcba2686f", "shasum": "" }, "require": { @@ -4128,12 +4128,12 @@ }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -4142,7 +4142,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -4169,20 +4169,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-08-26T08:55:16+00:00" + "time": "2019-11-28T13:33:56+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.5", + "version": "v1.1.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", "shasum": "" }, "require": { @@ -4227,7 +4227,7 @@ "interoperability", "standards" ], - "time": "2019-06-20T06:46:26+00:00" + "time": "2019-09-17T09:54:03+00:00" }, { "name": "symfony/expression-language", @@ -4756,31 +4756,31 @@ }, { "name": "symfony/http-foundation", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc" + "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d804bea118ff340a12e22a79f9c7e7eb56b35adc", - "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8bccc59e61b41963d14c3dbdb23181e5c932a1d5", + "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/mime": "^4.3", + "symfony/mime": "^4.3|^5.0", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" + "symfony/expression-language": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -4807,20 +4807,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-08-26T08:55:16+00:00" + "time": "2019-11-28T13:33:56+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.3.4", + "version": "v4.3.9", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52" + "reference": "3feb99b01560f94173d8fbc5a203ea497d01d499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5e0fc71be03d52cd00c423061cfd300bd6f92a52", - "reference": "5e0fc71be03d52cd00c423061cfd300bd6f92a52", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3feb99b01560f94173d8fbc5a203ea497d01d499", + "reference": "3feb99b01560f94173d8fbc5a203ea497d01d499", "shasum": "" }, "require": { @@ -4899,20 +4899,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2019-08-26T16:47:42+00:00" + "time": "2019-12-01T14:00:23+00:00" }, { "name": "symfony/inflector", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/inflector.git", - "reference": "b25a8dc15fada858432efa083c1ecd2cef5991a7" + "reference": "98581481d9ddabe4db3a66e10202fe1fa08d791b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/b25a8dc15fada858432efa083c1ecd2cef5991a7", - "reference": "b25a8dc15fada858432efa083c1ecd2cef5991a7", + "url": "https://api.github.com/repos/symfony/inflector/zipball/98581481d9ddabe4db3a66e10202fe1fa08d791b", + "reference": "98581481d9ddabe4db3a66e10202fe1fa08d791b", "shasum": "" }, "require": { @@ -4922,7 +4922,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -4957,7 +4957,7 @@ "symfony", "words" ], - "time": "2019-08-06T18:44:23+00:00" + "time": "2019-11-06T12:02:32+00:00" }, { "name": "symfony/intl", @@ -5226,16 +5226,16 @@ }, { "name": "symfony/mime", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "987a05df1c6ac259b34008b932551353f4f408df" + "reference": "010cc488e56cafe5f7494dea70aea93100c234df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/987a05df1c6ac259b34008b932551353f4f408df", - "reference": "987a05df1c6ac259b34008b932551353f4f408df", + "url": "https://api.github.com/repos/symfony/mime/zipball/010cc488e56cafe5f7494dea70aea93100c234df", + "reference": "010cc488e56cafe5f7494dea70aea93100c234df", "shasum": "" }, "require": { @@ -5243,14 +5243,17 @@ "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, + "conflict": { + "symfony/mailer": "<4.4" + }, "require-dev": { "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "~3.4|^4.1" + "symfony/dependency-injection": "^3.4|^4.1|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -5281,7 +5284,7 @@ "mime", "mime-type" ], - "time": "2019-08-22T08:16:11+00:00" + "time": "2019-11-30T08:27:26+00:00" }, { "name": "symfony/options-resolver", @@ -5397,16 +5400,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", "shasum": "" }, "require": { @@ -5420,7 +5423,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5455,20 +5458,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", "shasum": "" }, "require": { @@ -5480,7 +5483,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5514,20 +5517,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T14:18:11+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "04ce3335667451138df4307d6a9b61565560199e" + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", - "reference": "04ce3335667451138df4307d6a9b61565560199e", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", "shasum": "" }, "require": { @@ -5536,7 +5539,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5569,20 +5572,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", - "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", "shasum": "" }, "require": { @@ -5591,7 +5594,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5627,7 +5630,7 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T16:25:15+00:00" }, { "name": "symfony/process", @@ -5680,24 +5683,24 @@ }, { "name": "symfony/property-access", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "bb0c302375ffeef60c31e72a4539611b7f787565" + "reference": "bafdc8c3a9d2671af4a81baec0fcc4687c0c17bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/bb0c302375ffeef60c31e72a4539611b7f787565", - "reference": "bb0c302375ffeef60c31e72a4539611b7f787565", + "url": "https://api.github.com/repos/symfony/property-access/zipball/bafdc8c3a9d2671af4a81baec0fcc4687c0c17bc", + "reference": "bafdc8c3a9d2671af4a81baec0fcc4687c0c17bc", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/inflector": "~3.4|~4.0" + "symfony/inflector": "^3.4|^4.0|^5.0" }, "require-dev": { - "symfony/cache": "~3.4|~4.0" + "symfony/cache": "^3.4|^4.0|^5.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." @@ -5705,7 +5708,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -5743,7 +5746,7 @@ "property path", "reflection" ], - "time": "2019-08-26T08:26:39+00:00" + "time": "2019-12-01T10:50:45+00:00" }, { "name": "symfony/property-info", @@ -5983,35 +5986,36 @@ }, { "name": "symfony/security-core", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "a8c67a8bc6bd8012c5d6b70cb030ca3422476caa" + "reference": "312c91f90786fd7add89e8542cfc98543f0e60db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/a8c67a8bc6bd8012c5d6b70cb030ca3422476caa", - "reference": "a8c67a8bc6bd8012c5d6b70cb030ca3422476caa", + "url": "https://api.github.com/repos/symfony/security-core/zipball/312c91f90786fd7add89e8542cfc98543f0e60db", + "reference": "312c91f90786fd7add89e8542cfc98543f0e60db", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/service-contracts": "^1.1" + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/event-dispatcher": "<4.3", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", "symfony/security-guard": "<4.3" }, "require-dev": { "psr/container": "^1.0", "psr/log": "~1.0", "symfony/event-dispatcher": "^4.3", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/ldap": "~3.4|~4.0", - "symfony/validator": "^3.4.31|^4.3.4" + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -6024,7 +6028,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -6051,7 +6055,7 @@ ], "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", - "time": "2019-08-26T08:55:16+00:00" + "time": "2019-11-20T10:44:55+00:00" }, { "name": "symfony/security-csrf", @@ -6168,16 +6172,16 @@ }, { "name": "symfony/security-http", - "version": "v4.3.4", + "version": "v4.3.9", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "65281f9b7c7a77cccaa5b89026ef2a02940dc2cc" + "reference": "75e96df3a1b9b38c67e2fa208894f72dae5e1147" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/65281f9b7c7a77cccaa5b89026ef2a02940dc2cc", - "reference": "65281f9b7c7a77cccaa5b89026ef2a02940dc2cc", + "url": "https://api.github.com/repos/symfony/security-http/zipball/75e96df3a1b9b38c67e2fa208894f72dae5e1147", + "reference": "75e96df3a1b9b38c67e2fa208894f72dae5e1147", "shasum": "" }, "require": { @@ -6229,7 +6233,7 @@ ], "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", - "time": "2019-08-26T08:26:39+00:00" + "time": "2019-11-30T13:16:45+00:00" }, { "name": "symfony/serializer", @@ -6313,16 +6317,16 @@ }, { "name": "symfony/service-contracts", - "version": "v1.1.6", + "version": "v1.1.8", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3" + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ea7263d6b6d5f798b56a45a5b8d686725f2719a3", - "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", + "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", "shasum": "" }, "require": { @@ -6367,7 +6371,7 @@ "interoperability", "standards" ], - "time": "2019-08-20T14:44:19+00:00" + "time": "2019-10-14T12:27:06+00:00" }, { "name": "symfony/stopwatch", From 5cf3c7029807a3c0fb443b726f58d62aa81162e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2019 23:27:35 +0000 Subject: [PATCH 05/46] Bump symfony/http-foundation from 4.3.4 to 4.4.1 in /api Bumps [symfony/http-foundation](https://github.com/symfony/http-foundation) from 4.3.4 to 4.4.1. - [Release notes](https://github.com/symfony/http-foundation/releases) - [Changelog](https://github.com/symfony/http-foundation/blob/master/CHANGELOG.md) - [Commits](https://github.com/symfony/http-foundation/compare/v4.3.4...v4.4.1) Signed-off-by: dependabot[bot] --- api/composer.lock | 73 ++++++++++++++++++++++++----------------------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/api/composer.lock b/api/composer.lock index cdf70a77..ad43758d 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -2229,8 +2229,8 @@ "authors": [ { "name": "Luís Otávio Cobucci Oblonczyk", - "role": "Developer", - "email": "lcobucci@gmail.com" + "email": "lcobucci@gmail.com", + "role": "Developer" } ], "description": "A simple library to work with JSON Web Token and JSON Web Signature", @@ -4756,31 +4756,31 @@ }, { "name": "symfony/http-foundation", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc" + "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/d804bea118ff340a12e22a79f9c7e7eb56b35adc", - "reference": "d804bea118ff340a12e22a79f9c7e7eb56b35adc", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8bccc59e61b41963d14c3dbdb23181e5c932a1d5", + "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/mime": "^4.3", + "symfony/mime": "^4.3|^5.0", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" + "symfony/expression-language": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -4807,7 +4807,7 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-08-26T08:55:16+00:00" + "time": "2019-11-28T13:33:56+00:00" }, { "name": "symfony/http-kernel", @@ -5226,16 +5226,16 @@ }, { "name": "symfony/mime", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "987a05df1c6ac259b34008b932551353f4f408df" + "reference": "010cc488e56cafe5f7494dea70aea93100c234df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/987a05df1c6ac259b34008b932551353f4f408df", - "reference": "987a05df1c6ac259b34008b932551353f4f408df", + "url": "https://api.github.com/repos/symfony/mime/zipball/010cc488e56cafe5f7494dea70aea93100c234df", + "reference": "010cc488e56cafe5f7494dea70aea93100c234df", "shasum": "" }, "require": { @@ -5243,14 +5243,17 @@ "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, + "conflict": { + "symfony/mailer": "<4.4" + }, "require-dev": { "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "~3.4|^4.1" + "symfony/dependency-injection": "^3.4|^4.1|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -5281,7 +5284,7 @@ "mime", "mime-type" ], - "time": "2019-08-22T08:16:11+00:00" + "time": "2019-11-30T08:27:26+00:00" }, { "name": "symfony/options-resolver", @@ -5397,16 +5400,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", "shasum": "" }, "require": { @@ -5420,7 +5423,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5455,20 +5458,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", "shasum": "" }, "require": { @@ -5480,7 +5483,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5514,20 +5517,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T14:18:11+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "04ce3335667451138df4307d6a9b61565560199e" + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", - "reference": "04ce3335667451138df4307d6a9b61565560199e", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", "shasum": "" }, "require": { @@ -5536,7 +5539,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5569,7 +5572,7 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php73", From ff2e87ed5cfef34ab16ebc85b7d63e5912bad9e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2019 23:28:00 +0000 Subject: [PATCH 06/46] Bump symfony/mime from 4.3.4 to 4.4.1 in /api Bumps [symfony/mime](https://github.com/symfony/mime) from 4.3.4 to 4.4.1. - [Release notes](https://github.com/symfony/mime/releases) - [Changelog](https://github.com/symfony/mime/blob/master/CHANGELOG.md) - [Commits](https://github.com/symfony/mime/compare/v4.3.4...v4.4.1) Signed-off-by: dependabot[bot] --- api/composer.lock | 57 +++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/api/composer.lock b/api/composer.lock index cdf70a77..de842e26 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -2229,8 +2229,8 @@ "authors": [ { "name": "Luís Otávio Cobucci Oblonczyk", - "role": "Developer", - "email": "lcobucci@gmail.com" + "email": "lcobucci@gmail.com", + "role": "Developer" } ], "description": "A simple library to work with JSON Web Token and JSON Web Signature", @@ -5226,16 +5226,16 @@ }, { "name": "symfony/mime", - "version": "v4.3.4", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "987a05df1c6ac259b34008b932551353f4f408df" + "reference": "010cc488e56cafe5f7494dea70aea93100c234df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/987a05df1c6ac259b34008b932551353f4f408df", - "reference": "987a05df1c6ac259b34008b932551353f4f408df", + "url": "https://api.github.com/repos/symfony/mime/zipball/010cc488e56cafe5f7494dea70aea93100c234df", + "reference": "010cc488e56cafe5f7494dea70aea93100c234df", "shasum": "" }, "require": { @@ -5243,14 +5243,17 @@ "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, + "conflict": { + "symfony/mailer": "<4.4" + }, "require-dev": { "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "~3.4|^4.1" + "symfony/dependency-injection": "^3.4|^4.1|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.3-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -5281,7 +5284,7 @@ "mime", "mime-type" ], - "time": "2019-08-22T08:16:11+00:00" + "time": "2019-11-30T08:27:26+00:00" }, { "name": "symfony/options-resolver", @@ -5397,16 +5400,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", - "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", "shasum": "" }, "require": { @@ -5420,7 +5423,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5455,20 +5458,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", "shasum": "" }, "require": { @@ -5480,7 +5483,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5514,20 +5517,20 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T14:18:11+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.12.0", + "version": "v1.13.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "04ce3335667451138df4307d6a9b61565560199e" + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", - "reference": "04ce3335667451138df4307d6a9b61565560199e", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", "shasum": "" }, "require": { @@ -5536,7 +5539,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12-dev" + "dev-master": "1.13-dev" } }, "autoload": { @@ -5569,7 +5572,7 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" + "time": "2019-11-27T13:56:44+00:00" }, { "name": "symfony/polyfill-php73", From d8677202a6e9fbe1da58538c86a44050ee5dcfab Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 3 Dec 2019 14:17:36 +0100 Subject: [PATCH 07/46] Free 'Create Release' from install/upgrade lock. --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 9e8658ca..33e5189a 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -104,7 +104,7 @@ jobs: kubectl rollout restart deployment/$APP_NAME-nginx --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-varnish --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV - name: Create Release - if: contains( github.ref, 'master' ) + if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) id: create_release uses: actions/create-release@v1 env: From b5b7c8a5fb618b650e028b462cc49e3d39935026 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 3 Dec 2019 15:37:27 +0100 Subject: [PATCH 08/46] Fix issue with rollout --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 33e5189a..5907d2d5 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -98,7 +98,7 @@ jobs: if: failure() run: helm install --name $APP_NAME-$APP_ENV ./api/helm --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV --set settings.env=$APP_ENV,settings.debug=1 - name: Rollout new containers - if: (contains( github.ref, 'master' ) || contains( github.ref, 'staging' ) || contains( github.ref, 'development' )) && steps.kubeconfig.outputs.success == 'true' && steps.helm-install.success == 'true' + if: (contains( github.ref, 'master' ) || contains( github.ref, 'staging' ) || contains( github.ref, 'development' )) && steps.kubeconfig.outputs.success == 'true' && steps.helm-install.success == 'true' && success() run: | kubectl rollout restart deployment/$APP_NAME-php --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-nginx --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV From f7a9729c53050508cd0035f6087d151359b93f55 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 3 Dec 2019 16:18:57 +0100 Subject: [PATCH 09/46] (semi) definitive fix for rollout issue --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 5907d2d5..cfdb0166 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -98,7 +98,7 @@ jobs: if: failure() run: helm install --name $APP_NAME-$APP_ENV ./api/helm --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV --set settings.env=$APP_ENV,settings.debug=1 - name: Rollout new containers - if: (contains( github.ref, 'master' ) || contains( github.ref, 'staging' ) || contains( github.ref, 'development' )) && steps.kubeconfig.outputs.success == 'true' && steps.helm-install.success == 'true' && success() + if: (contains( github.ref, 'master' ) || contains( github.ref, 'staging' ) || contains( github.ref, 'development' )) && steps.kubeconfig.outputs.success == 'true' && success() run: | kubectl rollout restart deployment/$APP_NAME-php --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-nginx --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV From dde1ed2bf348b02e7371862ce83034ddf41cee02 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 3 Dec 2019 16:51:28 +0100 Subject: [PATCH 10/46] Allow create release to fail --- .github/workflows/dockerimage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index cfdb0166..176b4b14 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -107,6 +107,7 @@ jobs: if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) id: create_release uses: actions/create-release@v1 + continue-on-error: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: From d937a5be2137591c3ed2ecf3505bffd0c669647b Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 4 Dec 2019 06:32:09 +0100 Subject: [PATCH 11/46] Tutorial updates --- .github/workflows/dockerimage.yml | 4 ++-- TUTORIAL.md | 30 ++++++++++-------------------- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 9aa6baf6..9fd5d8a7 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -111,7 +111,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: - tag_name: $APP_BUILD - release_name: $APP_BUILD + tag_name: $APP_BUILD-${{ secrets.GITHUB_TOKEN }} + release_name: $APP_BUILD-${{ secrets.GITHUB_TOKEN }} draft: false prerelease: false diff --git a/TUTORIAL.md b/TUTORIAL.md index ed149d7b..356121e3 100644 --- a/TUTORIAL.md +++ b/TUTORIAL.md @@ -12,7 +12,7 @@ For the steps considering the generation of resources (or entities as symfony ca ## Setting up your enviroment -You can install docker-desktop from [the docker website](). +You can install docker-desktop from [the docker website](https://hub.docker.com/editions/community/docker-ce-desktop-windows). ## Generating your component (repository/codebase) @@ -26,7 +26,7 @@ After that you should be redirected to your own brand new repository. We ran a fork of the base Common Ground component, that means that we copied the code of the original project into a new repository. By doing so we made sure we have all the necessities for our component, including security and compliance with international standards. ## Spinning up your component -Before we can spin up our component we must first get a local copy from our repository, we can either do this through the command line (example here) or use a Git client. +Before we can spin up our component we must first get a local copy from our repository, we can either do this through the command line or use a Git client. For this example we're going to use GitKraken but you can use any tool you like, feel free to skip this part if you are already familiar with setting up a local clone of your repository. @@ -35,7 +35,7 @@ Open gitkraken press "clone a repo" and fill in the form (select where on your l You can now navigate to the folder where you just installed your code, it should contain some folders and files and generally look like this. We will get into the files later, lets first spin up our component! Open a command window (example) and browse to the folder where you just stuffed your code, navigating in a command window is done by cd, so for our example we could type -cd c:\repos\common-ground\my-component (if you installed your code on a different disk then where the cmd window opens first type : for example D: and hit enter to go to that disk, D in this case). We are now in our folder, so let's go! Type docker-compose up and hit enter. From now on whenever we describe a command line command we will document it as follows: +cd c:\repos\common-ground\my-component (if you installed your code on a different disk then where the cmd window opens first type : for example D: and hit enter to go to that disk, D in this case). We are now in our folder, so let's go! Type docker-compose up and hit enter. From now on whenever we describe a command line command we will document it as follows (the $ isn't actually typed but represents your folder structure): ```CLI $ docker-compose up @@ -45,8 +45,9 @@ Your computer should now start up your local development environment. Don't worr Open your browser type http://localhost/ as address and hit enter, you should now see your common ground component up and running. -### trouble shooting +### Trouble shooting When spinning up components we make extensive use of the cashing of docker, and use volumes to represent server disks. When running in to unexpected trouble always remember to clear your local docker vm with the -a command (removing image cash) + ```CLI $ docker system prune -a ``` @@ -62,7 +63,7 @@ You can now access your api at http://localhost:8080/, as you can see it's pre-l First let's remove the resources currently in the api, we can do that by just removing the resources form our code base, navigate to the folder where you stored your code and open the folder api/src/Entity , you can find the example entities (the symfony name for resources) there. Just delete all the php files in that folder. -Next let's add our own entities, we can do this in two ways, we can do old fashioned coding, but we can also use the build in maker bundle of the proto component, to quickly generate our entities for us (without the fuss of actual coding). +Next let's add our own resources, we can do this in two ways, we can do old fashioned coding, but we can also use the build in maker bundle of the proto component, to quickly generate our entities for us (without the fuss of actual coding). Let's open a new command line window and navigate to our root folder, exactly like we did under "spinning up your component". And then lets fire up maker bundle (make sure that your component is still running in your other command window). We can do so by the following command: @@ -170,7 +171,7 @@ class Organisation Keep in mind that we need to add the assert annotation to our class dependencies under 'use'. -More inforation on using validation can be found at the [symfony website](https://symfony.com/doc/current/validation.html), but it is als worth nothing that tis component comes pre packed with some typical NL validators like BSN. You can find those [here](). +More information on using validation can be found at the [symfony website](https://symfony.com/doc/current/validation.html), but it is als worth nothing that tis component comes pre packed with some typical NL validators like BSN. You can find those [here](). ## Using UUID As default doctrine uses auto increment integers as identifiers (1,2, etc). For modern web applications we however prefer the use of UUID's. (e.g. e2984465-190a-4562-829e-a8cca81aa35d). Why? Wel for one it is more secure integer id's are easily guessable and make it possible to "ask" endpoint about resources that you should not know about. But UUID's also have a benefit in future proofing the application. If we in the future want to merge a table with another table (for example because two organisations using a component perform a merger) then we would have to reassign al id's and relations if we where using int based id's (both tables would have a row 1,2 etc) with UUID's however the change of doubles range somewhere in the billions. Meaning that it is likely that we only need to either reidentify only a handful of rows or more likely none at al! Turning our entire migration into a copy paste action. @@ -199,20 +200,9 @@ with ```PHP //... - /** - * @var \Ramsey\Uuid\UuidInterface - * - * @ApiProperty( - * identifier=true, - * attributes={ - * "openapi_context"={ - * "description" = "The UUID identifier of this resource", - * "type"="string", - * "format"="uuid", - * "example"="e2984465-190a-4562-829e-a8cca81aa35d" - * } - * } - * ) + /** + * @var \Ramsey\Uuid\UuidInterface The UUID identifier of this resource + * @example e2984465-190a-4562-829e-a8cca81aa35d * * @Groups({"read"}) * @ORM\Id From 07ca03b4b7d5465820803f8db9e20c146af8dd63 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 08:16:49 +0100 Subject: [PATCH 12/46] Test with release name --- .github/workflows/test.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..01c84352 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,28 @@ +name: Test + +on: + pull_request: + branches: + - master + - staging + - development + push: + branches: + - master + - staging + - development + +jobs: + + build: + + runs-on: ubuntu-latest + steps: + - name: Export release code + id: export + if: (success() || failure()) + run: | + echo "##[set-output name=releasename]$APP_BUILD-$(git rev-parse --short HEAD)" + - run: echo "$RELEASE" + with: + RELEASE: ${{ steps.export.outputs.releasename }} From 41d0d72f11cd06e6dd6cb3fefc465f7340791177 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 08:17:07 +0100 Subject: [PATCH 13/46] (semi) definitive fix for rollout issue --- .github/workflows/test.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 01c84352..719f756a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,16 +1,9 @@ name: Test on: - pull_request: - branches: - - master - - staging - - development push: branches: - - master - - staging - - development + - dev-robert jobs: From ed2817f07652e6305bf93294f2155b868c666ae4 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 08:17:55 +0100 Subject: [PATCH 14/46] changed with to env --- .github/workflows/test.yml | 2 +- .idea/workspace.xml | 57 +++++++++++++++++++++++++++++++++++--- 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 719f756a..5e00928f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,5 +17,5 @@ jobs: run: | echo "##[set-output name=releasename]$APP_BUILD-$(git rev-parse --short HEAD)" - run: echo "$RELEASE" - with: + env: RELEASE: ${{ steps.export.outputs.releasename }} diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 980cc0cb..ced0c1eb 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,8 +1,9 @@ - - + + + @@ -321,6 +365,11 @@ - \ No newline at end of file From 510426659a1a4a25039beb003545eff5051c2858 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 08:19:11 +0100 Subject: [PATCH 15/46] HEAD to GITHUB SHA --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5e00928f..8541c591 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ jobs: id: export if: (success() || failure()) run: | - echo "##[set-output name=releasename]$APP_BUILD-$(git rev-parse --short HEAD)" + echo "##[set-output name=releasename]$APP_BUILD-$(git rev-parse --short '$GITHUB_SHA')" - run: echo "$RELEASE" env: RELEASE: ${{ steps.export.outputs.releasename }} From fb928b7d699fb6040185d9a7f337ebfa82754a93 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 08:20:11 +0100 Subject: [PATCH 16/46] Short GITHUB_SHA --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8541c591..7736035e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ jobs: id: export if: (success() || failure()) run: | - echo "##[set-output name=releasename]$APP_BUILD-$(git rev-parse --short '$GITHUB_SHA')" + echo "##[set-output name=releasename]$APP_BUILD-$GITHUB_SHA" - run: echo "$RELEASE" env: RELEASE: ${{ steps.export.outputs.releasename }} From 50fb9c7d50308c12179475c518698a3f256b59d6 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 11:12:14 +0100 Subject: [PATCH 17/46] Removal of test script, adding release number/code --- .github/workflows/dockerimage.yml | 16 +++++++++++----- .github/workflows/test.yml | 21 --------------------- 2 files changed, 11 insertions(+), 26 deletions(-) delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 176b4b14..786009b4 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -103,15 +103,21 @@ jobs: kubectl rollout restart deployment/$APP_NAME-php --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-nginx --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-varnish --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV + - name: Export release code + if: (success() || failure()) + id: releasecode + run: | + echo "##[set-output name=releasename]$APP_BUILD-$GITHUB_SHA" + - name: Create Release if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) id: create_release uses: actions/create-release@v1 continue-on-error: true env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: - tag_name: $APP_BUILD - release_name: $APP_BUILD - draft: false - prerelease: false + tag_name: ${{ steps.releasecode.outputs.releasename }} + release_name: ${{ steps.releasecode.outputs.releasename }} + draft: false + prerelease: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 7736035e..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Test - -on: - push: - branches: - - dev-robert - -jobs: - - build: - - runs-on: ubuntu-latest - steps: - - name: Export release code - id: export - if: (success() || failure()) - run: | - echo "##[set-output name=releasename]$APP_BUILD-$GITHUB_SHA" - - run: echo "$RELEASE" - env: - RELEASE: ${{ steps.export.outputs.releasename }} From 6a09adb1a7e4b512bc4a57ee8575e9893d8ebffc Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 13:28:05 +0100 Subject: [PATCH 18/46] Github shortcode instead of full SHA (under test) --- .github/workflows/dockerimage.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 786009b4..c809fda7 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -107,7 +107,8 @@ jobs: if: (success() || failure()) id: releasecode run: | - echo "##[set-output name=releasename]$APP_BUILD-$GITHUB_SHA" + export RELEASE=$APP_BUILD-$(git rev-parse --short "$GITHUB_SHA") + echo "##[set-output name=releasename]$RELEASE" - name: Create Release if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) From 9ddbb43cf6de1c5c066877a7db6f64e75fd1d969 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 13:46:13 +0100 Subject: [PATCH 19/46] Printing the release name, just to be sure --- .github/workflows/dockerimage.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index c809fda7..e4bffcf2 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -109,7 +109,10 @@ jobs: run: | export RELEASE=$APP_BUILD-$(git rev-parse --short "$GITHUB_SHA") echo "##[set-output name=releasename]$RELEASE" - + - name: Print release name + run: echo $RELEASENAME + env: + RELEASENAME: ${{ steps.releasecode.outputs.releasename }} - name: Create Release if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) id: create_release From dbac038e026a74edfc2174f9f0c0b229921ac64c Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 13:46:47 +0100 Subject: [PATCH 20/46] Made print unconditional --- .github/workflows/dockerimage.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index e4bffcf2..070e4ee0 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -110,6 +110,7 @@ jobs: export RELEASE=$APP_BUILD-$(git rev-parse --short "$GITHUB_SHA") echo "##[set-output name=releasename]$RELEASE" - name: Print release name + if: (success() || failure()) run: echo $RELEASENAME env: RELEASENAME: ${{ steps.releasecode.outputs.releasename }} From 40ab8f5b418cdf479708c5a7174c1777d81eb469 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 14:07:40 +0100 Subject: [PATCH 21/46] Quotes be gone --- .github/workflows/dockerimage.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 070e4ee0..4f8b430e 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -107,7 +107,7 @@ jobs: if: (success() || failure()) id: releasecode run: | - export RELEASE=$APP_BUILD-$(git rev-parse --short "$GITHUB_SHA") + export RELEASE=$APP_BUILD-$(git rev-parse --short $GITHUB_SHA) echo "##[set-output name=releasename]$RELEASE" - name: Print release name if: (success() || failure()) From 8768eea03c27e7cce631618af42af422555f0f06 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 14:33:28 +0100 Subject: [PATCH 22/46] Moved creation of release name to prevent out-of-sync GITHUB_SHA --- .github/workflows/dockerimage.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 4f8b430e..3697caa5 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -19,6 +19,12 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 + - name: Export release code + if: (success() || failure()) + id: releasecode + run: | + export RELEASE=$APP_BUILD-$(git rev-parse --short $GITHUB_SHA) + echo "##[set-output name=releasename]$RELEASE" - name: Pulling old images, if any run: docker-compose pull --ignore-pull-failures - name: Setting APP_NAME @@ -103,12 +109,7 @@ jobs: kubectl rollout restart deployment/$APP_NAME-php --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-nginx --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-varnish --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV - - name: Export release code - if: (success() || failure()) - id: releasecode - run: | - export RELEASE=$APP_BUILD-$(git rev-parse --short $GITHUB_SHA) - echo "##[set-output name=releasename]$RELEASE" + - name: Print release name if: (success() || failure()) run: echo $RELEASENAME From 4f8839c3de558a346f8ed7e684639b25ec29a3eb Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 14:34:29 +0100 Subject: [PATCH 23/46] Also move print location of release name --- .github/workflows/dockerimage.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 3697caa5..7910c9cb 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -25,6 +25,11 @@ jobs: run: | export RELEASE=$APP_BUILD-$(git rev-parse --short $GITHUB_SHA) echo "##[set-output name=releasename]$RELEASE" + - name: Print release name + if: (success() || failure()) + run: echo $RELEASENAME + env: + RELEASENAME: ${{ steps.releasecode.outputs.releasename }} - name: Pulling old images, if any run: docker-compose pull --ignore-pull-failures - name: Setting APP_NAME @@ -110,11 +115,7 @@ jobs: kubectl rollout restart deployment/$APP_NAME-nginx --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-varnish --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV - - name: Print release name - if: (success() || failure()) - run: echo $RELEASENAME - env: - RELEASENAME: ${{ steps.releasecode.outputs.releasename }} + - name: Create Release if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) id: create_release From 2e6167dc6df47cc427ccd02b5da5de95567c321b Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 4 Dec 2019 14:36:11 +0100 Subject: [PATCH 24/46] Moving does not make a difference and probably breaks stuff again --- .github/workflows/dockerimage.yml | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml index 7910c9cb..4f8b430e 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/dockerimage.yml @@ -19,17 +19,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - name: Export release code - if: (success() || failure()) - id: releasecode - run: | - export RELEASE=$APP_BUILD-$(git rev-parse --short $GITHUB_SHA) - echo "##[set-output name=releasename]$RELEASE" - - name: Print release name - if: (success() || failure()) - run: echo $RELEASENAME - env: - RELEASENAME: ${{ steps.releasecode.outputs.releasename }} - name: Pulling old images, if any run: docker-compose pull --ignore-pull-failures - name: Setting APP_NAME @@ -114,8 +103,17 @@ jobs: kubectl rollout restart deployment/$APP_NAME-php --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-nginx --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV kubectl rollout restart deployment/$APP_NAME-varnish --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV - - + - name: Export release code + if: (success() || failure()) + id: releasecode + run: | + export RELEASE=$APP_BUILD-$(git rev-parse --short $GITHUB_SHA) + echo "##[set-output name=releasename]$RELEASE" + - name: Print release name + if: (success() || failure()) + run: echo $RELEASENAME + env: + RELEASENAME: ${{ steps.releasecode.outputs.releasename }} - name: Create Release if: contains( github.ref, 'master' ) && steps.kubeconfig.outputs.success == 'true' && ( success() || failure() ) id: create_release From af5d9540c53c66b3bcb6e47a2bf3930fa921ba89 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Wed, 4 Dec 2019 20:50:42 +0100 Subject: [PATCH 25/46] Updates to the ingress resource Should make the entire thing available on the ingres ip --- .env | 1 + api/config/packages/twig.yaml | 1 + api/helm/templates/configmap.yaml | 1 + api/helm/templates/ingress.yaml | 10 ++++------ api/helm/templates/php-deployment.yaml | 5 +++++ api/helm/values.yaml | 10 ++-------- api/templates/helm/Values.yaml.twig | 1 + docker-compose.yml | 1 + 8 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.env b/.env index 66007731..ce0fe0a0 100644 --- a/.env +++ b/.env @@ -27,6 +27,7 @@ APP_DESCRIPTION='Naast deze JSON rest API is er ook een [graphql](/graphql) inte # Documentation settings ################################################## +APP_DOMAIN=conduction.nl APP_DEMO=pc.zaakonline.nl APP_REPRO=https://github.com/ConductionNL/Proto-component-commonground diff --git a/api/config/packages/twig.yaml b/api/config/packages/twig.yaml index 1a687ce2..7d186ad6 100644 --- a/api/config/packages/twig.yaml +++ b/api/config/packages/twig.yaml @@ -14,6 +14,7 @@ twig: app_version: '%env(APP_VERSION)%' app_env: '%env(APP_ENV)%' app_debug: '%env(APP_DEBUG)%' + app_domain: '%env(APP_DOMAIN)%' app_demo: '%env(APP_DEMO)%' app_repro: '%env(APP_REPRO)%' app_description: '%env(APP_DESCRIPTION)%' diff --git a/api/helm/templates/configmap.yaml b/api/helm/templates/configmap.yaml index 55279410..d3b97459 100644 --- a/api/helm/templates/configmap.yaml +++ b/api/helm/templates/configmap.yaml @@ -16,6 +16,7 @@ data: app-version: {{ .Values.settings.version | quote }} app-repro: {{ .Values.settings.repro | quote }} app-demo: {{ .Values.settings.demo | quote }} + app-domain: {{ .Values.settings.domain | quote }} app-description: {{ .Values.settings.description | quote }} app-auth: {{ .Values.settings.authorisationEnabled | quote }} diff --git a/api/helm/templates/ingress.yaml b/api/helm/templates/ingress.yaml index 4437f785..6c924078 100644 --- a/api/helm/templates/ingress.yaml +++ b/api/helm/templates/ingress.yaml @@ -1,7 +1,7 @@ apiVersion: extensions/v1beta1 kind: Ingress metadata: - name: {{ template "fullname" . }} + name: {{ include "name" . }}-{{ .Values.settings.env }}-ingress labels: app.kubernetes.io/name: {{ include "name" . }}-ingress app.kubernetes.io/part-of: {{ include "name" . }} @@ -24,12 +24,10 @@ spec: {{- end }} {{- end }} rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} + - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }} http: paths: - path: /* backend: - serviceName: {{ .serviceName }} - servicePort: {{ .servicePort | default 80 }} - {{- end }} + serviceName: {{ include "name" . }}-nginx + servicePort: 80 diff --git a/api/helm/templates/php-deployment.yaml b/api/helm/templates/php-deployment.yaml index 1b03232e..3f09ef5d 100644 --- a/api/helm/templates/php-deployment.yaml +++ b/api/helm/templates/php-deployment.yaml @@ -77,6 +77,11 @@ spec: configMapKeyRef: name: {{ template "fullname" . }} key: app-demo + - name: APP_DOMAIN + valueFrom: + configMapKeyRef: + name: {{ template "fullname" . }} + key: app-domain - name: APP_REPRO valueFrom: configMapKeyRef: diff --git a/api/helm/values.yaml b/api/helm/values.yaml index 6bf6d3b2..3e671e4d 100644 --- a/api/helm/values.yaml +++ b/api/helm/values.yaml @@ -11,11 +11,12 @@ settings: description: ''Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.'' repro: https://github.com/ConductionNL/Proto-component-commonground' demo: pc.zaakonline.nl + domain: conduction.nl env: dev debug: 1 replicaCount: 1 corsAllowOrigin: ['*'] - trustedHosts: '^(.+\.)?common-ground\.dev$|^(.+\.)?zaakonline\.nl$|^(.+\.)?conduction\.nl$|^example\.com$|^(.+\.)?178.128.142.152$|178.128.142.152|localhost' + trustedHosts: '^(.+\.)?conduction\.nl$|localhost' pullPolicy: Always # You will need these proxies on kubernetes trustedProxies: @@ -94,13 +95,6 @@ ingress: # - hosts: # - example.com # - mercure.example.com - hosts: - api: - host: example.com - serviceName: varnish - mercure: - host: mercure.example.com - serviceName: mercure resources: {} # We usually recommend not to specify default resources and to leave this as a conscious diff --git a/api/templates/helm/Values.yaml.twig b/api/templates/helm/Values.yaml.twig index 33aebbd8..40241105 100644 --- a/api/templates/helm/Values.yaml.twig +++ b/api/templates/helm/Values.yaml.twig @@ -10,6 +10,7 @@ settings: version: {{ app_version }} description: '{{ app_description }}' repro: {{ app_repro }}' + domain: {{ app_domain }} demo: {{ app_demo }} env: {{ app_env }} debug: {{ app_debug }} diff --git a/docker-compose.yml b/docker-compose.yml index 43498f17..68795b67 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,6 +36,7 @@ services: - APP_VERSION=${APP_VERSION} - APP_NAME=${APP_NAME} - APP_TITLE=${APP_TITLE} + - APP_DOMAIN=${APP_DOMAIN} - APP_DEMO=${APP_DEMO} - APP_REPRO=${APP_REPRO} - APP_DESCRIPTION=${APP_DESCRIPTION} From 086c40de8b0e331c409d83b2a95c4871c3bf516f Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Thu, 5 Dec 2019 06:47:14 +0100 Subject: [PATCH 26/46] Updated ingress for new domain routing --- .env | 4 ++++ INSTALLATION.md | 19 +++++++++++----- api/.env | 4 ++-- api/config/packages/twig.yaml | 5 ++++- api/helm/templates/ingress.yaml | 35 ++++++++++++++++++++++++++--- api/helm/values.yaml | 2 +- api/templates/helm/Values.yaml.twig | 2 +- docker-compose.yml | 2 ++ 8 files changed, 59 insertions(+), 14 deletions(-) diff --git a/.env b/.env index ce0fe0a0..71e479f4 100644 --- a/.env +++ b/.env @@ -23,6 +23,10 @@ APP_BUILD=dev # The description for this api APP_DESCRIPTION='Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.' +# The urls on wich this api is available +TRUSTED_PROXIES=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +TRUSTED_HOSTS='^(.+\.)?conduction\.nl$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.nl$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost' + ################################################## # Documentation settings ################################################## diff --git a/INSTALLATION.md b/INSTALLATION.md index 05bad3ed..96ea76d5 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -4,6 +4,7 @@ This document dives a little bit deeper into installing your component on a kube ## Setting up helm + ## Setting up tiller Create the tiller service account: @@ -18,39 +19,45 @@ $ kubectl create clusterrolebinding tiller --clusterrole cluster-admin --service Now we can run helm init, which installs Tiller on our cluster, along with some local housekeeping tasks such as downloading the stable repo details: ```CLI -$ helm init --service-account tiller --kubeconfig="api/helm/kubeconfig.yaml" +$ helm init --service-account tiller --kubeconfig="kubeconfig.yaml" ``` To verify that Tiller is running, list the pods in the kube-system namespace: ```CLI -$ kubectl get pods --namespace kube-system --kubeconfig="api/helm/kubeconfig.yaml" +$ kubectl get pods --namespace kube-system --kubeconfig="kubeconfig.yaml" ``` The Tiller pod name begins with the prefix tiller-deploy-. Now that we've installed both Helm components, we're ready to use helm to install our first application. + +## Setting up ingress +We need at least one nginx controller per kubernetes kluster, doh optionally we could set on up on a per namebase basis + +helm install stable/nginx-ingress --name loadbalancer --kubeconfig="kubeconfig.yaml" + ## Setting up Kubernetes Dashboard After we installed helm and tiller we can easily use both to install kubernetes dashboard ```CLI -$ helm install stable/kubernetes-dashboard --name dashboard --kubeconfig="api/helm/kubeconfig.yaml" --namespace="kube-system" +$ helm install stable/kubernetes-dashboard --name dashboard --kubeconfig="kubeconfig.yaml" --namespace="kube-system" ``` But before we can login to tiller we need a token, we can get one of those trough the secrets. Get yourself a secret list by running the following command ```CLI -$ kubectl -n kube-system get secret --kubeconfig="api/helm/kubeconfig.yaml" +$ kubectl -n kube-system get secret --kubeconfig="kubeconfig.yaml" ``` Because we just bound tiller to our admin account and use tiller (trough helm) to manage our code deployment it makes sense to use the tiller token, lets look at the tiller secret (it should look something like "tiller-token-XXXXX" and ask for the corresponding token. ```CLI -$ kubectl -n kube-system describe secrets tiller-token-xxxxx --kubeconfig="api/helm/kubeconfig.yaml" +$ kubectl -n kube-system describe secrets tiller-token-xxxxx --kubeconfig="kubeconfig.yaml" ``` This should return the token, copy it to somewhere save (just the token not the other returned information) and start up a dashboard connection ```CLI -$kubectl proxy --kubeconfig="api/helm/kubeconfig.yaml" +$kubectl proxy --kubeconfig="kubeconfig.yaml" ``` This should proxy our dashboard to helm making it available trough our favorite browser and a simple link diff --git a/api/.env b/api/.env index a2472076..235c628f 100644 --- a/api/.env +++ b/api/.env @@ -27,8 +27,8 @@ CONDUCTION_COMMONGROUND_BAG_APIKEY=!ChangeMe! #APP_NAME='pc' APP_DESCRIPTION='Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.' APP_SECRET=!ChangeMe! -TRUSTED_PROXIES=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 -TRUSTED_HOSTS='^(.+\.)?localhost|api$' +#TRUSTED_PROXIES=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 +#TRUSTED_HOSTS='^(.+\.)?localhost|api$' ###< symfony/framework-bundle ### ###> symfony/framework-bundle ### diff --git a/api/config/packages/twig.yaml b/api/config/packages/twig.yaml index 7d186ad6..8284abd9 100644 --- a/api/config/packages/twig.yaml +++ b/api/config/packages/twig.yaml @@ -22,7 +22,10 @@ twig: app_auth: '%env(AUTH_ENABLED)%' app_audittrail: '%env(AUDITTRAIL_ENABLED)%' app_notification: '%env(NOTIFICATION_ENABLED)%' - app_health: '%env(HEALTH_ENABLED)%' + app_health: '%env(HEALTH_ENABLED)%' + + trusted_hosts: '%env(TRUSTED_HOSTS)%' + trusted_proxies: '%env(TRUSTED_PROXIES)%' nlx_outway: '%env(NLX_OUTWAY)%' nlx_inway: '%env(NLX_INWAY)%' diff --git a/api/helm/templates/ingress.yaml b/api/helm/templates/ingress.yaml index 6c924078..1c549535 100644 --- a/api/helm/templates/ingress.yaml +++ b/api/helm/templates/ingress.yaml @@ -24,10 +24,39 @@ spec: {{- end }} {{- end }} rules: + - #host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }} + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }} http: paths: - - path: /* - backend: - serviceName: {{ include "name" . }}-nginx + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.huwelijksplanner.online + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.trouwplanner.online + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.common-ground.nl + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.larping.eu + http: + paths: + - backend: + serviceName: {{ include "name" . }} servicePort: 80 diff --git a/api/helm/values.yaml b/api/helm/values.yaml index 3e671e4d..3f474c4a 100644 --- a/api/helm/values.yaml +++ b/api/helm/values.yaml @@ -16,7 +16,7 @@ settings: debug: 1 replicaCount: 1 corsAllowOrigin: ['*'] - trustedHosts: '^(.+\.)?conduction\.nl$|localhost' + trustedHosts: '^(.+\.)?conduction\.nl$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.nl$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost' pullPolicy: Always # You will need these proxies on kubernetes trustedProxies: diff --git a/api/templates/helm/Values.yaml.twig b/api/templates/helm/Values.yaml.twig index 40241105..8b6ef17f 100644 --- a/api/templates/helm/Values.yaml.twig +++ b/api/templates/helm/Values.yaml.twig @@ -16,7 +16,7 @@ settings: debug: {{ app_debug }} replicaCount: 1 corsAllowOrigin: ['*'] - trustedHosts: '^(.+\.)?common-ground\.dev$|^(.+\.)?zaakonline\.nl$|^(.+\.)?conduction\.nl$|^example\.com$|^(.+\.)?178.128.142.152$|178.128.142.152|localhost' + trustedHosts: {{ trusted_hosts }} pullPolicy: Always # You will need these proxies on kubernetes trustedProxies: diff --git a/docker-compose.yml b/docker-compose.yml index 68795b67..51c9655a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -40,6 +40,8 @@ services: - APP_DEMO=${APP_DEMO} - APP_REPRO=${APP_REPRO} - APP_DESCRIPTION=${APP_DESCRIPTION} + - TRUSTED_PROXIES=${TRUSTED_PROXIES} + - TRUSTED_HOSTS=${TRUSTED_HOSTS} - AUTH_ENABLED=${AUTH_ENABLED} - AUDITTRAIL_ENABLED=${AUDITTRAIL_ENABLED} - NOTIFICATION_ENABLED=${NOTIFICATION_ENABLED} From a170188ba5205b2b6880aba3062d6eef32bb0272 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Thu, 5 Dec 2019 08:26:36 +0100 Subject: [PATCH 27/46] test --- .env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env b/.env index 71e479f4..483e5053 100644 --- a/.env +++ b/.env @@ -47,7 +47,7 @@ CONTAINER_REPRO=https://hub.docker.com/repository/docker/conduction/pc-php # Notifcation settings ################################################## -NOTIFICATION_ENABLED=false +NOTIFICATION_ENABLED=falsedxfddxf NOTIFICATION_PROVIDER=sasd NOTIFICATION_ENABLED_AUTHORIZATION=sasd From 03fb95557b97814220cb2e5c5ba0f69d80e0f53c Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 5 Dec 2019 11:06:22 +0100 Subject: [PATCH 28/46] Set component.domain instead of component.environment.domain when in prod --- api/helm/templates/ingress.yaml | 45 ++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/api/helm/templates/ingress.yaml b/api/helm/templates/ingress.yaml index 1c549535..9c651cc4 100644 --- a/api/helm/templates/ingress.yaml +++ b/api/helm/templates/ingress.yaml @@ -24,12 +24,44 @@ spec: {{- end }} {{- end }} rules: - - #host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }} - http: - paths: - - backend: - serviceName: {{ include "name" . }} - servicePort: 80 +# - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }} +# http: +# paths: +# - backend: +# serviceName: {{ include "name" . }} +# servicePort: 80 + {{- if .Values.settings.env == 'prod' -}} + - host: {{ .Values.settings.name }}.{{ .Values.settings.domain }} + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.huwelijksplanner.online + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.trouwplanner.online + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.common-ground.nl + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + - host: {{ .Values.settings.name }}.larping.eu + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + {{- else -}} - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }} http: paths: @@ -60,3 +92,4 @@ spec: - backend: serviceName: {{ include "name" . }} servicePort: 80 + {{- end }} From 366c4fe9131704ae4ef56f1adc1ba30c027b1b67 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Thu, 5 Dec 2019 11:37:15 +0100 Subject: [PATCH 29/46] If then fix for ingress on prod env --- INSTALLATION.md | 12 ++++++------ api/helm/templates/ingress.yaml | 18 +++++++++++++++--- api/helm/values.yaml | 7 +++++++ 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/INSTALLATION.md b/INSTALLATION.md index 96ea76d5..2e8410d6 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -72,16 +72,16 @@ $ helm dependency update ./api/helm ``` If you want to create a new instance ```CLI -$ helm install --name pc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1,settings.loadbalancerEnabled=true -$ helm install --name pc-stag ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=stag --set settings.env=stag,settings.debug=0,settings.loadbalancerEnabled=true -$ helm install --name pc-prod ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=prod --set settings.env=prod,settings.debug=0,settings.loadbalancerEnabled=true +$ helm install --name pc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1 +$ helm install --name pc-stag ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=stag --set settings.env=stag,settings.debug=0 +$ helm install --name pc-prod ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=prod --set settings.env=prod,settings.debug=0 ``` Or update if you want to update an existing one ```CLI -$ helm upgrade pc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1,settings.loadbalancerEnabled=true -$ helm upgrade pc-stag ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=stag --set settings.env=stag,settings.debug=0,settings.loadbalancerEnabled=true -$ helm upgrade pc-prod ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=prod --set settings.env=prod,settings.debug=0,settings.loadbalancerEnabled=true +$ helm upgrade pc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1 +$ helm upgrade pc-stag ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=stag --set settings.env=stag,settings.debug=0 +$ helm upgrade pc-prod ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=prod --set settings.env=prod,settings.debug=0 ``` Or del if you want to delete an existing one diff --git a/api/helm/templates/ingress.yaml b/api/helm/templates/ingress.yaml index 9c651cc4..ad27ed07 100644 --- a/api/helm/templates/ingress.yaml +++ b/api/helm/templates/ingress.yaml @@ -30,7 +30,7 @@ spec: # - backend: # serviceName: {{ include "name" . }} # servicePort: 80 - {{- if .Values.settings.env == 'prod' -}} + {{- if eq .Values.settings.env "prod" }} - host: {{ .Values.settings.name }}.{{ .Values.settings.domain }} http: paths: @@ -60,8 +60,14 @@ spec: paths: - backend: serviceName: {{ include "name" . }} - servicePort: 80 - {{- else -}} + servicePort: 80 + - host: {{ .Values.settings.name }}.zaakonline.eu + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 + {{- else }} - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }} http: paths: @@ -92,4 +98,10 @@ spec: - backend: serviceName: {{ include "name" . }} servicePort: 80 + - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.zaakonline.nl + http: + paths: + - backend: + serviceName: {{ include "name" . }} + servicePort: 80 {{- end }} diff --git a/api/helm/values.yaml b/api/helm/values.yaml index 3f474c4a..11e81898 100644 --- a/api/helm/values.yaml +++ b/api/helm/values.yaml @@ -12,6 +12,13 @@ settings: repro: https://github.com/ConductionNL/Proto-component-commonground' demo: pc.zaakonline.nl domain: conduction.nl + domains: + - conduction.nl + - larping.eu + - zaakonline.nl + - huwelijksplanner.online + - trouwplanner.online + - common-ground.dev env: dev debug: 1 replicaCount: 1 From b02a0104d8aaae1404c02940563c58032c9e33fe Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Thu, 5 Dec 2019 11:58:27 +0100 Subject: [PATCH 30/46] Fix in yaml template --- api/helm/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/helm/values.yaml b/api/helm/values.yaml index 11e81898..3aab74a4 100644 --- a/api/helm/values.yaml +++ b/api/helm/values.yaml @@ -9,7 +9,7 @@ settings: title: Proto Component version: V.0.1 description: ''Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.'' - repro: https://github.com/ConductionNL/Proto-component-commonground' + repro: 'https://github.com/ConductionNL/Proto-component-commonground' demo: pc.zaakonline.nl domain: conduction.nl domains: From 705da9c0d3b1b90faef9d3176837e16135edbec1 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Thu, 5 Dec 2019 13:11:01 +0100 Subject: [PATCH 31/46] Update Values.yaml.twig --- api/templates/helm/Values.yaml.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/templates/helm/Values.yaml.twig b/api/templates/helm/Values.yaml.twig index 8b6ef17f..26d3ab44 100644 --- a/api/templates/helm/Values.yaml.twig +++ b/api/templates/helm/Values.yaml.twig @@ -9,7 +9,7 @@ settings: title: {{ app_title }} version: {{ app_version }} description: '{{ app_description }}' - repro: {{ app_repro }}' + repro: '{{ app_repro }}' domain: {{ app_domain }} demo: {{ app_demo }} env: {{ app_env }} From d2b9965e79789fd7dd518ccddd12c1594ebb2d41 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 5 Dec 2019 13:34:37 +0100 Subject: [PATCH 32/46] Trying to fix weird errors --- api/templates/helm/Values.yaml.twig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/templates/helm/Values.yaml.twig b/api/templates/helm/Values.yaml.twig index 26d3ab44..28b8fe07 100644 --- a/api/templates/helm/Values.yaml.twig +++ b/api/templates/helm/Values.yaml.twig @@ -16,24 +16,24 @@ settings: debug: {{ app_debug }} replicaCount: 1 corsAllowOrigin: ['*'] - trustedHosts: {{ trusted_hosts }} + trustedHosts: '^(.+\.)?conduction\.nl$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.nl$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost' pullPolicy: Always # You will need these proxies on kubernetes trustedProxies: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 - # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer + # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer loadbalancerEnabled: false # If you want to enable NLX you are requered to add the appropreate certificates to you nlx-settings folder (located in the /api folder) nlxInwayEnabled: {{ nlx_inway }} - # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer + # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer notificationEnabled: false audittrailEnabled: false authorisationEnabled: false healthEnabled: false archiveEnabled: false - + php: repository: docker.io/conduction/protocomponent-php From c74e1e4780be16fcd98c0dd987a781f67c6e7dca Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 5 Dec 2019 14:59:29 +0100 Subject: [PATCH 33/46] Fix a bug with env vs values --- .env | 16 ++++---- api/helm/values.yaml | 22 +++++------ api/public/schema/openapi.yaml | 57 +++++++++++++++++++++++++++-- api/templates/helm/Values.yaml.twig | 2 +- 4 files changed, 74 insertions(+), 23 deletions(-) diff --git a/.env b/.env index 483e5053..4bfa0eec 100644 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ ################################################## -# -# General settings for your component +# +# General settings for your component # ################################################## @@ -18,14 +18,14 @@ APP_VERSION=V.0.1 APP_DEBUG=1 # What is the enviroment type you want to use for local production? (choose between dec,stag,prod, acce or test) APP_ENV=dev -# We use a build to tag images, this is swithced to the version on master and to env on other branches +# We use a build to tag images, this is swithced to the version on master and to env on other branches APP_BUILD=dev # The description for this api APP_DESCRIPTION='Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.' # The urls on wich this api is available TRUSTED_PROXIES=10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 -TRUSTED_HOSTS='^(.+\.)?conduction\.nl$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.nl$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost' +TRUSTED_HOSTS=^(.+\.)?conduction\.nl$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.nl$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost ################################################## # Documentation settings @@ -78,17 +78,17 @@ HEALTH_ENABLED=false ARCHIVE_ENABLED=false ################################################## -# NLX Setup, read more at https://docs.nlx.io/get-started/# +# NLX Setup, read more at https://docs.nlx.io/get-started/# ################################################## # Do you want to provide an nlx outway? (option for your component to reach nlx services) -NLX_OUTWAY=true +NLX_OUTWAY=true # Do you want to provice an nlx inway (option for nlx services to reach your api) -NLX_INWAY=false +NLX_INWAY=false # NLX Certification Details -NLX_COUNTRY_NAME=Netherlands +NLX_COUNTRY_NAME=Netherlands NLX_STATE=Noord-Holland NLX_LOCALITY=Amsterdam NLX_ORGANIZATION_NAME=Conduction diff --git a/api/helm/values.yaml b/api/helm/values.yaml index 3aab74a4..7f4d3075 100644 --- a/api/helm/values.yaml +++ b/api/helm/values.yaml @@ -10,15 +10,8 @@ settings: version: V.0.1 description: ''Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.'' repro: 'https://github.com/ConductionNL/Proto-component-commonground' - demo: pc.zaakonline.nl domain: conduction.nl - domains: - - conduction.nl - - larping.eu - - zaakonline.nl - - huwelijksplanner.online - - trouwplanner.online - - common-ground.dev + demo: pc.zaakonline.nl env: dev debug: 1 replicaCount: 1 @@ -30,17 +23,17 @@ settings: - 10.0.0.0/8 - 172.16.0.0/12 - 192.168.0.0/16 - # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer + # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer loadbalancerEnabled: false # If you want to enable NLX you are requered to add the appropreate certificates to you nlx-settings folder (located in the /api folder) nlxInwayEnabled: false - # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer + # If you are runnig a single component on a kubernetes cluster you can just easaliy enable the load balancer, if not you need to set up a multi component load balancer notificationEnabled: false audittrailEnabled: false authorisationEnabled: false healthEnabled: false archiveEnabled: false - + php: repository: docker.io/conduction/protocomponent-php @@ -102,6 +95,13 @@ ingress: # - hosts: # - example.com # - mercure.example.com + hosts: + api: + host: example.com + serviceName: varnish + mercure: + host: mercure.example.com + serviceName: mercure resources: {} # We usually recommend not to specify default resources and to leave this as a conscious diff --git a/api/public/schema/openapi.yaml b/api/public/schema/openapi.yaml index d3c1e631..3cd704c7 100644 --- a/api/public/schema/openapi.yaml +++ b/api/public/schema/openapi.yaml @@ -524,7 +524,7 @@ components: schemas: ExampleEntity-read: type: object - description: 'This is an example entity' + description: 'This is an example entity.' properties: id: readOnly: true @@ -535,11 +535,14 @@ components: description: description: 'The description of this example property' type: string + camelCase: + description: 'Proof that we camel case our api' + type: string required: - name ExampleEntity-write: type: object - description: 'This is an example entity' + description: 'This is an example entity.' required: - name properties: @@ -549,13 +552,61 @@ components: description: description: 'The description of this example property' type: string + camelCase: + description: 'Proof that we camel case our api' + type: string +definitions: + ExampleEntity-read: + properties: + id: + example: e2984465-190a-4562-829e-a8cca81aa35d + format: uuid + name: + example: 'My Group' + maxLength: 255 + description: + example: 'Is the best group ever' + maxLength: 2555 + camelCase: + example: 'Best api ever' + maxLength: 255 + required: + - name + ExampleEntity-write: + properties: + name: + example: 'My Group' + maxLength: 255 + description: + example: 'Is the best group ever' + maxLength: 2555 + camelCase: + example: 'Best api ever' + maxLength: 255 + required: + - name tags: - name: ExampleEntity description: | - This is an example entity + This is an example entity. With an adtional description, all in all its pritty nice [url](www.google.nl) +securityDefinitions: + JWT-Oauth: + type: oauth2 + authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' + flow: implicit + scopes: + read: 'read right to the ExampleEntity resource' + write: 'write right to the ExampleEntity resource' + JWT-Token: + type: apiKey + in: header + name: Authorization + scopes: + read: 'read right to the ExampleEntity resource' + write: 'write right to the ExampleEntity resource' host: irc.zaakonline.nl servers: - diff --git a/api/templates/helm/Values.yaml.twig b/api/templates/helm/Values.yaml.twig index 28b8fe07..8a8e6ae7 100644 --- a/api/templates/helm/Values.yaml.twig +++ b/api/templates/helm/Values.yaml.twig @@ -16,7 +16,7 @@ settings: debug: {{ app_debug }} replicaCount: 1 corsAllowOrigin: ['*'] - trustedHosts: '^(.+\.)?conduction\.nl$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.nl$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost' + trustedHosts: '{{ trusted_hosts }}' pullPolicy: Always # You will need these proxies on kubernetes trustedProxies: From b39160587080fa0dc910087b0e25c84c23a22c6b Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 9 Dec 2019 16:32:33 +0100 Subject: [PATCH 34/46] ExampleEntity removed --- api/src/Entity/ExampleEntity.php | 135 ------------------ .../Repository/ExampleEntityRepository.php | 50 ------- 2 files changed, 185 deletions(-) delete mode 100644 api/src/Entity/ExampleEntity.php delete mode 100644 api/src/Repository/ExampleEntityRepository.php diff --git a/api/src/Entity/ExampleEntity.php b/api/src/Entity/ExampleEntity.php deleted file mode 100644 index 47705b5c..00000000 --- a/api/src/Entity/ExampleEntity.php +++ /dev/null @@ -1,135 +0,0 @@ -id; - } - - public function getName(): ?string - { - return $this->name; - } - - public function setName(string $name): self - { - $this->name = $name; - - return $this; - } - - public function getDescription(): ?string - { - return $this->description; - } - - public function setDescription(?string $description): self - { - $this->description = $description; - - return $this; - } - - public function getCamelCase(): ?string - { - return $this->camelCase; - } - - public function setCamelCase(?string $camelCase): self - { - $this->camelCase = $camelCase; - - return $this; - } -} diff --git a/api/src/Repository/ExampleEntityRepository.php b/api/src/Repository/ExampleEntityRepository.php deleted file mode 100644 index 7baa698c..00000000 --- a/api/src/Repository/ExampleEntityRepository.php +++ /dev/null @@ -1,50 +0,0 @@ -createQueryBuilder('e') - ->andWhere('e.exampleField = :val') - ->setParameter('val', $value) - ->orderBy('e.id', 'ASC') - ->setMaxResults(10) - ->getQuery() - ->getResult() - ; - } - */ - - /* - public function findOneBySomeField($value): ?ExampleEntity - { - return $this->createQueryBuilder('e') - ->andWhere('e.exampleField = :val') - ->setParameter('val', $value) - ->getQuery() - ->getOneOrNullResult() - ; - } - */ -} From 579f3d810268486a28f80152a24c8a60a814bbe0 Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 9 Dec 2019 16:32:50 +0100 Subject: [PATCH 35/46] Yaml update --- api/helm/Chart.yaml | 2 +- api/helm/values.yaml | 6 +- api/public/schema/openapi.yaml | 2460 +++++++++++++++++++++++++++++--- 3 files changed, 2292 insertions(+), 176 deletions(-) diff --git a/api/helm/Chart.yaml b/api/helm/Chart.yaml index 94ce0060..3b7f7685 100644 --- a/api/helm/Chart.yaml +++ b/api/helm/Chart.yaml @@ -4,4 +4,4 @@ description: ''Naast deze JSON rest API is er ook een [graphql](/graphql) i name: arc version: 0.1.0 home: https://common-ground.dev -icon: https://common-ground.dev/logo-250x250.png +icon: https://common-ground.dev/logo-250x250.png \ No newline at end of file diff --git a/api/helm/values.yaml b/api/helm/values.yaml index 0cc1a665..87566c07 100644 --- a/api/helm/values.yaml +++ b/api/helm/values.yaml @@ -4,9 +4,9 @@ settings: registryBase: docker.io/conduction - projectName: as - name: as - title: Agenda Service + projectName: arc + name: arc + title: Agendaservice version: V.0.1 description: ''Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.'' repro: 'https://github.com/ConductionNL/Proto-component-commonground' diff --git a/api/public/schema/openapi.yaml b/api/public/schema/openapi.yaml index 3cd704c7..bf788bc4 100644 --- a/api/public/schema/openapi.yaml +++ b/api/public/schema/openapi.yaml @@ -1,83 +1,71 @@ openapi: 3.0.2 info: - title: 'Proto Component' + title: Agendaservice version: V.0.1 description: | API Details - - Component: Proto Component - - Reference: pc + - Component: Agendaservice + - Reference: arc - Enviroment: dev - Version: V.0.1 - Repository: [online](https://github.com/ConductionNL/Proto-component-commonground) / [zip](https://github.com/ConductionNL/Proto-component-commonground/archive/master.zip) - - Docker Image: [online](https://hub.docker.com/repository/docker/conduction/pc-php) + - Docker Image: [online](https://hub.docker.com/repository/docker/conduction/arc-php) - Datamodel: [postman](/schema/openapi.postman_collection) / [oas](/schema/openapi.yaml) / [pdf](/schema/datamodel.pdf) / [mwb](/schema/datamodel.mwb) 'Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.' paths: - /example_entities: + /calendars: get: tags: - - ExampleEntity - operationId: getExampleEntityCollection - summary: 'Retrieves the collection of ExampleEntity resources.' + - Calendar + operationId: getCalendarCollection + summary: 'Retrieves the collection of Calendar resources.' responses: 200: - description: 'ExampleEntity collection response' + description: 'Calendar collection response' content: application/hal+json: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/ld+json: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/vnd.api+json: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/json: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/xml: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/x-yaml: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/csv: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/html: schema: type: array items: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' parameters: - - - name: like_name - in: query - required: false - schema: - type: string - - - name: like_description - in: query - required: false - schema: - type: string - name: page in: query @@ -160,43 +148,43 @@ paths: - application/health+json post: tags: - - ExampleEntity - operationId: postExampleEntityCollection - summary: 'Creates a ExampleEntity resource.' + - Calendar + operationId: postCalendarCollection + summary: 'Creates a Calendar resource.' responses: 201: - description: 'ExampleEntity resource created' + description: 'Calendar resource created' content: application/hal+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/ld+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/xml: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/x-yaml: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/csv: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/html: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' links: - GetExampleEntityItem: + GetCalendarItem: parameters: id: '$response.body#/id' - operationId: getExampleEntityItem - description: 'The `id` value returned in the response can be used as the `id` parameter in `GET /example_entities/{id}`.' + operationId: getCalendarItem + description: 'The `id` value returned in the response can be used as the `id` parameter in `GET /calendars/{id}`.' 400: description: 'Invalid input' 404: @@ -205,29 +193,29 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/ld+json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/xml: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/x-yaml: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' text/csv: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' text/html: schema: - $ref: '#/components/schemas/ExampleEntity-write' - description: 'The new ExampleEntity resource' + $ref: '#/components/schemas/Calendar-write' + description: 'The new Calendar resource' parameters: - name: Authorization @@ -258,12 +246,12 @@ paths: name: X-NLX-Audit-Clarification description: 'A clarification as to why a request has been made (doelbinding)' in: header - '/example_entities/{id}': + '/calendars/{id}': get: tags: - - ExampleEntity - operationId: audittrailExampleEntityItem - summary: 'Retrieves a ExampleEntity resource.' + - Calendar + operationId: getCalendarItem + summary: 'Retrieves a Calendar resource.' parameters: - name: id @@ -344,41 +332,87 @@ paths: in: query responses: 200: - description: 'ExampleEntity resource response' + description: 'Calendar resource response' content: application/hal+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/ld+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/xml: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/x-yaml: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/csv: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/html: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' 404: description: 'Resource not found' produces: - application/health+json + delete: + tags: + - Calendar + operationId: deleteCalendarItem + summary: 'Removes the Calendar resource.' + responses: + 204: + description: 'Calendar resource deleted' + 404: + description: 'Resource not found' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header put: tags: - - ExampleEntity - operationId: putExampleEntityItem - summary: 'Replaces the ExampleEntity resource.' + - Calendar + operationId: putCalendarItem + summary: 'Replaces the Calendar resource.' parameters: - name: id @@ -417,32 +451,32 @@ paths: in: header responses: 200: - description: 'ExampleEntity resource updated' + description: 'Calendar resource updated' content: application/hal+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/ld+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/vnd.api+json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/json: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/xml: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' application/x-yaml: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/csv: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' text/html: schema: - $ref: '#/components/schemas/ExampleEntity-read' + $ref: '#/components/schemas/Calendar-read' 400: description: 'Invalid input' 404: @@ -451,39 +485,34 @@ paths: content: application/hal+json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/ld+json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/vnd.api+json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/json: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/xml: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' application/x-yaml: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' text/csv: schema: - $ref: '#/components/schemas/ExampleEntity-write' + $ref: '#/components/schemas/Calendar-write' text/html: schema: - $ref: '#/components/schemas/ExampleEntity-write' - description: 'The updated ExampleEntity resource' - delete: + $ref: '#/components/schemas/Calendar-write' + description: 'The updated Calendar resource' + patch: tags: - - ExampleEntity - operationId: deleteExampleEntityItem - summary: 'Removes the ExampleEntity resource.' - responses: - 204: - description: 'ExampleEntity resource deleted' - 404: - description: 'Resource not found' + - Calendar + operationId: patchCalendarItem + summary: 'Updates the Calendar resource.' parameters: - name: id @@ -520,93 +549,2180 @@ paths: name: X-NLX-Audit-Clarification description: 'A clarification as to why a request has been made (doelbinding)' in: header -components: - schemas: - ExampleEntity-read: - type: object - description: 'This is an example entity.' - properties: - id: - readOnly: true - type: string - name: - description: 'The name of this example property' - type: string - description: - description: 'The description of this example property' - type: string - camelCase: - description: 'Proof that we camel case our api' - type: string - required: - - name - ExampleEntity-write: - type: object - description: 'This is an example entity.' - required: - - name - properties: - name: - description: 'The name of this example property' - type: string - description: - description: 'The description of this example property' - type: string - camelCase: - description: 'Proof that we camel case our api' - type: string -definitions: - ExampleEntity-read: - properties: - id: - example: e2984465-190a-4562-829e-a8cca81aa35d - format: uuid - name: - example: 'My Group' - maxLength: 255 - description: - example: 'Is the best group ever' - maxLength: 2555 - camelCase: - example: 'Best api ever' - maxLength: 255 - required: - - name - ExampleEntity-write: - properties: - name: - example: 'My Group' - maxLength: 255 - description: - example: 'Is the best group ever' - maxLength: 2555 - camelCase: - example: 'Best api ever' - maxLength: 255 - required: - - name -tags: - - - name: ExampleEntity - description: | - This is an example entity. - - With an adtional description, all in all its pritty nice [url](www.google.nl) + responses: + 200: + description: 'Calendar resource updated' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Calendar-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Calendar-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Calendar-read' + application/json: + schema: + $ref: '#/components/schemas/Calendar-read' + application/xml: + schema: + $ref: '#/components/schemas/Calendar-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Calendar-read' + text/csv: + schema: + $ref: '#/components/schemas/Calendar-read' + text/html: + schema: + $ref: '#/components/schemas/Calendar-read' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Calendar-write' + application/ld+json: + schema: + $ref: '#/components/schemas/Calendar-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Calendar-write' + application/json: + schema: + $ref: '#/components/schemas/Calendar-write' + application/xml: + schema: + $ref: '#/components/schemas/Calendar-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/Calendar-write' + text/csv: + schema: + $ref: '#/components/schemas/Calendar-write' + text/html: + schema: + $ref: '#/components/schemas/Calendar-write' + description: 'The updated Calendar resource' + /events: + get: + tags: + - Event + operationId: getEventCollection + summary: 'Retrieves the collection of Event resources.' + responses: + 200: + description: 'Event collection response' + content: + application/hal+json: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + application/ld+json: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + application/vnd.api+json: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + application/x-yaml: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + text/csv: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + text/html: + schema: + type: array + items: + $ref: '#/components/schemas/Event-read' + parameters: + - + name: page + in: query + required: false + description: 'The collection page number' + schema: + type: integer + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + - + name: Link + description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' + in: header + - + name: 'extend[]' + required: false + description: 'An array of nested objects to include in the return object' + in: query + schema: + type: array + - + name: 'fields[]' + required: false + description: 'An array of fields to return in output, wil return all fields is not supplied' + in: query + schema: + type: array + - + name: validOn + required: false + description: 'Returns object as valid on a given date time' + schema: + type: string + format: date-time + in: query + - + name: validFrom + required: false + description: 'Returns objects valid from a given date time' + schema: + type: string + format: date-time + in: query + - + name: validUntil + required: false + description: 'Returns objects valid until a given date time' + schema: + type: string + format: date-time + in: query + produces: + - application/health+json + post: + tags: + - Event + operationId: postEventCollection + summary: 'Creates a Event resource.' + responses: + 201: + description: 'Event resource created' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Event-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Event-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Event-read' + application/json: + schema: + $ref: '#/components/schemas/Event-read' + application/xml: + schema: + $ref: '#/components/schemas/Event-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Event-read' + text/csv: + schema: + $ref: '#/components/schemas/Event-read' + text/html: + schema: + $ref: '#/components/schemas/Event-read' + links: + GetEventItem: + parameters: + id: '$response.body#/id' + operationId: getEventItem + description: 'The `id` value returned in the response can be used as the `id` parameter in `GET /events/{id}`.' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Event-write' + application/ld+json: + schema: + $ref: '#/components/schemas/Event-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Event-write' + application/json: + schema: + $ref: '#/components/schemas/Event-write' + application/xml: + schema: + $ref: '#/components/schemas/Event-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/Event-write' + text/csv: + schema: + $ref: '#/components/schemas/Event-write' + text/html: + schema: + $ref: '#/components/schemas/Event-write' + description: 'The new Event resource' + parameters: + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + '/events/{id}': + get: + tags: + - Event + operationId: getEventItem + summary: 'Retrieves a Event resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + - + name: Link + description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' + in: header + - + name: 'extend[]' + required: false + description: 'An array of nested objects to include in the return object' + in: query + schema: + type: array + - + name: 'fields[]' + required: false + description: 'An array of fields to return in output, wil return all fields is not supplied' + in: query + schema: + type: array + - + name: validOn + required: false + description: 'Returns object as valid on a given date time' + schema: + type: string + format: date-time + in: query + - + name: validFrom + required: false + description: 'Returns objects valid from a given date time' + schema: + type: string + format: date-time + in: query + - + name: validUntil + required: false + description: 'Returns objects valid until a given date time' + schema: + type: string + format: date-time + in: query + responses: + 200: + description: 'Event resource response' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Event-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Event-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Event-read' + application/json: + schema: + $ref: '#/components/schemas/Event-read' + application/xml: + schema: + $ref: '#/components/schemas/Event-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Event-read' + text/csv: + schema: + $ref: '#/components/schemas/Event-read' + text/html: + schema: + $ref: '#/components/schemas/Event-read' + 404: + description: 'Resource not found' + produces: + - application/health+json + delete: + tags: + - Event + operationId: deleteEventItem + summary: 'Removes the Event resource.' + responses: + 204: + description: 'Event resource deleted' + 404: + description: 'Resource not found' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + put: + tags: + - Event + operationId: putEventItem + summary: 'Replaces the Event resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + responses: + 200: + description: 'Event resource updated' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Event-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Event-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Event-read' + application/json: + schema: + $ref: '#/components/schemas/Event-read' + application/xml: + schema: + $ref: '#/components/schemas/Event-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Event-read' + text/csv: + schema: + $ref: '#/components/schemas/Event-read' + text/html: + schema: + $ref: '#/components/schemas/Event-read' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Event-write' + application/ld+json: + schema: + $ref: '#/components/schemas/Event-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Event-write' + application/json: + schema: + $ref: '#/components/schemas/Event-write' + application/xml: + schema: + $ref: '#/components/schemas/Event-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/Event-write' + text/csv: + schema: + $ref: '#/components/schemas/Event-write' + text/html: + schema: + $ref: '#/components/schemas/Event-write' + description: 'The updated Event resource' + patch: + tags: + - Event + operationId: patchEventItem + summary: 'Updates the Event resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + responses: + 200: + description: 'Event resource updated' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Event-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Event-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Event-read' + application/json: + schema: + $ref: '#/components/schemas/Event-read' + application/xml: + schema: + $ref: '#/components/schemas/Event-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Event-read' + text/csv: + schema: + $ref: '#/components/schemas/Event-read' + text/html: + schema: + $ref: '#/components/schemas/Event-read' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Event-write' + application/ld+json: + schema: + $ref: '#/components/schemas/Event-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Event-write' + application/json: + schema: + $ref: '#/components/schemas/Event-write' + application/xml: + schema: + $ref: '#/components/schemas/Event-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/Event-write' + text/csv: + schema: + $ref: '#/components/schemas/Event-write' + text/html: + schema: + $ref: '#/components/schemas/Event-write' + description: 'The updated Event resource' + /example_entities: + get: + tags: + - ExampleEntity + operationId: getExampleEntityCollection + summary: 'Retrieves the collection of ExampleEntity resources.' + responses: + 200: + description: 'ExampleEntity collection response' + content: + application/hal+json: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + application/ld+json: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + application/vnd.api+json: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + application/x-yaml: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + text/csv: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + text/html: + schema: + type: array + items: + $ref: '#/components/schemas/ExampleEntity-read' + parameters: + - + name: like_name + in: query + required: false + schema: + type: string + - + name: like_description + in: query + required: false + schema: + type: string + - + name: page + in: query + required: false + description: 'The collection page number' + schema: + type: integer + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + - + name: Link + description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' + in: header + - + name: 'extend[]' + required: false + description: 'An array of nested objects to include in the return object' + in: query + schema: + type: array + - + name: 'fields[]' + required: false + description: 'An array of fields to return in output, wil return all fields is not supplied' + in: query + schema: + type: array + - + name: validOn + required: false + description: 'Returns object as valid on a given date time' + schema: + type: string + format: date-time + in: query + - + name: validFrom + required: false + description: 'Returns objects valid from a given date time' + schema: + type: string + format: date-time + in: query + - + name: validUntil + required: false + description: 'Returns objects valid until a given date time' + schema: + type: string + format: date-time + in: query + produces: + - application/health+json + post: + tags: + - ExampleEntity + operationId: postExampleEntityCollection + summary: 'Creates a ExampleEntity resource.' + responses: + 201: + description: 'ExampleEntity resource created' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/ld+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/xml: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + text/csv: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + text/html: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + links: + GetExampleEntityItem: + parameters: + id: '$response.body#/id' + operationId: getExampleEntityItem + description: 'The `id` value returned in the response can be used as the `id` parameter in `GET /example_entities/{id}`.' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/ld+json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/xml: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + text/csv: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + text/html: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + description: 'The new ExampleEntity resource' + parameters: + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + '/example_entities/{id}': + get: + tags: + - ExampleEntity + operationId: audittrailExampleEntityItem + summary: 'Retrieves a ExampleEntity resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + - + name: Link + description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' + in: header + - + name: 'extend[]' + required: false + description: 'An array of nested objects to include in the return object' + in: query + schema: + type: array + - + name: 'fields[]' + required: false + description: 'An array of fields to return in output, wil return all fields is not supplied' + in: query + schema: + type: array + - + name: validOn + required: false + description: 'Returns object as valid on a given date time' + schema: + type: string + format: date-time + in: query + - + name: validFrom + required: false + description: 'Returns objects valid from a given date time' + schema: + type: string + format: date-time + in: query + - + name: validUntil + required: false + description: 'Returns objects valid until a given date time' + schema: + type: string + format: date-time + in: query + responses: + 200: + description: 'ExampleEntity resource response' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/ld+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/xml: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + text/csv: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + text/html: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + 404: + description: 'Resource not found' + produces: + - application/health+json + put: + tags: + - ExampleEntity + operationId: putExampleEntityItem + summary: 'Replaces the ExampleEntity resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + responses: + 200: + description: 'ExampleEntity resource updated' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/ld+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/json: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/xml: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + text/csv: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + text/html: + schema: + $ref: '#/components/schemas/ExampleEntity-read' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/ld+json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/json: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/xml: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + text/csv: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + text/html: + schema: + $ref: '#/components/schemas/ExampleEntity-write' + description: 'The updated ExampleEntity resource' + delete: + tags: + - ExampleEntity + operationId: deleteExampleEntityItem + summary: 'Removes the ExampleEntity resource.' + responses: + 204: + description: 'ExampleEntity resource deleted' + 404: + description: 'Resource not found' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + /schedules: + get: + tags: + - Schedule + operationId: getScheduleCollection + summary: 'Retrieves the collection of Schedule resources.' + responses: + 200: + description: 'Schedule collection response' + content: + application/hal+json: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + application/ld+json: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + application/vnd.api+json: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + application/xml: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + application/x-yaml: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + text/csv: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + text/html: + schema: + type: array + items: + $ref: '#/components/schemas/Schedule-read' + parameters: + - + name: page + in: query + required: false + description: 'The collection page number' + schema: + type: integer + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + - + name: Link + description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' + in: header + - + name: 'extend[]' + required: false + description: 'An array of nested objects to include in the return object' + in: query + schema: + type: array + - + name: 'fields[]' + required: false + description: 'An array of fields to return in output, wil return all fields is not supplied' + in: query + schema: + type: array + - + name: validOn + required: false + description: 'Returns object as valid on a given date time' + schema: + type: string + format: date-time + in: query + - + name: validFrom + required: false + description: 'Returns objects valid from a given date time' + schema: + type: string + format: date-time + in: query + - + name: validUntil + required: false + description: 'Returns objects valid until a given date time' + schema: + type: string + format: date-time + in: query + produces: + - application/health+json + post: + tags: + - Schedule + operationId: postScheduleCollection + summary: 'Creates a Schedule resource.' + responses: + 201: + description: 'Schedule resource created' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/xml: + schema: + $ref: '#/components/schemas/Schedule-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Schedule-read' + text/csv: + schema: + $ref: '#/components/schemas/Schedule-read' + text/html: + schema: + $ref: '#/components/schemas/Schedule-read' + links: + GetScheduleItem: + parameters: + id: '$response.body#/id' + operationId: getScheduleItem + description: 'The `id` value returned in the response can be used as the `id` parameter in `GET /schedules/{id}`.' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/ld+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/xml: + schema: + $ref: '#/components/schemas/Schedule-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/Schedule-write' + text/csv: + schema: + $ref: '#/components/schemas/Schedule-write' + text/html: + schema: + $ref: '#/components/schemas/Schedule-write' + description: 'The new Schedule resource' + parameters: + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + '/schedules/{id}': + get: + tags: + - Schedule + operationId: getScheduleItem + summary: 'Retrieves a Schedule resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + - + name: Link + description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' + in: header + - + name: 'extend[]' + required: false + description: 'An array of nested objects to include in the return object' + in: query + schema: + type: array + - + name: 'fields[]' + required: false + description: 'An array of fields to return in output, wil return all fields is not supplied' + in: query + schema: + type: array + - + name: validOn + required: false + description: 'Returns object as valid on a given date time' + schema: + type: string + format: date-time + in: query + - + name: validFrom + required: false + description: 'Returns objects valid from a given date time' + schema: + type: string + format: date-time + in: query + - + name: validUntil + required: false + description: 'Returns objects valid until a given date time' + schema: + type: string + format: date-time + in: query + responses: + 200: + description: 'Schedule resource response' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/xml: + schema: + $ref: '#/components/schemas/Schedule-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Schedule-read' + text/csv: + schema: + $ref: '#/components/schemas/Schedule-read' + text/html: + schema: + $ref: '#/components/schemas/Schedule-read' + 404: + description: 'Resource not found' + produces: + - application/health+json + delete: + tags: + - Schedule + operationId: deleteScheduleItem + summary: 'Removes the Schedule resource.' + responses: + 204: + description: 'Schedule resource deleted' + 404: + description: 'Resource not found' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + put: + tags: + - Schedule + operationId: putScheduleItem + summary: 'Replaces the Schedule resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + responses: + 200: + description: 'Schedule resource updated' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/xml: + schema: + $ref: '#/components/schemas/Schedule-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Schedule-read' + text/csv: + schema: + $ref: '#/components/schemas/Schedule-read' + text/html: + schema: + $ref: '#/components/schemas/Schedule-read' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/ld+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/xml: + schema: + $ref: '#/components/schemas/Schedule-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/Schedule-write' + text/csv: + schema: + $ref: '#/components/schemas/Schedule-write' + text/html: + schema: + $ref: '#/components/schemas/Schedule-write' + description: 'The updated Schedule resource' + patch: + tags: + - Schedule + operationId: patchScheduleItem + summary: 'Updates the Schedule resource.' + parameters: + - + name: id + in: path + required: true + schema: + type: string + - + name: Authorization + description: 'The JWT of the entity performing the request' + in: header + - + name: API-Version + description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' + example: 1.0.1 + in: header + - + name: X-NLX-Logrecord-ID + description: 'A globally unique id of the request, which makes a request traceable throughout the network.' + in: header + - + name: X-NLX-Request-Process-Id + description: 'A process id for purpose registration (doelbinding)' + in: header + - + name: X-NLX-Request-Data-Elements + description: 'A list of requested data elements' + in: header + - + name: X-NLX-Request-Data-Subject + description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' + in: header + - + name: X-NLX-Audit-Clarification + description: 'A clarification as to why a request has been made (doelbinding)' + in: header + responses: + 200: + description: 'Schedule resource updated' + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/ld+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/json: + schema: + $ref: '#/components/schemas/Schedule-read' + application/xml: + schema: + $ref: '#/components/schemas/Schedule-read' + application/x-yaml: + schema: + $ref: '#/components/schemas/Schedule-read' + text/csv: + schema: + $ref: '#/components/schemas/Schedule-read' + text/html: + schema: + $ref: '#/components/schemas/Schedule-read' + 400: + description: 'Invalid input' + 404: + description: 'Resource not found' + requestBody: + content: + application/hal+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/ld+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/vnd.api+json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/json: + schema: + $ref: '#/components/schemas/Schedule-write' + application/xml: + schema: + $ref: '#/components/schemas/Schedule-write' + application/x-yaml: + schema: + $ref: '#/components/schemas/Schedule-write' + text/csv: + schema: + $ref: '#/components/schemas/Schedule-write' + text/html: + schema: + $ref: '#/components/schemas/Schedule-write' + description: 'The updated Schedule resource' +components: + schemas: + Calendar-read: + type: object + description: 'A Calendar is a collection of events tied to an unque person or resource.' + properties: + id: + readOnly: true + description: 'The UUID identifier of this resource' + type: string + name: + description: 'The name of this Calendar' + type: string + description: + description: 'An short description of this Calendar' + type: string + schedules: + description: 'Schedules that belong to this Calendar' + type: array + items: + $ref: '#/components/schemas/Schedule-read' + events: + description: 'Events that belong to this Calendar' + type: array + items: + $ref: '#/components/schemas/Event-read' + required: + - name + Calendar-write: + type: object + description: 'A Calendar is a collection of events tied to an unque person or resource.' + required: + - name + properties: + name: + description: 'The name of this Calendar' + type: string + description: + description: 'An short description of this Calendar' + type: string + schedules: + description: 'Schedules that belong to this Calendar' + type: array + items: + $ref: '#/components/schemas/Schedule-write' + events: + description: 'Events that belong to this Calendar' + type: array + items: + $ref: '#/components/schemas/Event-write' + Event-read: + type: object + description: 'An event happening at a certain time and location, such as a concert, lecture, meeting or festival.' + externalDocs: + url: 'https://schema.org/Event' + properties: + id: + readOnly: true + description: 'The UUID identifier of this resource' + type: string + name: + description: 'The name of this RequestType' + type: string + description: + description: 'An short description of this Event' + type: string + startDateTime: + description: 'The moment this event starts' + type: string + format: date-time + endDateTime: + description: 'The moment this event ends' + type: string + format: date-time + location: + description: 'The location of this event' + type: string + schedule: + description: 'An optional Schedule to wich this event belongs' + $ref: '#/components/schemas/Schedule-read' + calendar: + description: 'The Calendar to wich this event belongs' + $ref: '#/components/schemas/Calendar-read' + required: + - name + Event-write: + type: object + description: 'An event happening at a certain time and location, such as a concert, lecture, meeting or festival.' + externalDocs: + url: 'https://schema.org/Event' + required: + - name + properties: + name: + description: 'The name of this RequestType' + type: string + description: + description: 'An short description of this Event' + type: string + startDateTime: + description: 'The moment this event starts' + type: string + format: date-time + endDateTime: + description: 'The moment this event ends' + type: string + format: date-time + location: + description: 'The location of this event' + type: string + schedule: + description: 'An optional Schedule to wich this event belongs' + $ref: '#/components/schemas/Schedule-write' + calendar: + description: 'The Calendar to wich this event belongs' + $ref: '#/components/schemas/Calendar-write' + ExampleEntity-read: + type: object + description: 'This is an example entity.' + properties: + id: + readOnly: true + type: string + name: + description: 'The name of this example property' + type: string + description: + description: 'The description of this example property' + type: string + camelCase: + description: 'Proof that we camel case our api' + type: string + required: + - name + ExampleEntity-write: + type: object + description: 'This is an example entity.' + required: + - name + properties: + name: + description: 'The name of this example property' + type: string + description: + description: 'The description of this example property' + type: string + camelCase: + description: 'Proof that we camel case our api' + type: string + Schedule-read: + type: object + description: 'A schedule defines a repeating time period used to describe a regularly occurring Event. At a minimum a schedule will specify repeatFrequency which describes the interval between occurences of the event. Additional information can be provided to specify the schedule more precisely. This includes identifying the day(s) of the week or month when the recurring event will take place, in addition to its start and end time. Schedules may also have start and end dates to indicate when they are active, e.g. to define a limited calendar of events.' + externalDocs: + url: 'http://schema.org/PostalAddress' + properties: + id: + readOnly: true + description: 'The UUID identifier of this resource' + type: string + name: + description: 'The name of this Schedule' + type: string + description: + description: 'An short description of this Schedule' + type: string + byDay: + description: 'Defines the day(s) of the week on which a recurring Event takes place. Sunday is both 0 and 7.' + type: integer + byMonth: + description: 'Defines the month(s) of the year on which a recurring Event takes place. Specified as an Integer between 1-12. January is 1.' + type: integer + byMonthDay: + description: 'Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31.' + type: integer + events: + description: 'The that belong to or are coused by this Schedule' + type: array + items: + $ref: '#/components/schemas/Event-read' + exceptDates: + description: 'Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31.' + type: array + items: + type: string + repeatCount: + description: 'Defines the number of times a recurring Event will take place' + type: integer + repeatFrequency: + description: 'Defines the frequency at which Events will occur according to a schedule Schedule. The intervals between events should be defined as a [Duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) of time.' + type: string + calendar: + description: 'The Calendar to wich this Schedule belongs' + $ref: '#/components/schemas/Calendar-read' + required: + - name + Schedule-write: + type: object + description: 'A schedule defines a repeating time period used to describe a regularly occurring Event. At a minimum a schedule will specify repeatFrequency which describes the interval between occurences of the event. Additional information can be provided to specify the schedule more precisely. This includes identifying the day(s) of the week or month when the recurring event will take place, in addition to its start and end time. Schedules may also have start and end dates to indicate when they are active, e.g. to define a limited calendar of events.' + externalDocs: + url: 'http://schema.org/PostalAddress' + required: + - name + properties: + name: + description: 'The name of this Schedule' + type: string + description: + description: 'An short description of this Schedule' + type: string + byDay: + description: 'Defines the day(s) of the week on which a recurring Event takes place. Sunday is both 0 and 7.' + type: integer + byMonth: + description: 'Defines the month(s) of the year on which a recurring Event takes place. Specified as an Integer between 1-12. January is 1.' + type: integer + byMonthDay: + description: 'Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31.' + type: integer + events: + description: 'The that belong to or are coused by this Schedule' + type: array + items: + $ref: '#/components/schemas/Event-write' + exceptDates: + description: 'Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31.' + type: array + items: + type: string + repeatCount: + description: 'Defines the number of times a recurring Event will take place' + type: integer + repeatFrequency: + description: 'Defines the frequency at which Events will occur according to a schedule Schedule. The intervals between events should be defined as a [Duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) of time.' + type: string + calendar: + description: 'The Calendar to wich this Schedule belongs' + $ref: '#/components/schemas/Calendar-write' +definitions: + Calendar-read: + properties: + id: + example: e2984465-190a-4562-829e-a8cca81aa35d + format: uuid + name: + example: 'My Calendar' + maxLength: 255 + description: + example: 'This is the best Calendar ever' + maxLength: 2550 + schedules: [] + events: [] + required: + - name + Calendar-write: + properties: + name: + example: 'My Calendar' + maxLength: 255 + description: + example: 'This is the best Calendar ever' + maxLength: 2550 + schedules: [] + events: [] + required: + - name + Event-read: + properties: + id: + example: e2984465-190a-4562-829e-a8cca81aa35d + format: uuid + name: + example: 'My RequestType' + maxLength: 255 + description: + example: 'This is the best Event ever' + maxLength: 2550 + startDateTime: + example: 30-11-2019 + endDateTime: [] + location: + example: 'Dam 1, Amsterdam' + maxLength: 255 + schedule: [] + calendar: [] + required: + - name + Event-write: + properties: + name: + example: 'My RequestType' + maxLength: 255 + description: + example: 'This is the best Event ever' + maxLength: 2550 + startDateTime: + example: 30-11-2019 + endDateTime: [] + location: + example: 'Dam 1, Amsterdam' + maxLength: 255 + schedule: [] + calendar: [] + required: + - name + ExampleEntity-read: + properties: + id: + example: e2984465-190a-4562-829e-a8cca81aa35d + format: uuid + name: + example: 'My Group' + maxLength: 255 + description: + example: 'Is the best group ever' + maxLength: 2555 + camelCase: + example: 'Best api ever' + maxLength: 255 + required: + - name + ExampleEntity-write: + properties: + name: + example: 'My Group' + maxLength: 255 + description: + example: 'Is the best group ever' + maxLength: 2555 + camelCase: + example: 'Best api ever' + maxLength: 255 + required: + - name + Schedule-read: + properties: + id: + example: e2984465-190a-4562-829e-a8cca81aa35d + format: uuid + name: + example: 'My Schedule' + maxLength: 255 + description: + example: 'This is the best Schedule ever' + maxLength: 2550 + byDay: + example: '1' + byMonth: + example: '1' + byMonthDay: + example: '1' + exceptDates: [] + repeatCount: + example: '' + repeatFrequency: + example: PT1M + maxLength: 255 + events: [] + calendar: [] + required: + - name + Schedule-write: + properties: + name: + example: 'My Schedule' + maxLength: 255 + description: + example: 'This is the best Schedule ever' + maxLength: 2550 + byDay: + example: '1' + byMonth: + example: '1' + byMonthDay: + example: '1' + exceptDates: [] + repeatCount: + example: '' + repeatFrequency: + example: PT1M + maxLength: 255 + events: [] + calendar: [] + required: + - name +tags: + - + name: Calendar + description: | + A Calendar is a collection of events tied to an unque person or resource. + + + - + name: Event + description: | + An event happening at a certain time and location, such as a concert, lecture, meeting or festival. + + + - + name: ExampleEntity + description: | + This is an example entity. + + With an adtional description, all in all its pritty nice [url](www.google.nl) + - + name: Schedule + description: | + A schedule defines a repeating time period used to describe a regularly occurring Event. At a minimum a schedule will specify repeatFrequency which describes the interval between occurences of the event. Additional information can be provided to specify the schedule more precisely. This includes identifying the day(s) of the week or month when the recurring event will take place, in addition to its start and end time. Schedules may also have start and end dates to indicate when they are active, e.g. to define a limited calendar of events. + + securityDefinitions: JWT-Oauth: type: oauth2 authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog' flow: implicit scopes: - read: 'read right to the ExampleEntity resource' - write: 'write right to the ExampleEntity resource' + read: 'read right to the Schedule resource' + write: 'write right to the Schedule resource' JWT-Token: type: apiKey in: header name: Authorization scopes: - read: 'read right to the ExampleEntity resource' - write: 'write right to the ExampleEntity resource' + read: 'read right to the Schedule resource' + write: 'write right to the Schedule resource' host: irc.zaakonline.nl servers: - From e51380d0031a46f9bb459c71cd098efd1dfd28bd Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 9 Dec 2019 16:33:22 +0100 Subject: [PATCH 36/46] ApiProperty removed on properties --- .idea/workspace.xml | 375 ------------------------------------ api/src/Entity/Calendar.php | 42 +--- api/src/Entity/Event.php | 78 ++------ api/src/Entity/Schedule.php | 120 +----------- api/symfony.lock | 3 + 5 files changed, 21 insertions(+), 597 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index ced0c1eb..00000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - - - - - $PROJECT_DIR$/api/composer.json - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1573726460744 - - - 1573726496674 - - - 1573733386819 - - - 1573735733551 - - - 1574770855136 - - - 1575279662940 - - - 1575279748074 - - - 1575280067186 - - - 1575280181182 - - - 1575281141670 - - - 1575282235015 - - - 1575282356507 - - - 1575282386363 - - - 1575282997667 - - - 1575283562491 - - - 1575283747919 - - - 1575283918851 - - - 1575379056373 - - - 1575383847583 - - - 1575386337848 - - - 1575388288073 - - - 1575443809720 - - - 1575443827717 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api/src/Entity/Calendar.php b/api/src/Entity/Calendar.php index d2561167..89e76cf5 100644 --- a/api/src/Entity/Calendar.php +++ b/api/src/Entity/Calendar.php @@ -25,21 +25,8 @@ class Calendar { /** * @var UuidInterface The UUID identifier of this resource - * * @example e2984465-190a-4562-829e-a8cca81aa35d * - * @ApiProperty( - * identifier=true, - * attributes={ - * "swagger_context"={ - * "description" = "The UUID identifier of this resource", - * "type"="string", - * "format"="uuid", - * "example"="e2984465-190a-4562-829e-a8cca81aa35d" - * } - * } - * ) - * * @Assert\Uuid * @Groups({"read"}) * @ORM\Id @@ -51,22 +38,8 @@ class Calendar /** * @var string The name of this Calendar - * * @example My Calendar * - * @ApiProperty( - * iri="http://schema.org/name", - * attributes={ - * "swagger_context"={ - * "description" = "The name of this Calendar", - * "type"="string", - * "example"="My Calendar", - * "maxLength"="255", - * "required" = true - * } - * } - * ) - * * @Assert\NotNull * @Assert\Length( * max = 255 @@ -78,21 +51,8 @@ class Calendar /** * @var string An short description of this Calendar - * * @example This is the best Calendar ever * - * @ApiProperty( - * iri="https://schema.org/description", - * attributes={ - * "swagger_context"={ - * "description" = "An short description of this Calendar", - * "type"="string", - * "example"="This is the best Calendar ever", - * "maxLength"="2550" - * } - * } - * ) - * * @Assert\Length( * max = 2550 * ) @@ -125,7 +85,7 @@ public function __construct() $this->events = new ArrayCollection(); } - public function getId(): ?int + public function getId(): ?string { return $this->id; } diff --git a/api/src/Entity/Event.php b/api/src/Entity/Event.php index 442f039c..a36815ce 100644 --- a/api/src/Entity/Event.php +++ b/api/src/Entity/Event.php @@ -24,21 +24,8 @@ class Event { /** * @var UuidInterface The UUID identifier of this resource - * * @example e2984465-190a-4562-829e-a8cca81aa35d * - * @ApiProperty( - * identifier=true, - * attributes={ - * "swagger_context"={ - * "description" = "The UUID identifier of this resource", - * "type"="string", - * "format"="uuid", - * "example"="e2984465-190a-4562-829e-a8cca81aa35d" - * } - * } - * ) - * * @Assert\Uuid * @Groups({"read"}) * @ORM\Id @@ -50,22 +37,8 @@ class Event /** * @var string The name of this RequestType - * * @example My RequestType * - * @ApiProperty( - * iri="http://schema.org/name", - * attributes={ - * "swagger_context"={ - * "description" = "The name of this RequestType", - * "type"="string", - * "example"="My RequestType", - * "maxLength"="255", - * "required" = true - * } - * } - * ) - * * @Assert\NotNull * @Assert\Length( * max = 255 @@ -77,21 +50,8 @@ class Event /** * @var string An short description of this Event - * * @example This is the best Event ever * - * @ApiProperty( - * iri="https://schema.org/description", - * attributes={ - * "swagger_context"={ - * "description" = "An short description of this Event", - * "type"="string", - * "example"="This is the best Event ever", - * "maxLength"="2550" - * } - * } - * ) - * * @Assert\Length( * max = 2550 * ) @@ -100,13 +60,14 @@ class Event */ private $description; - /** * + /** * @var Datetime The moment this event starts + * @example 30-11-2019 * * @Groups({"read","write"}) * @ORM\Column(type="datetime") */ - private $from; + private $startDateTime; /** * @var Datetime The moment this event ends @@ -114,25 +75,12 @@ class Event * @Groups({"read","write"}) * @ORM\Column(type="datetime") */ - private $till; + private $endDateTime; /** * @var string The location of this event - * * @example Dam 1, Amsterdam * - * @ApiProperty( - * iri="https://schema.org/location", - * attributes={ - * "swagger_context"={ - * "description" = "The location of this event", - * "type"="string", - * "example"="Dam 1, Amsterdam", - * "maxLength"="255", - * } - * } - * ) - * * @Assert\Length( * max = 255 * ) @@ -160,7 +108,7 @@ class Event */ private $calendar; - public function getId(): ?int + public function getId(): ?string { return $this->id; } @@ -189,26 +137,26 @@ public function setDescription(?string $description): self return $this; } - public function getFrom(): ?\DateTimeInterface + public function getStartDateTime(): ?\DateTimeInterface { - return $this->from; + return $this->startDateTime; } - public function setFrom(\DateTimeInterface $from): self + public function setStartDateTime(\DateTimeInterface $startDateTime): self { - $this->from = $from; + $this->startDateTime = $startDateTime; return $this; } - public function getTill(): ?\DateTimeInterface + public function getEndDateTime(): ?\DateTimeInterface { - return $this->till; + return $this->endDateTime; } - public function setTill(\DateTimeInterface $till): self + public function setEndDateTime(\DateTimeInterface $endDateTime): self { - $this->till = $till; + $this->endDateTime = $endDateTime; return $this; } diff --git a/api/src/Entity/Schedule.php b/api/src/Entity/Schedule.php index 3296e024..08184707 100644 --- a/api/src/Entity/Schedule.php +++ b/api/src/Entity/Schedule.php @@ -26,21 +26,8 @@ class Schedule { /** * @var UuidInterface The UUID identifier of this resource - * * @example e2984465-190a-4562-829e-a8cca81aa35d * - * @ApiProperty( - * identifier=true, - * attributes={ - * "swagger_context"={ - * "description" = "The UUID identifier of this resource", - * "type"="string", - * "format"="uuid", - * "example"="e2984465-190a-4562-829e-a8cca81aa35d" - * } - * } - * ) - * * @Assert\Uuid * @Groups({"read"}) * @ORM\Id @@ -52,22 +39,8 @@ class Schedule /** * @var string The name of this Schedule - * * @example My Schedule * - * @ApiProperty( - * iri="http://schema.org/name", - * attributes={ - * "swagger_context"={ - * "description" = "The name of this Schedule", - * "type"="string", - * "example"="My Schedule", - * "maxLength"="255", - * "required" = true - * } - * } - * ) - * * @Assert\NotNull * @Assert\Length( * max = 255 @@ -79,21 +52,8 @@ class Schedule /** * @var string An short description of this Schedule - * * @example This is the best Schedule ever * - * @ApiProperty( - * iri="https://schema.org/description", - * attributes={ - * "swagger_context"={ - * "description" = "An short description of this Schedule", - * "type"="string", - * "example"="This is the best Schedule ever", - * "maxLength"="2550" - * } - * } - * ) - * * @Assert\Length( * max = 2550 * ) @@ -104,21 +64,8 @@ class Schedule /** * @var string Defines the day(s) of the week on which a recurring Event takes place. Sunday is both 0 and 7. - * * @example 1 * - * @ApiProperty( - * iri="https://schema.org/byDay", - * attributes={ - * "swagger_context"={ - * "description" = "Defines the day(s) of the week on which a recurring Event takes place. Sunday is both 0 and 7", - * "type"="integer", - * "example"="1", - * "minimum"="0", - * "maximum"="7", - * } - * } - * ) * @Assert\Range( * min = 0, * max = 7 @@ -131,21 +78,8 @@ class Schedule /** * @var string Defines the month(s) of the year on which a recurring Event takes place. Specified as an Integer between 1-12. January is 1. - * * @example 1 * - * @ApiProperty( - * iri="https://schema.org/byMonth", - * attributes={ - * "swagger_context"={ - * "description" = "Defines the month(s) of the year on which a recurring Event takes place. Specified as an Integer between 1-12. January is 1", - * "type"="integer", - * "example"="1", - * "minimum"="1", - * "maximum"="12", - * } - * } - * ) * @Assert\Range( * min = 1, * max = 12 @@ -158,21 +92,8 @@ class Schedule /** * @var string Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31. - * * @example 1 * - * @ApiProperty( - * iri="https://schema.org/byMonthDay", - * attributes={ - * "swagger_context"={ - * "description" = "Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31", - * "type"="integer", - * "example"="1", - * "minimum"="1", - * "maximum"="31", - * } - * } - * ) * @Assert\Range( * min = 1, * max = 31 @@ -195,19 +116,6 @@ class Schedule /** * @var string Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31. * - * @example ['2019-10-22T17:32:20Z','2019-10-22T17:32:20Z'] - * - * @ApiProperty( - * iri="https://schema.org/exceptDate", - * attributes={ - * "swagger_context"={ - * "description" = "Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31", - * "type"="array", - * "example"="['2019-10-22T17:32:20Z','2019-10-22T17:32:20Z']" - * } - * } - * ) - * * @Groups({"read","write"}) * @ORM\Column(type="array", nullable=true) */ @@ -215,20 +123,9 @@ class Schedule /** * @var int Defines the number of times a recurring Event will take place - * * @example * - * @ApiProperty( - * iri="https://schema.org/repeatCount", - * attributes={ - * "swagger_context"={ - * "description" = "Defines the number of times a recurring Event will take plac", - * "type"="integer", - * "example"="1", - * } - * } - * ) - * + * @Assert\Type("integer") * @Groups({"read","write"}) * @ORM\Column(type="integer", nullable=true) */ @@ -236,20 +133,11 @@ class Schedule /** * @var string Defines the frequency at which Events will occur according to a schedule Schedule. The intervals between events should be defined as a [Duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) of time. - * * @example PT1M * - * @ApiProperty( - * iri="https://schema.org/repeatFrequency", - * attributes={ - * "swagger_context"={ - * "description" = "Defines the frequency at which Events will occur according to a schedule Schedule. The intervals between events should be defined as a [Duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) of time", - * "type"="string", - * "example"="PT1M", - * } - * } + * @Assert\Length( + * max = 255 * ) - * * @Groups({"read","write"}) * @ORM\Column(type="string", length=255, nullable=true) */ @@ -270,7 +158,7 @@ public function __construct() $this->events = new ArrayCollection(); } - public function getId(): ?int + public function getId(): ?string { return $this->id; } diff --git a/api/symfony.lock b/api/symfony.lock index be591f61..877580fb 100644 --- a/api/symfony.lock +++ b/api/symfony.lock @@ -181,6 +181,9 @@ "nikic/php-parser": { "version": "v4.2.2" }, + "php": { + "version": "7.3" + }, "php-cs-fixer/diff": { "version": "v1.3.0" }, From 1423e78e0bfa03e6a9eb20d32a42a3790946d04f Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 9 Dec 2019 16:43:40 +0100 Subject: [PATCH 37/46] Asserts added --- api/public/schema/openapi.yaml | 587 +-------------------------------- api/src/Entity/Event.php | 5 + api/src/Entity/Schedule.php | 2 +- 3 files changed, 18 insertions(+), 576 deletions(-) diff --git a/api/public/schema/openapi.yaml b/api/public/schema/openapi.yaml index bf788bc4..f761187c 100644 --- a/api/public/schema/openapi.yaml +++ b/api/public/schema/openapi.yaml @@ -1201,511 +1201,6 @@ paths: schema: $ref: '#/components/schemas/Event-write' description: 'The updated Event resource' - /example_entities: - get: - tags: - - ExampleEntity - operationId: getExampleEntityCollection - summary: 'Retrieves the collection of ExampleEntity resources.' - responses: - 200: - description: 'ExampleEntity collection response' - content: - application/hal+json: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - application/ld+json: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - application/vnd.api+json: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - application/xml: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - application/x-yaml: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - text/csv: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - text/html: - schema: - type: array - items: - $ref: '#/components/schemas/ExampleEntity-read' - parameters: - - - name: like_name - in: query - required: false - schema: - type: string - - - name: like_description - in: query - required: false - schema: - type: string - - - name: page - in: query - required: false - description: 'The collection page number' - schema: - type: integer - - - name: Authorization - description: 'The JWT of the entity performing the request' - in: header - - - name: API-Version - description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' - example: 1.0.1 - in: header - - - name: X-NLX-Logrecord-ID - description: 'A globally unique id of the request, which makes a request traceable throughout the network.' - in: header - - - name: X-NLX-Request-Process-Id - description: 'A process id for purpose registration (doelbinding)' - in: header - - - name: X-NLX-Request-Data-Elements - description: 'A list of requested data elements' - in: header - - - name: X-NLX-Request-Data-Subject - description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' - in: header - - - name: X-NLX-Audit-Clarification - description: 'A clarification as to why a request has been made (doelbinding)' - in: header - - - name: Link - description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' - in: header - - - name: 'extend[]' - required: false - description: 'An array of nested objects to include in the return object' - in: query - schema: - type: array - - - name: 'fields[]' - required: false - description: 'An array of fields to return in output, wil return all fields is not supplied' - in: query - schema: - type: array - - - name: validOn - required: false - description: 'Returns object as valid on a given date time' - schema: - type: string - format: date-time - in: query - - - name: validFrom - required: false - description: 'Returns objects valid from a given date time' - schema: - type: string - format: date-time - in: query - - - name: validUntil - required: false - description: 'Returns objects valid until a given date time' - schema: - type: string - format: date-time - in: query - produces: - - application/health+json - post: - tags: - - ExampleEntity - operationId: postExampleEntityCollection - summary: 'Creates a ExampleEntity resource.' - responses: - 201: - description: 'ExampleEntity resource created' - content: - application/hal+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/ld+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/xml: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/x-yaml: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - text/csv: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - text/html: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - links: - GetExampleEntityItem: - parameters: - id: '$response.body#/id' - operationId: getExampleEntityItem - description: 'The `id` value returned in the response can be used as the `id` parameter in `GET /example_entities/{id}`.' - 400: - description: 'Invalid input' - 404: - description: 'Resource not found' - requestBody: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/ld+json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/xml: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/x-yaml: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - text/csv: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - text/html: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - description: 'The new ExampleEntity resource' - parameters: - - - name: Authorization - description: 'The JWT of the entity performing the request' - in: header - - - name: API-Version - description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' - example: 1.0.1 - in: header - - - name: X-NLX-Logrecord-ID - description: 'A globally unique id of the request, which makes a request traceable throughout the network.' - in: header - - - name: X-NLX-Request-Process-Id - description: 'A process id for purpose registration (doelbinding)' - in: header - - - name: X-NLX-Request-Data-Elements - description: 'A list of requested data elements' - in: header - - - name: X-NLX-Request-Data-Subject - description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' - in: header - - - name: X-NLX-Audit-Clarification - description: 'A clarification as to why a request has been made (doelbinding)' - in: header - '/example_entities/{id}': - get: - tags: - - ExampleEntity - operationId: audittrailExampleEntityItem - summary: 'Retrieves a ExampleEntity resource.' - parameters: - - - name: id - in: path - required: true - schema: - type: string - - - name: Authorization - description: 'The JWT of the entity performing the request' - in: header - - - name: API-Version - description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' - example: 1.0.1 - in: header - - - name: X-NLX-Logrecord-ID - description: 'A globally unique id of the request, which makes a request traceable throughout the network.' - in: header - - - name: X-NLX-Request-Process-Id - description: 'A process id for purpose registration (doelbinding)' - in: header - - - name: X-NLX-Request-Data-Elements - description: 'A list of requested data elements' - in: header - - - name: X-NLX-Request-Data-Subject - description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' - in: header - - - name: X-NLX-Audit-Clarification - description: 'A clarification as to why a request has been made (doelbinding)' - in: header - - - name: Link - description: 'A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel="hub"' - in: header - - - name: 'extend[]' - required: false - description: 'An array of nested objects to include in the return object' - in: query - schema: - type: array - - - name: 'fields[]' - required: false - description: 'An array of fields to return in output, wil return all fields is not supplied' - in: query - schema: - type: array - - - name: validOn - required: false - description: 'Returns object as valid on a given date time' - schema: - type: string - format: date-time - in: query - - - name: validFrom - required: false - description: 'Returns objects valid from a given date time' - schema: - type: string - format: date-time - in: query - - - name: validUntil - required: false - description: 'Returns objects valid until a given date time' - schema: - type: string - format: date-time - in: query - responses: - 200: - description: 'ExampleEntity resource response' - content: - application/hal+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/ld+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/xml: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/x-yaml: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - text/csv: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - text/html: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - 404: - description: 'Resource not found' - produces: - - application/health+json - put: - tags: - - ExampleEntity - operationId: putExampleEntityItem - summary: 'Replaces the ExampleEntity resource.' - parameters: - - - name: id - in: path - required: true - schema: - type: string - - - name: Authorization - description: 'The JWT of the entity performing the request' - in: header - - - name: API-Version - description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' - example: 1.0.1 - in: header - - - name: X-NLX-Logrecord-ID - description: 'A globally unique id of the request, which makes a request traceable throughout the network.' - in: header - - - name: X-NLX-Request-Process-Id - description: 'A process id for purpose registration (doelbinding)' - in: header - - - name: X-NLX-Request-Data-Elements - description: 'A list of requested data elements' - in: header - - - name: X-NLX-Request-Data-Subject - description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' - in: header - - - name: X-NLX-Audit-Clarification - description: 'A clarification as to why a request has been made (doelbinding)' - in: header - responses: - 200: - description: 'ExampleEntity resource updated' - content: - application/hal+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/ld+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/json: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/xml: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - application/x-yaml: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - text/csv: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - text/html: - schema: - $ref: '#/components/schemas/ExampleEntity-read' - 400: - description: 'Invalid input' - 404: - description: 'Resource not found' - requestBody: - content: - application/hal+json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/ld+json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/vnd.api+json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/json: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/xml: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - application/x-yaml: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - text/csv: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - text/html: - schema: - $ref: '#/components/schemas/ExampleEntity-write' - description: 'The updated ExampleEntity resource' - delete: - tags: - - ExampleEntity - operationId: deleteExampleEntityItem - summary: 'Removes the ExampleEntity resource.' - responses: - 204: - description: 'ExampleEntity resource deleted' - 404: - description: 'Resource not found' - parameters: - - - name: id - in: path - required: true - schema: - type: string - - - name: Authorization - description: 'The JWT of the entity performing the request' - in: header - - - name: API-Version - description: 'The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)' - example: 1.0.1 - in: header - - - name: X-NLX-Logrecord-ID - description: 'A globally unique id of the request, which makes a request traceable throughout the network.' - in: header - - - name: X-NLX-Request-Process-Id - description: 'A process id for purpose registration (doelbinding)' - in: header - - - name: X-NLX-Request-Data-Elements - description: 'A list of requested data elements' - in: header - - - name: X-NLX-Request-Data-Subject - description: 'A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`' - in: header - - - name: X-NLX-Audit-Clarification - description: 'A clarification as to why a request has been made (doelbinding)' - in: header /schedules: get: tags: @@ -2384,6 +1879,9 @@ components: $ref: '#/components/schemas/Calendar-read' required: - name + - startDateTime + - endDateTime + - location Event-write: type: object description: 'An event happening at a certain time and location, such as a concert, lecture, meeting or festival.' @@ -2391,6 +1889,9 @@ components: url: 'https://schema.org/Event' required: - name + - startDateTime + - endDateTime + - location properties: name: description: 'The name of this RequestType' @@ -2415,39 +1916,6 @@ components: calendar: description: 'The Calendar to wich this event belongs' $ref: '#/components/schemas/Calendar-write' - ExampleEntity-read: - type: object - description: 'This is an example entity.' - properties: - id: - readOnly: true - type: string - name: - description: 'The name of this example property' - type: string - description: - description: 'The description of this example property' - type: string - camelCase: - description: 'Proof that we camel case our api' - type: string - required: - - name - ExampleEntity-write: - type: object - description: 'This is an example entity.' - required: - - name - properties: - name: - description: 'The name of this example property' - type: string - description: - description: 'The description of this example property' - type: string - camelCase: - description: 'Proof that we camel case our api' - type: string Schedule-read: type: object description: 'A schedule defines a repeating time period used to describe a regularly occurring Event. At a minimum a schedule will specify repeatFrequency which describes the interval between occurences of the event. Additional information can be provided to specify the schedule more precisely. This includes identifying the day(s) of the week or month when the recurring event will take place, in addition to its start and end time. Schedules may also have start and end dates to indicate when they are active, e.g. to define a limited calendar of events.' @@ -2585,6 +2053,8 @@ definitions: calendar: [] required: - name + - startDateTime + - endDateTime Event-write: properties: name: @@ -2603,35 +2073,8 @@ definitions: calendar: [] required: - name - ExampleEntity-read: - properties: - id: - example: e2984465-190a-4562-829e-a8cca81aa35d - format: uuid - name: - example: 'My Group' - maxLength: 255 - description: - example: 'Is the best group ever' - maxLength: 2555 - camelCase: - example: 'Best api ever' - maxLength: 255 - required: - - name - ExampleEntity-write: - properties: - name: - example: 'My Group' - maxLength: 255 - description: - example: 'Is the best group ever' - maxLength: 2555 - camelCase: - example: 'Best api ever' - maxLength: 255 - required: - - name + - startDateTime + - endDateTime Schedule-read: properties: id: @@ -2651,7 +2094,7 @@ definitions: example: '1' exceptDates: [] repeatCount: - example: '' + example: '10' repeatFrequency: example: PT1M maxLength: 255 @@ -2675,7 +2118,7 @@ definitions: example: '1' exceptDates: [] repeatCount: - example: '' + example: '10' repeatFrequency: example: PT1M maxLength: 255 @@ -2696,12 +2139,6 @@ tags: An event happening at a certain time and location, such as a concert, lecture, meeting or festival. - - - name: ExampleEntity - description: | - This is an example entity. - - With an adtional description, all in all its pritty nice [url](www.google.nl) - name: Schedule description: | diff --git a/api/src/Entity/Event.php b/api/src/Entity/Event.php index a36815ce..d2dee9c0 100644 --- a/api/src/Entity/Event.php +++ b/api/src/Entity/Event.php @@ -64,6 +64,8 @@ class Event * @var Datetime The moment this event starts * @example 30-11-2019 * + * @Assert\DateTime + * @Assert\NotNull * @Groups({"read","write"}) * @ORM\Column(type="datetime") */ @@ -72,6 +74,8 @@ class Event /** * @var Datetime The moment this event ends * + * @Assert\DateTime + * @Assert\NotNull * @Groups({"read","write"}) * @ORM\Column(type="datetime") */ @@ -84,6 +88,7 @@ class Event * @Assert\Length( * max = 255 * ) + * @Assert\NotBlank * @Groups({"read","write"}) * @ORM\Column(type="string", length=255) */ diff --git a/api/src/Entity/Schedule.php b/api/src/Entity/Schedule.php index 08184707..577bda58 100644 --- a/api/src/Entity/Schedule.php +++ b/api/src/Entity/Schedule.php @@ -123,7 +123,7 @@ class Schedule /** * @var int Defines the number of times a recurring Event will take place - * @example + * @example 10 * * @Assert\Type("integer") * @Groups({"read","write"}) From 06f9e3129d927d2b6358e1bfb36085f2c3d1d1e9 Mon Sep 17 00:00:00 2001 From: Barry Date: Tue, 10 Dec 2019 10:07:28 +0100 Subject: [PATCH 38/46] Postman test added --- arc.postman_collection.json | 5810 +++++++++++++++++++++++++++++++++++ 1 file changed, 5810 insertions(+) create mode 100644 arc.postman_collection.json diff --git a/arc.postman_collection.json b/arc.postman_collection.json new file mode 100644 index 00000000..73539128 --- /dev/null +++ b/arc.postman_collection.json @@ -0,0 +1,5810 @@ +{ + "info": { + "_postman_id": "40e6ba9b-fc90-4700-86b9-d29c6791103f", + "name": "Agendaservice", + "description": "API Details\n- Component: Agendaservice\n- Reference: arc\n- Enviroment: dev\n- Version: V.0.1\n- Repository: [online](https://github.com/ConductionNL/Proto-component-commonground) / [zip](https://github.com/ConductionNL/Proto-component-commonground/archive/master.zip)\n- Docker Image: [online](https://hub.docker.com/repository/docker/conduction/arc-php) \n- Datamodel: [postman](/schema/openapi.postman_collection) / [oas](/schema/openapi.yaml) / [pdf](/schema/datamodel.pdf) / [mwb](/schema/datamodel.mwb) \n\n'Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.' \n", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "calendars", + "item": [ + { + "name": "Retrieves the collection of Calendar resources.", + "event": [ + { + "listen": "test", + "script": { + "id": "7c6fe433-8ecf-43dd-82e4-ecd62eebe917", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Link", + "value": "", + "description": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars" + ] + } + }, + "response": [ + { + "name": "Calendar collection response", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars?page=&extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars" + ], + "query": [ + { + "key": "page", + "value": "" + }, + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + }, + { + "name": "Creates a Calendar resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "13fa7071-bdf3-4df5-93ca-9bd1eb0e403e", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(201);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " // pm.response.to.be.created; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});\r", + "\r", + "\r", + "pm.test(\"Set ID\", function () {\r", + " var jsonData = pm.response.json();\r", + " console.log(jsonData);\r", + " //var payloadData = JSON.parse(jsonData.Payload); //parsed payload\r", + "\r", + " //console.log(payloadData.Id);\r", + "\r", + " pm.environment.set(\"calendar\", jsonData.id);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My Calendar\",\r\n \"description\": \"This is the best Calendar ever\"\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/calendars", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars" + ] + } + }, + "response": [ + { + "name": "Invalid input", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Calendar resource created", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars" + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "calendars/{id}", + "item": [ + { + "name": "Retrieves a Calendar resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "8e6c0b31-761f-4ea3-a593-2d17a06b710b", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Link", + "value": "", + "description": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars/{{calendar}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "{{calendar}}" + ] + } + }, + "response": [ + { + "name": "Resource not found", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ], + "query": [ + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Calendar resource response", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ], + "query": [ + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + }, + { + "name": "Replaces the Calendar resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "fa5e1518-ff1e-48f9-8fdb-1600447ac2fb", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My Calendar\",\r\n \"description\": \"This is the best Calendar ever\"\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/calendars/{{calendar}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "{{calendar}}" + ] + } + }, + "response": [ + { + "name": "Invalid input", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Calendar resource updated", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + }, + { + "name": "Updates the Calendar resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "aff80d0a-aae2-48f7-9712-e7e2305a0664", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My Calendar\",\r\n \"description\": \"This is the best Calendar ever\"\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/calendars/{{calendar}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "{{calendar}}" + ] + } + }, + "response": [ + { + "name": "Invalid input", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Calendar resource updated", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "schedules", + "item": [ + { + "name": "Retrieves the collection of Schedule resources.", + "event": [ + { + "listen": "test", + "script": { + "id": "908fdea4-d8e4-4418-adf1-ba9088ad8e4e", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Link", + "value": "", + "description": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules" + ] + } + }, + "response": [ + { + "name": "Schedule collection response", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules?page=&extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules" + ], + "query": [ + { + "key": "page", + "value": "" + }, + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + }, + { + "name": "Creates a Schedule resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "5f168cec-c38b-4693-8620-f6045bbff439", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(201);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " // pm.response.to.be.created; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});\r", + "\r", + "\r", + "pm.test(\"Set ID\", function () {\r", + " var jsonData = pm.response.json();\r", + " console.log(jsonData);\r", + " //var payloadData = JSON.parse(jsonData.Payload); //parsed payload\r", + "\r", + " //console.log(payloadData.Id);\r", + "\r", + " pm.environment.set(\"schedule\", jsonData.id);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My Schedule\",\r\n \"description\": \"This is the best Schedule ever\",\r\n \"repeatCount\": 1,\r\n \"repeatFrequency\": \"PT1M\",\r\n \"calendar\": \"calendars/{{calendar}}\"\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/schedules", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules" + ] + } + }, + "response": [ + { + "name": "Resource not found", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Invalid input", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Schedule resource created", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules" + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "schedules/{id}", + "item": [ + { + "name": "Retrieves a Schedule resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "de0cfbb0-4f8e-429f-852d-54a51ddcf3ea", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Link", + "value": "", + "description": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules/{{schedule}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "{{schedule}}" + ] + } + }, + "response": [ + { + "name": "Resource not found", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ], + "query": [ + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Schedule resource response", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ], + "query": [ + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + }, + { + "name": "Replaces the Schedule resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "c796af0c-49be-43ac-a14e-565862ab1447", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My Schedule\",\r\n \"description\": \"This is the best Schedule ever\",\r\n \"repeatCount\": 1,\r\n \"repeatFrequency\": \"PT1M\",\r\n \"calendar\": \"calendars/{{calendar}}\"\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/schedules/{{schedule}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "{{schedule}}" + ] + } + }, + "response": [ + { + "name": "Resource not found", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Invalid input", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Schedule resource updated", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + }, + { + "name": "Updates the Schedule resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "0bc95ea3-99f7-4c56-a747-2cb23fea1704", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My Schedule\",\r\n \"description\": \"This is the best Schedule ever\",\r\n \"repeatCount\": 1,\r\n \"repeatFrequency\": \"PT1M\"\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/schedules/{{schedule}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "{{schedule}}" + ] + } + }, + "response": [ + { + "name": "Schedule resource updated", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Invalid input", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "events", + "item": [ + { + "name": "Retrieves the collection of Event resources.", + "event": [ + { + "listen": "test", + "script": { + "id": "fc797ff0-3fdb-4226-a8b1-0d741bb5840c", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Link", + "value": "", + "description": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"" + } + ], + "url": { + "raw": "{{baseUrl}}/events", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events" + ] + } + }, + "response": [ + { + "name": "Event collection response", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/events?page=&extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events" + ], + "query": [ + { + "key": "page", + "value": "" + }, + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + } + ] + }, + { + "name": "Creates a Event resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "b42700ca-ca32-4797-86d9-7b9b5c4acc28", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(201);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " // pm.response.to.be.created; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});\r", + "\r", + "\r", + "pm.test(\"Set ID\", function () {\r", + " var jsonData = pm.response.json();\r", + " console.log(jsonData);\r", + " //var payloadData = JSON.parse(jsonData.Payload); //parsed payload\r", + "\r", + " //console.log(payloadData.Id);\r", + "\r", + " pm.environment.set(\"event\", jsonData.id);\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My RequestType\",\r\n \"description\": \"This is the best Event ever\",\r\n \"startDateTime\": \"20191130\",\r\n \"endDateTime\": \"20191210\",\r\n \"location\": \"Dam 1, Amsterdam\",\r\n \"calendar\": \"calendars/{{calendar}}\",\r\n \"schedules\": [\"/schedules/{{schedule}}\"]\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/events", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events" + ] + } + }, + "response": [ + { + "name": "Invalid input", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Event resource created", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events" + ] + } + }, + "status": "Created", + "code": 201, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "POST", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "events/{id}", + "item": [ + { + "name": "Retrieves a Event resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "5c327676-13a7-4cc1-a747-746e38be9910", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Link", + "value": "", + "description": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"" + } + ], + "url": { + "raw": "{{baseUrl}}/events/{{event}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "{{event}}" + ] + } + }, + "response": [ + { + "name": "Event resource response", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/events/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ], + "query": [ + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "GET", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "description": { + "content": "A [websub](https://www.w3.org/TR/websub/#discovery) header like ; rel=\"hub\"", + "type": "text/plain" + }, + "key": "Link", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/events/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ], + "query": [ + { + "key": "extend[]", + "value": "" + }, + { + "key": "fields[]", + "value": "" + }, + { + "key": "validOn", + "value": "" + }, + { + "key": "validFrom", + "value": "" + }, + { + "key": "validUntil", + "value": "" + } + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "Replaces the Event resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "76facf03-0c0b-43ff-821d-7541573d55f9", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My RequestType\",\r\n \"description\": \"This is the best Event ever\",\r\n \"startDateTime\": \"20191130\",\r\n \"endDateTime\": \"20191210\",\r\n \"location\": \"Dam 1, Amsterdam\",\r\n \"calendar\": \"calendars/{{calendar}}\",\r\n \"schedules\": [\"/schedules/{{schedule}}\"]\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/events/{{event}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "{{event}}" + ] + } + }, + "response": [ + { + "name": "Resource not found", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Event resource updated", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + }, + { + "name": "Invalid input", + "originalRequest": { + "method": "PUT", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "Updates the Event resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "c63c7003-c6eb-42e8-8a63-803ec1405d20", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "// example using response assertions\r", + "pm.test(\"response should be okay to process\", function () {\r", + " pm.response.to.not.be.error;\r", + " pm.response.to.not.have.jsonBody(\"error\");\r", + "});\r", + "\r", + "// example using pm.response.to.be*\r", + "pm.test(\"response must be valid and have a body\", function () {\r", + " // assert that the status code is 200\r", + " pm.response.to.be.ok; // info, success, redirection, clientError, serverError, are other variants\r", + " // assert that the response has a valid JSON body\r", + " pm.response.to.be.withBody;\r", + " pm.response.to.be.json; // this assertion also checks if a body exists, so the above check is not needed\r", + "});" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "PATCH", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"name\": \"My RequestType\",\r\n \"description\": \"This is the best Event ever\",\r\n \"startDateTime\": \"20191130\",\r\n \"endDateTime\": \"20191210\",\r\n \"location\": \"Dam 1, Amsterdam\"\r\n}" + }, + "url": { + "raw": "{{baseUrl}}/events/{{event}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "{{event}}" + ] + } + }, + "response": [ + { + "name": "Event resource updated", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "Content-Type", + "value": "application/hal+json" + } + ], + "cookie": [], + "body": "null" + }, + { + "name": "Invalid input", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "Bad Request", + "code": 400, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "PATCH", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "null" + }, + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + } + ], + "protocolProfileBehavior": {} + }, + { + "name": "Cleanup", + "item": [ + { + "name": "Removes the Event resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "29650f0f-f04a-460d-9147-ca38e27991f0", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(204);\r", + "});\r", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + } + ], + "url": { + "raw": "{{baseUrl}}/events/{{event}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "{{event}}" + ] + } + }, + "response": [ + { + "name": "Resource not found", + "originalRequest": { + "method": "DELETE", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Event resource deleted", + "originalRequest": { + "method": "DELETE", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/events/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "events", + "" + ] + } + }, + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "Removes the Schedule resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "40d8bfc1-7946-4032-8880-8bd1d4c68822", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(204);\r", + "});\r", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules/{{schedule}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "{{schedule}}" + ] + } + }, + "response": [ + { + "name": "Schedule resource deleted", + "originalRequest": { + "method": "DELETE", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "DELETE", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/schedules/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "schedules", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "Removes the Calendar resource.", + "event": [ + { + "listen": "test", + "script": { + "id": "2265af26-e3ca-4803-8ae5-7bdb17529a96", + "exec": [ + "// example using pm.response.to.have\r", + "pm.test(\"response is ok\", function () {\r", + " pm.response.to.have.status(204);\r", + "});\r", + "" + ], + "type": "text/javascript" + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "", + "description": "The JWT of the entity performing the request" + }, + { + "key": "API-Version", + "value": "", + "description": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)" + }, + { + "key": "X-NLX-Logrecord-ID", + "value": "", + "description": "A globally unique id of the request, which makes a request traceable throughout the network." + }, + { + "key": "X-NLX-Request-Process-Id", + "value": "", + "description": "A process id for purpose registration (doelbinding)" + }, + { + "key": "X-NLX-Request-Data-Elements", + "value": "", + "description": "A list of requested data elements" + }, + { + "key": "X-NLX-Request-Data-Subject", + "value": "", + "description": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`" + }, + { + "key": "X-NLX-Audit-Clarification", + "value": "", + "description": "A clarification as to why a request has been made (doelbinding)" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars/{{calendar}}", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "{{calendar}}" + ] + } + }, + "response": [ + { + "name": "Calendar resource deleted", + "originalRequest": { + "method": "DELETE", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "No Content", + "code": 204, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + }, + { + "name": "Resource not found", + "originalRequest": { + "method": "DELETE", + "header": [ + { + "description": { + "content": "The JWT of the entity performing the request", + "type": "text/plain" + }, + "key": "Authorization", + "value": "" + }, + { + "description": { + "content": "The version of the API conform [Landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning)", + "type": "text/plain" + }, + "key": "API-Version", + "value": "" + }, + { + "description": { + "content": "A globally unique id of the request, which makes a request traceable throughout the network.", + "type": "text/plain" + }, + "key": "X-NLX-Logrecord-ID", + "value": "" + }, + { + "description": { + "content": "A process id for purpose registration (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Request-Process-Id", + "value": "" + }, + { + "description": { + "content": "A list of requested data elements", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Elements", + "value": "" + }, + { + "description": { + "content": "A key-value list of data subjects related to this request. e.g. `bsn=12345678, kenteken=ab-12-fg`", + "type": "text/plain" + }, + "key": "X-NLX-Request-Data-Subject", + "value": "" + }, + { + "description": { + "content": "A clarification as to why a request has been made (doelbinding)", + "type": "text/plain" + }, + "key": "X-NLX-Audit-Clarification", + "value": "" + } + ], + "url": { + "raw": "{{baseUrl}}/calendars/", + "host": [ + "{{baseUrl}}" + ], + "path": [ + "calendars", + "" + ] + } + }, + "status": "Not Found", + "code": 404, + "_postman_previewlanguage": "text", + "header": [ + { + "key": "Content-Type", + "value": "text/plain" + } + ], + "cookie": [], + "body": "" + } + ] + } + ], + "protocolProfileBehavior": {} + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "1c87612b-ce91-436b-92ce-ba0757e17eac", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "d097d8a9-4440-438b-9ee0-5d51d108e450", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "id": "e369e1cb-769e-464d-b1d4-188618d8defe", + "key": "baseUrl", + "value": "localhost:8080\n", + "type": "string" + } + ], + "protocolProfileBehavior": {} +} \ No newline at end of file From 5897236f81cf1e8dd3dbd3fc97b1a04d4a40d49e Mon Sep 17 00:00:00 2001 From: Barry Date: Wed, 11 Dec 2019 13:35:38 +0100 Subject: [PATCH 39/46] Readme fixed vrc.zaakonline.nl changed to arc.zaakonline.nl --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cc806cc2..09b99445 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Keeping in form with international standardization calendars are based on the [s - [Securing this component](SECURITY.md) - [Design considerations](DESIGN.md) -A hosted version of the OAS documentation and an demo version of the API can be found on http://vrc.zaakonline.nl +A hosted version of the OAS documentation and an demo version of the API can be found on http://arc.zaakonline.nl ## Features This repository uses the power of the [commonground proto component](https://github.com/ConductionNL/commonground-component) provide common ground specific functionality based on the [VNG Api Strategie](https://docs.geostandaarden.nl/api/API-Strategie/). Including From f545fae65e245b4913ed428c8e0d48b0410ce7eb Mon Sep 17 00:00:00 2001 From: Barry Date: Wed, 11 Dec 2019 15:51:53 +0100 Subject: [PATCH 40/46] Small fixes + data model Maybe give Event an extra property called eventStatus? --- Agendaservice.png | Bin 0 -> 19505 bytes api/public/schema/openapi.yaml | 64 +++++++++++++++++---------------- api/src/Entity/Calendar.php | 62 ++++++++++++++++---------------- api/src/Entity/Event.php | 21 +++++------ api/src/Entity/Schedule.php | 1 + 5 files changed, 78 insertions(+), 70 deletions(-) create mode 100644 Agendaservice.png diff --git a/Agendaservice.png b/Agendaservice.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3afc653936a922acb952da078129b57a7d5609 GIT binary patch literal 19505 zcmcG$c|26@|39u(WxLxH%}}X?BwNN2lawQFq(sQ5gpuqsgit9eIZBr7bgT)9lD$&a zEXNwz*I_JSY{T%oM)&=BzrT;~_woDw{`vjkF=oy=*E!d9z1HXJ`8rQ7=)gSN1h;W; zaPXYhID3(UV_h%!E8nsn{KDDk>cqjJwQ&Bds{Wm*@#vADorWJj&X8))MG-fuT?y&k zw_x}A+4l=R`i2f)_nQB>#x1{PRdHik+1@Q*eZ|k6|4v?i;-&4I)22aH%6Y$BTx0Ei zjmNKB`eid-B}wo;FW*gU@>!J!B3JjpGh- z92|%C5Cp*yE*uXBN987DGsnGw_3#Fc(@yu%bsYQiK4Tml&#wv++?n1h!pJ%mcjuSu zIE<6B(AAl`I`AjeG?iJ-ymAuR?RIKu;)zO(AZuI_j3GQW%`>NE7@k%&_Bul~v|qG;!3ZxkFy%kL5O~UKX*OIXW?wlMb$KpL#mfg> zr=j8?2c`q&$GD*6KB$@{nk&E&cdmyFX8Qc6jkl3hKd6I!S4n_Sh6 z;vq0E?Ko~;*YOfLuKiSa{72pGzUs(n3o#nksHeKi;8oa+(tUUOb&l*Rqf?QY8DjDf zEG~ZkI5KqHPyDqq!Vi5+w)Y3O$$pVw^qXKDyF7UAdT_}o!8po0z3`NqDj`B@o0<30 z>$|VExwzzfBG;YTwVPt=vU6XXqueh6svJk08uwc?59@hL^^IBsvXuBV|{4J za$tCNwm96xk5NA*=Je7!4>KSRj%f1>cu%F+>mJ9KN8GOabz_4*9|tX_3mfT2SsnEl zpGEAU+=cl){sp~YE#@@}P!T4k%eRHAngl;am8m&PKTb4YlpBQnyAQjfJn%r0;?fej zuNey4_78Ur2DYS56%k&mvDa)uUhG{5W4QYtsWPWG*u>lxs5ht($V0`f-oR zZ&zD;opYf140=lH2jM=yNLq~*5$q#J=d}~K07W%|;Jq&!5%$GEK>uGpJZgDo*TEZ} zJ6wQKAjoXV{=a>MWf1ZSmTl#ls<0uFo?WIx?Z65pTO`?6Ui(e6#&;&6X^r&ssd>G% zz32N!vN|WJ$0nO2IqhP&Am%i`M0W0uA#&G7|H`p6O;xQcjeTi(Q?|>^EVoX2Pg421 z==lUxN# z&pJ!IDB^WuEQAlM!i_?{P4piB0ot3RQE=DWQ4+kH3N+)iJGmM&>I~THR{K~V>_*4OEIvqVhPDqidG$WYU_2~?%UN^3JPSR;XEG` zGnl*B$Rdls-ZzVyLxL=zU-uY6KdJcEM-j7Ukj7j0EUu?rtv{A)fR98zwcM<)h0in(qjLr z^go&{w>4kRx=nVTEuIZ~kHhpwu793u9gYW>uOO}YA#StgCt8vIRhZTUE$$Qfhd^yW zr9XYxAY-KUvGX`>G5uB>F41KpuIOD&RiPe_vm6{!^+U9Z?qJw6#qGav%kD;SiTlw^ z4}1rM@OEd4YbXv5$%&ZskNv*q`{JgUyNfL$^1zPKwwgN2eeYBbnM!EDEHiziNYqhsNUO9|tyvmj z5exSW5x#ZICZsi97P_I--u~QMu#MjHZp2yY0TNTV-vr0(Q;^pq1mZGANH7oER2Whe zi0zZK>c~#Fk_F_XwI#81l(CuB*mUeu9X9tPSrw+Yx6#Qv6xcVHH?1pj#%X{5FiOq2 z0_QS+{N{C)oX8m@H(?z2yy|6PsnoKZ-|qzubyi^NMCK8Dy}h}us^=)E7v*ml6$T^h zDM~{-)%~8!L}x~tAid=5PU#hrEFB{MGAeqmHW_mHIhP`@L8P->3zdU|S?Z7;I8kwo z;Ew0G7qbp7cc5GkI~uE1g}tA=FTl@nTIwEZ-i+xh6>M$d146<<<8hF){PMqLqy+GamSCS7w)EqGfo_;H;~#z!Qhrue3|*Fy+wsOmr7 zA%BQAXgGVVYe=yib8ouvi24roH+R?D$0HyP@6*#X@gJl0eG1t(ynp1!3b2`R2TECP z(K~H*yIq`vuQbMx{BSZiogS6Y9Dl2+8&f`GkD@Iv`i+ovq(kmsgl}D}-_eq@aO-%1 zUx~Zi9|249&dWMn4%Co2d29LG)v~JNY|ne%6{r1xv}PPMhY6LUr&d|4)VENtk;Ar$ zzo>GFOIE`YxBiN1x_a5CC*1S0i<~KA7JY=CugU%NSmmX&TsocHiao-Ievmd>(bRqD z?<{+U8KdKm7{Ys8u#^Lr>jRH+-^AEfW#gwy}!{k|Q1UHkWhLK!(J=l|oE6!^$7}PD9+iwELfPZe3_VUi)N9 zOF_d9a^#nG!*J|C3Rw@9!ZDDm*1dbijd)Rq*!-Y*3Z`FQt`2-y9bhWiU&`T<1O{h5_=Lx{8CWP zdto(Y4~MFP=T#i5ESh`cR=0X;hv6hw?7vEXhD-Ow(eqq!yK542QX(uS@U2bGIuSeU zzkhw=I!2pvwLpDrMo+*d`=)iFcKXq0PEQ%FQdM7Tm1f=tgHVrm>Kfem-JYt=1M?l* zZeXEgrZ-5T+2jw?is$!beSG5)`^8t`wBaKg|-GrSJo`#4Dd-h1-Iq=%G3DEB8>pZC1*@bMKs+ zvkOb-BQC(zA2pOBd{NF{7!T2>a{>+{h`XQf6b@4`38%VP+MlDIx=Ccd(U}JpR{XWe z1l(%Ws<-!p`pLFkYT`;l?|D4U?47p2KE>-mtYVr+e3n9cS;lgdvAMl%;>k-S163UA zelL@0II^-|o<3I*{(K3o%||$Z4`L1xVzWDz$>ud>k05Fe@3SP&FPyV09G;vY0(A85 zS>dQWJRYmszb;6f<^OTE?wa+*Wi8h$Dn9HuVTX1*(PxYnu;^5-;NGgdM}hmg5@`9o9IvBWma>Ba7v`6`|`Al~^z;BcVbx0#cxJ78K^!-@d+Bd`YN9f%#35NMlK_W)QjyJVd>H(0-+eNp69( zvkIJ@${9($88FqM7uh=8vb8A}qHj6JIF!8DzI&TuO{px+_k#K-N!$(?%8cx9_J&JZ#3M z`M1*HR!g%6`~2hqh?(*={BYr_F@x%~U-;3FG*mQXA zo!I4DK<+8)kVC?$E^;wj4>w?8BrIGrxb;PmzCl}pam^tco$+fS_F@ezN9|-6{n&JN zbmlD4w?c?cd>O&da1YUB-Xsd7$D^@A@6vge1K(yVGF$n(1s>@MIqy&?PlgnsA=cFA zMHO9B-kFuS_}`s}i-{U7BCyREd0M_xI8bcfd``MkIK=#8NTuO7mZMu$RaDB|%uSND ziz_LAHwuHHZDc>nJH0+)=l@-d`T&T}bC(rK76{Oz_2IO?56`b$P;I!+R@6(^@dIRD zy&$m$`SA8H)|xU#=R0vxa-E+sM&R2gd{KqG9zz*Ua*O!^OX%Hib1EkjPF9RreIfaU zuoU%m7awaI2kYIO-~85wD=o~{WPD|GgLOy|KDsdtn32cy62F$ALcB`ceqWYIBW zuN=`!=bLJ~7w4{TorFDbwlZGE9RkM&=kKy;Wynb^&y{)o(cq~}^2o|3jWmLlaM8lx zcCKs^vAv)Ca?HZfw1CFs z3)xyN`^}@#GZ$cB-1j*dstw=2Zug}z@CcXHoZ(0r-oNm(D~7>;~5)Ush`G?C)qLIXGZ(-o-c{q zFy+Ln$8e>G@S3$wUG$QFkMO(t{+ftWhX?Wzvsfvbr?#lh0Q`Usb-4J6r}WakBuqxW z?xT%j^CZq-EsO_80Hd*)C;rJ*Ldc;V97u;5rk0QVn&N3@^a*e@%w=lYR@}^6TP2K0FT-94K{v zc{jhl7rM&xpsuIhYx7}ndZ32mXY4#j?3Z{Jx2B+yU^$1d17$kgt`aMJ^I;c7uI_l$ z=qJ?e3ms&}RJme56cK`;C4t+G*r|ynl{Kr|xw^Cg(b?j__;*N$9@@kD`=s(|lJfU_ zx8pQgwF%)UVL(?^Hz4=f# zg}`;Osz7eaqOMn2w_??q?YoLT$Eu3aUr`y$2FS^@%AZjk4@wYAAA1S+C9Lp%+1x=- z4twVT?qrz@_XgE@aLh}3J;4MU9eB&%O zr5~-hJy7#zh1-Cg>9fy2(X`5~Zt+P8u@sBFoi1#9D9;|`#}PsIHz1*yr5AiDMF0d` z;9SOMtPRRfwDQGmKjoP%3BU(m5HJzk_m7+<8e4r*XbfyIv2CKm9`rx<_>5IrxpUx5f2!IfhM>fOV$RV7 zUd49R!tKcYQ|*_x&}4jiXt67Qf5=v!IJOO5Z83uR4(TaLZ+MOa2p3J^E0)dy`wVOV z&shrM!yrEP-KBt6Q&H=qH6&Qnb@-t^Ak{b&vCcV%bjJ@8L=ccd|JQlxiV?&Af2Y#! zzwe`})7EWR=&a_8r?ef158_RBAW5eW3oh~BDz4g-DGr+$%*ixkGPL7LlQr}!ZB{1q z8Qrs+SR_Q}2HSrSlJ%P~*J%;)%+j}LTMv5Jo@g9Jmhav}^p|=%!*yzLI$gqs;J){< zlibJs>nh`^@THEq3?1sV&I0K>0AEr^rdigo8e-7*?aH(b6gGZnoN6V#>)FyGee$jWqd*ofIBu&`TZ@tr6BKjzoU zHy7}dtW(rYR5=Y^V2)TwQlIfGWc(I2@wB|-SHSPu?j$!#JFu~c_xW9Dn0C1N6+h{u zPr^RMb{gD0Ai1r74oZ1!*A$41kQu1oE`s2pSl$-Q4pq|#uWhZ7EO*Fho7n4}8BWFL zjK3vS#LriWS3JUTrmf{2zQ86Qid| z21z>kO?2nRQNLHRxNSY;=XZO^KOXQ&y^`Hn$qvZ;fN24j3L-)z_CctRtU0<@sSN-L z@xRMJCgbADq|+|8ytfiA#YQ$Dn=3`bkqk4qpi!bI9XKZ`qnE<*h!F12zy$X@YtqmO z6n^weVU06_&Zfj~qhEvflrvtR6qM0NPQDKQ$lr#2ca%`5Rc#1oxq&=X&39=A5^awu z9v?cIm84w6t9Y|wV4FAA-{bczhjtI;QmRSdZN#E(h;K+lniAp;zqOufzUso~JxeCd zL!U+*|6X-6*FsQ<^4ad@g(rE>LQLyI2!1=z(9WSr<6HLx>gb!A20Ao}+) z!Y0?pP(%YOduF%%7M)ueZ&ZK(C>B?WIL>5ZU$KNCldETAD-|PJKnhCx%3Iz3O3FJ? z^y~LLfdihp$>++`P_6=U({pheyleA&S|$)%4^5D7K5<%KuBi`8#lDmDunWg46D^D` zoy$Na8X2yeV9|~2J!`?GN9@aQJ{ zYnCqrDSpQGFXluE+d{_e;VU)=ohOUU)CrcqJbY@^Y?Y!nU1P%={oq% zdQ7qjlTK0-4*iF-NW?l#rtVom>rw8-o zr z^BXDw+ztEWmm0A5;&P?eF97(hMJXG>114L*`%>#YB)T_=atBPEvC(>gm%JK<@9wj{ z^(>axl~Drn;hW_?IK0R{y(%5AE}?-0o>rBbdp2`cJyQ7Mb>gjRor7$ROh$R6VY z&5QN7+Ar9+I|ecb8Bqst(FW`Z8&epGhLog>Plkq$FVe}-o{5(CNn^Y&a&Y(e6m*tA z@H<*Li{<`o&t*{=jT>+^2cFWh6-6^ebnw~_x`L(ly^kq8-7FX2n`Y$TG54YbA$eAR zBvoZTg_vj*0W7`sX7*gDu#&)PfID7X%NU9{s1yNg89nZIz&&(v`Ry3>4mv4FFji2| z&-9s&D=OmE8ThT#zB4VDs%cGtqSwSXR9LdPUtY>e?oNVciT$#|jNRl1EKktmv zJ|Qi2+#_1<{Ds%?olUZ8W_U?&jXr}Sq>L&TBakG-R?d&ID{4!aomY-dm`d|Aw7bq| zVuKpA9r0rNrpN45pG7BsBaa+C@b5XJC0?;;rOUj0DXn@cUk#6|&!fa)UwL=@p9N@! z@&}Ip+Hd5nWqeZM=Hi$f^o?&Y)K@|XcFrkT7%kRh3GgRlFWgYgEDRtH%8Qu3X5DRW zImj63fE=WbG(}1BT)xdPkvA()n*@M*@^1F?9r__~gCB=XfLg{{rR9c}I7(~8?PZaIQ8)77-*vbev-~YE zA1K9Xs8l*o#us0<+S+)oYz6Vh{9kJ}46lv3%1BwCha#L6=SKG?)toEGoN!S;W%dlx zyt@aoCL_B((`?U)k>%CzsJ9u_3cPuocn`IH_xl<^3Ma1h>frZ!cJJIPxk<8D)d3oa zI&kio=Vkz9vF|7efwGE;#mkr<4NshM46>y%)e7&?X(6o|FM1JD|A~f3@e}PkXC~88 zu{a;muinf1*`Pdm_g>Zq2^)nIOq1}5y6gBZ$bEJT>us}l%4gbTg8RLD>>x$y(ui1C z9f0Q4C!#5GCDXx;^ye-a{p9S{-m@B!NXvcACi;c*ccyUZk^6ev5@gOmG%~M#{?P(l z)WdlJoHF4b*|dEK%i_`!ZjMvs{Fn6mz2xR0C$5gbxsB?6itT3?pcwQ+@CFv`tIm8F z7d7X}&cC<8d>rh#jf2cdw)6tLG)nWWWKwh_UlgZ$)XNN+6^{K)Au>O<_r81Ll@kJ_kSws*Gu9oSuZHgo zTzR$u#prwYuc;iYEyYs@BdY_{&)G)wLyjwsfo1^MBwW3fa%iw z1a|^^3q~?gx3S-pNjlm7gxDzUI;dLzCklz>B`_N-t*)N%Fj8#aV%mODA1OXLyjjg& z5)|gjbeBBv>TfUF-N)5zceNjA`Y`@I4nzib3Qv5)c2)Iq@6=RH%lpD5!y%<0#>vI^ zCo6#&Qn>{KTij9xH8R(j>K7bCkma&g)9?rWKq^DW^;A(Muc z6#(_nhs}~72llsmvN34+^|jQTQ{I|L%dHk^yflaiQsmuY=;Ws}VQzR!e9h)$ig&hf z`tggKSQ_P&iY?X>xfSOaqk2K|xaeE#y=bT8>=cspz{@0+ZlQ0Pq&`Pbe0u)`Fo527 z{Bh~?*Y&cnDZH)ik1znTL)mgY7N-%QCwfny*4NBZ!CWSxVZ5>*3Z zgYUc;%lryw#Xh1IG`z>6fdrDI-w?nI>onTtob&9^EGP-O?d>Cr5CMRu%$~Gz8mhS0 zcy29Bb;(hgpdV^Di3@<-pRaAsO`@@_DQyHM78E`b-Z#zbSDxwkl%W!S5T7QjE!OZx zxHAGx{hyeXlZR~!CNk+gJXYt##^oTHCGi;(NgGy&=Bz+;eaL^1^O%B}+-yGoX8}nT zLfUNDd@~ogRQSh(+(H$>B1GpO+*@g>QLtEa&FywRMEAJP7+a5!+W?5J<#!KVw`CJz z_XbI7Z!?OJS=uzj-M?R7EIfaQ%VpA$SRL)6W0`v`S<}%y^7DO7!42$ChFl9E#pqb*9ib7#B^ zZ#09$GbXRl?}nZw(i}`SMDNPoto>U;@u%hQUD-iLE8Xi67jL`UFlYC0?maZGQ|26g z&mF--zIIB+b=h*`WI-t$apx$_!0O5=#N}m3)4@V_WbRmrO&Mk*=d36^N=uBg7>?x) zM(HBoZr{pjgCIr-2&sq?L~(QFsHBdTB`S$X35uw0ZVIrJ(0P z#nAi0QG=n059*UU9dedyw=b`(J1s1r1J69J@l(e9 z3RhvGo2l-UZFM$!*@ctKIIWFc1ReFXoOnpcKXEGn_vTRxcIxKd_P~?v`wO%((C&+l z4FFF=&^_}hW}b7PW?Ci9O5UsV1tC=#&viVd$i)(;lp;{W5zpzt`_7aHYgq#ZpuVg! z9jEQ42f0k0rcuu2{HXFnC# zK$;__;6Hzbhk#$u*XN;=>Ekpls2E|cMSLE>n@@1g9iid}OFyb#m^8?KZFQi`pD4mnc~3i$L6Kk< zy7`czkH=4dI+{`)x91-?ERroMCxFd5 zZtN^KnR_u)cs$AvVyCPy?rtWuf+#^CPW<&{rGyk6p;#LP}A3Avm4VSz0N zG<%VgOe`?(JnPCln%?mmz;b2Y74lAuHHgks-d zhnv{gTn+t^Wq+ThgQ*|D>mCSFDPcgYo_;9h;UCd&pgyYaocB0D;eE0zr>8`Q; zRw!KJEyB^Xft?A196VwDS|+?7*ladd`GqC@+0TK}?aeo$3>`UeA#5aJs7nzUQVo&C zQ{?>Yk5ZVX09y<1L|t&EqVvb)k+}}x0K4szrWaS$pUkjMExTARn|96wu=oxr1Pm8j z-=QxQmzJ*_nOsy^oqz68;k-|N*-m(hhdAxEt?MGuuj^u0!JFQI#EEnr#Vt)%6}TEb z&6j%$MSA9YX+P&dN&-w(kwpqFUF3W~;9l+bW5>Q=j+5*H3F2vgAE|$jZV1=x+nGDS zE9^dven5wFQ+P|K=+kQDFa4G%PK_%&q?wxu)c)ROSHD;N&ESg*@ZVuS zHCtp1DyfW7lU+4g;wo2#_4FBUoN_G2#aN=RT6^mPPfkNI7Y_QxY}(`f?r_r@RySH7 zfwmPULPfmkmaSM6)m77r_UUeM1}=RDBJ@op=@fc&FMh*p3X6C}K}y|ucEVH{j`Z8< zIZTLfQe3}?;nV~ri0#W)!t-1W?A8?_c1rCF^M*sG<=e4k9`Br=QRw2LuXp(k-RvK2 z)tt!YbiHnD`ywVoKR$-Sj;`*NXX~*eQQG1gRy+|)#}eU&K+?~N;yf3*=x?CjHcqYh zreswFH2=teO&fjT>oBc;nan&rMHFa?|Yj|yw zj1&^=1GOuj!H=h*iRj4A1b2K4lrIK1?mW{is}`+!%Z`Usg1D$$jYp8Gz?LH9F$)xA zk1HD6?Fu*fJr6N92Th>dBebaeVrjF`+*;*f=|?MbD<7`%eIvSB=_o}|kM-|dtSqZ| z5mAl>cFf0b1eBR?i7XH-X@LUj(z}#rtAj;NeuoNK=|%m*RYGzW%W0k2N2JslY)C*2j}I00jPj_DnlcL?lHhWn=;G5Q zXhgyLAD40Ha#DJ(guzLv$0ox#qBud+PB3(ge7-{&XCa|varZ@I`C!qGQf$Ka)iO;n zcMI(EiE_iVJU`DuwBKxwHD^GJI+##H#j9H~3P2s=Hx;jgia5t<4udoc#pAOw&@OKO zM%rJo1ZYpJYF$2WZs(T(L<9B%Rz?s%CpWn@R8j8{>d_SFvc5vn&VBj33S~~E++mcQ zXFrvEtj*^`Y~9TK@0q*v1e=j)`>_}jYzmwGsI*@ysqm|vXx~o|luP(UN2R%9m`1;Y zmD(?9&yZZ|Nr< z%Ox?_MQ_u3`M$`oN!K9x#U67-h~as0J+My-&fW>N*eltwT$Bf2u*HgbRv_&!7je5` zR>rqCs9LwEBuE!1vTL>s?lyT7*<{xE zYfM33j*x%mY5iwo@`Y<4yZS$nyR_9SkejhZ9(AQd8C%&<;^doO7G7zjAuJdmiJ&9~ z5=HjbzF1*{>^(HfKPqQUVSIHVNl4m9@O=W*w$KR(qAumnMMK`^p4|?dY`JCfjb_D{ z#S{l9mfAtawiDan@*@-7uNJt`nrNGp5r-gLD`lre*y2=#toW2j z{{_NNuyQO;Z}a`z2ob!-DGJVefZQx?0_W{29VEN<;zt4d;Czog_gVHsIZ#%=bnkuq z+QZp5bM#xH;nP3V$q#w|awmsEGe=u1>IJ)eD| zA-88GczuYBhXg>rr@kKsyviz45)?r?J=|4@gm|7@G~R_xT8V|*s%3<;^*Bt!SZbWFo*k@R-E!&$@|v$Y^760 zyv3genlSOq{%L-dR=}TZ71wML&-CddP{i=nSPNi;SCBYI?(~fT$r7!tB*E4f74uJK zV}goT8v_tQuw;VwNLc4GxdfH6bs1*$DYYkrv)Fj6JlBMCjwRYvi zRXVC9!-bH_?EyKgXgz}T0<2+;L%D}7Y5eSG;(*KFps6k{1_?hp$^o*=bK3qMa5ubw zbi2loM>ey$|3GqiPCJb}Ld71NkKN?NYpeA(D)a+@x6 z|5M7TGA2aafWDoJA9`s-{hHllo_wVxctW=qRBmQWjsfVLP7b14nmxkT6wl3pDu<@L z^LCb3EtZpkn!;%*7c=6l58hQPUbYfB!#tjRt~%|jKn;jHf`;F(I>Wb8mG^lZyW<}+KXe#Q3oU@3SG(kOqq2QVL% z7hjA~f1h)run`{^lydac@H`wRXa-)O^lfdGSM${WM^WRi%oBi9Nj{!3%wmycdrD~I zRQ+f#xnYU#j_f*){Ed(Z3Zt%j?@K==t?S4~E1}JRQt8FtM-GxktFkWA71_b2Eee$?kwG`wzVz96T>#jgST%zX4(qdngXtYt*a~ z>h~_!gwpjDjV)XsLdKh2FObURT{r3_X=IL>drH8D$*m^+lZ*J8EX`&bi8B^gf1q~P z-_Y{#$*3@e0k`R$qo4VLSJO94?MJwMZ0oMI7D!~n(1Zp=?V^oK+%^?lJVP{ow zF@GNxF&Z)P8r(2Q4ri}6M|+aQBBlb+L&mn;C%F+q54lc4iflw&>#K?PqcU8bmO@_UV^|O1I2OKk$E)Kd)h3bH zmH=dez@{Ey?+_PYEdk>@zdO*ts6jVC*~$VHaT<@F`TSgW06kMJ=xr!D`l|a)%)yU2 zD*5qffEPpA?n<{m7U8v8Ipkn z^rw`RSss~t<5BV_uts7@XegR6@g60vZ-*T->RK$>)T&#@ncJzyXtzJ z@<&CjmwuL{a^~2AJ5Zj@91KNbgs#r+@|y)}!_=E32_Xesx^IcwO-B;!@^?vwY+UZ{ zM0Nq*>&w2;P2mb}RAH&Hcj{el)#sswf#)lS)wPD&m8{$k|0SgDr-Xd+FW)W|6urka z&9K(%2);(T(c{jisiQ!n9>1BSv}H&OG>4$be5IXZ=xig;Igc`m-&cEq$lNbv{g zn7N6naZ=V3p zp0$B4ILTl5CR$HNfiIPE5I0^Xo@z-ch1%ULLGKJlUp*MQ6>FNfVs%Np>&*yRmuNhx z7`c&6m|N1h0~$0KRt(KfIzYuact)JPa(cC*KawuEZT)lXT|%Ttoa&sfFq9Qxrbke5(q^=yCIuz^{2NBNK}y4dZ$VE z5aF8bIH9p{rA`OA%w`YvgxW>7BNN(Qa*FPK8&E_=E6Zi4mB&>!J@n%FwFb29TOBBw zfIN+?%*;$jegsVqY&3~uN7Y}0upfb$taPf(b9hnL_4^acoTE5Xl?o={kR^TQVf*dy z(%&RbzMVo?NnPh*F|vr!6Xd({sJ-F67k<m_(~1D1kd1R3hzS2SD<@00;QhZgguU{D9wCP)m=-jXTOkTMk@A>`3XA^i|b0f6(O|yX;}0nI;8KYY<$bo6u!$A zMX68MSp;>W`{2XzIfy-YBztg$(mpxpti1N{>rbIJleO99laDfs{QnqIc%cG|$YcX9 z5Su^ADGvb+J+W&)F@Ghhw`lqC)%&fvM!)5)#__;{p12Es&tUf&tjwlWXo5O);3&?O=9=>J+x+Bs7@0Gaq|HiNCD-kKXHVqGvG@!HDs9|R^DEmw-BvB zWKLVMBGMW#94*TbmbVqFy05m?+88t!0WQ1`NUDy&JpF9WgUhZDabgLSz9?CjlhW;e*;Uax{g!BB;pifLml-s0e6Teofmg+7aF@r$nQY+< zy)MR-&B|J1p;rW*tclc0=3s$BZrP*i-RI#;cPMu1NlOKJt_@h|Q_-TjUZFp&j*NR5 z!(EQnKN1;aDh`iV8}vje5kAQ z64El2aCbX<;o zmIbz;!5ixL+-hq+n|!>E7bsA zjLA;?_d+03wiYSsu!dL8RKz8AXC0gW7r%|^TVNgB-f&_L^ds1LF?5BUbQq?2bG5dv z4yZ^K7A&kC5K}78jv(+C->C>@_W%>7#)fLZ#{BPYb`9kDuarsv2NxJ=)i&ghn0PwM zN!5D%gkh<{riQQbVzj=5XsMTRHnJzZE#7Pd@h5M?IBk^S4*FSIv3{#(5R*InR^Q)% zW)buIHmHHO>$*&%c1jTme-97t{3st1ne+X6Kvc>T$UP(j5IYkdu5)1s#}GYBKb{m;l^UP4Ag}*oFgDMMB!X<@2Td0bJ0D6-^xL`t*#7}K zpiDyH%C9dayM`siHE%>)7=1#s^jfdpZTZt5)8P}k7oO8CcF2k5Hb@K`B%opMTl8J7 zu2A2eBe(~khTgkNc2AiB_mG2SFVm8tIP}N51kuZQZRyoWf8?!LmHBL2mCeab&z~M- z>WAv&py%5ZJ|Qa6&T^*7$jTJo_pMHH0*U~#r7~s_qk6yG#mu(vW|XsoU;beOyBF-LW6%c&x#*iZ`VS+9 zlbg0G8ZU>32{vP0R=!}*tzY{sV%>`C@Mo&tw8p#z{d{pa^$Q%Npc%3-;sTp#R7$IDj`J6)-<%#>(GgdR0&NoZ?54{6*|r zDVgR0bejBS?Mq>5DdAeyE)zRPtvA>8RLu`*tJ+yQ3eHcjML=G5#l<5N9cDs{> zi{8omqV|p_h2}xdx{t05n0T+V&)ZB;^R{X=f^1G$-XUk}BGb&cV;$^4Qj`L@oib?k z-+RqHTDa!d?u+FjmiTd%6ATD4z^BIwT%<*hQspwx(inlR#wBy=7c3tEx_R;~+th>U zZ_wqNL8Tn&MlPprKFrA#W{pkr&;G0*hpSC_GX3UIXRd(OE=ROKbV7A?YO!%cQ`g}B zk;h&P(-!GjHg&Z?*tDD7H_Byqg@|B*r0qdq8em)>ZQ#i(+hdfi7PI2*P5tWgLD`i5rDj2YS$`0T@9gXt zzrva7dxZ9@cdT^18}`66K?R&(a&bPOllRo)g%}rxXs~ti5u>x4Bw<4p>u#)!TZ?m) z);@Mb$dvv51?}hVuyYc==G~_vrv9@=wl;?2SGn? z`j4(W>CWg2FYsxncxw$2vqq%YE@7+QM6~n+jfkXcr*7GuWuO5^6FVM=W&)8CnV6ux z^nqw@ISY+u9a(CL)@t<=cdp;b^wItClgyvvo*Nj9DraHsSlONHUMI~hq+Xz%KWP@C z^R-U`fQ8?C`%nM#Q93!Kb4uUpybWA%OC=;^Sp1s%<#KhyrV9i~{|rr|>Ox)=DXy$^ z*~Lzj6_ZIazubfg59*W3iPXRSq`8jc z(r-X#H+dSBtFQKyse{J;YxN@$D0KpF)e{ZYJTwQT1_$ZPOEpO7R+2c&)y-yRp@kbe zk(OQzw04Z+MrfzKC?=p4`ltt9=O$>vl{I)`j;02;IJ(yE5%4L_9|SaMy^?<2r2C9j^jk8g}pVp^?fvd7<{U zJ*OJ5BRJhR&YByLxk9I|9}A#meea$8%b$!Qnl8#-V}nCyI78}c0txBz|Y#}S@Tl3=zXAZPJeR$ z+ah$owHYxY2u&4EpFg<^QK??CnE%37Bxk!T-rG^(qPOPk*u?kogi`x$*9)rSO;}{- z335?Jsb?Z!(SX`jvs`p0=v7Vi4{uH5vAVLJ4#li4+$T9^i4e215Y((9`YX)aYz#70 z*Bm6kE3J$U6=q?xE!4eP*a|2Gf>13+B|UI%7Qlu=SA^+%kc?E*XgStAkk%kb+>bls8D>lzklg}Fdq!)Ud_6(c~bZqGv&81ziUVi@U@V*aoNiZ zp{#W6#mj?a-HU$xwC~C-6`1iWR7>Y}i0AF`w)wIj2L`*sRU1Sp>{b=oOQY16fG%z$ z%j8pXJ4n1S$j^=ib=yJ8&jPf?adLHghKsr0b-ee0s)OeEemFbMc@v04IV;Wd0Dg0@ zF7#1^)Id|E0&Yi9_Stg`Pb6w6nwzVD;>74?HUY9=zMq^4?NLf_Sy%d)DvP#?GNwPATflc zQ%R`yl^WzN4@}%YyZZr)=C8O0+3W<4is*h@><2d2@iGo=t6m3lIkL@JK+`Z>zLq_p zAK2OJ-XYp!h#6Mm%pk zF8VwOTDgdxWRhbG^;4R>zAC<#3`)B3RIBmMb22MqR=qZp2V1Gf{Oz}H`>?N?ucXQ^ zVQ%Wf5DpYGITCgZbh)|XO-+PZM~UynN+N>URUQrvb~zeX$?@ z4#+q();Ume@vO&7yPcjT#!?v(zZ9~@mc;=Esj(?FY7;zx2d^{OyW?Nk{#QRnvQf8? zu4WgUw*M#;;Zd$CoNrIRDgH>Y{fbxXYt(xB#1i|(29MVxC-I(PF=^USjZ}u4>oazh zaUG4*0Wc8FD=y4K+fdMw`haa4m}hfwwr9nP07H@_6BMVg#|Pnk2s@uHSBdU8+ly6U zPRFC9hCtI%Wr2O|R0473%j4%N7vw?x#V2DUuI4)46}%H>J|NLXCa8%{j#v&I2d}dD zVy65$ncp=G2VY`F-_#{3GP(L|$~DJ8_eYh5;jDF&X%d7eL^+nb!Tc~ev|nb%;lXKXl!Ba0inrD@{+mIH;sNZ#%jRyEh7Xf z!?f0y%iFTzdcB_w5kBh@%;y|eo(o+wRx}=_61F#7td|-z%tJ`Znk9>4<@(wn<||*W z`hRx((#1E~z=H;OO!uC6&GF5uWCCz+Mwf8a_rI%z<<3URyl-oDpa1QRl@F{*ZzMIs!V6m@7aOd8dyU&3Kt-PF22i%zc{p{AorE7xL)Ro+gJAVCK zS>!a)XBol^)2_a*cu@>o3%nSp>X95s)!Un?z#>s`d3mWx?m6HfChw~ZV;kUdV&JNC z&?p!%ORro!yXed3Lo5EzR9reK@67c7UU{K=``Ajid_H4v<>Edo;L3Tgw7J#k*FYmI z3ts=tsErG<&3KrRWee<;0he8bmsXVQSp1av@SUcc{rA>aT{v{n|J&!O#%nFCa^B80 zt^9ZN{Pz<6U)g!K?AwwGe_!PPF_nL@jIO-IGqJOEUjpAb);nGWPG{U)2ux%QljPRC zp1}CuA9&cuie;LQ<72+BdCk!V-0Nut9MXr>IQb{+d&^3W?CPrm4U{^ETrSb;c>}Cs zcxUvjS$z0Kz+8=uVtfV0QF zR#--uaB4=+bO(93`^13j2O8uq9Jt8$h`E!w{r!tqYdINy=!9T&nvw(vd gsAp}R{?ESmg$~EI`dv=I!?+kcUHx3vIVCg!0Nqd5RR910 literal 0 HcmV?d00001 diff --git a/api/public/schema/openapi.yaml b/api/public/schema/openapi.yaml index f761187c..ebd2308c 100644 --- a/api/public/schema/openapi.yaml +++ b/api/public/schema/openapi.yaml @@ -1810,16 +1810,16 @@ components: description: description: 'An short description of this Calendar' type: string - schedules: - description: 'Schedules that belong to this Calendar' - type: array - items: - $ref: '#/components/schemas/Schedule-read' events: description: 'Events that belong to this Calendar' type: array items: $ref: '#/components/schemas/Event-read' + schedules: + description: 'Schedules that belong to this Calendar' + type: array + items: + $ref: '#/components/schemas/Schedule-read' required: - name Calendar-write: @@ -1834,16 +1834,16 @@ components: description: description: 'An short description of this Calendar' type: string - schedules: - description: 'Schedules that belong to this Calendar' - type: array - items: - $ref: '#/components/schemas/Schedule-write' events: description: 'Events that belong to this Calendar' type: array items: $ref: '#/components/schemas/Event-write' + schedules: + description: 'Schedules that belong to this Calendar' + type: array + items: + $ref: '#/components/schemas/Schedule-write' Event-read: type: object description: 'An event happening at a certain time and location, such as a concert, lecture, meeting or festival.' @@ -1860,11 +1860,11 @@ components: description: description: 'An short description of this Event' type: string - startDateTime: + startDate: description: 'The moment this event starts' type: string format: date-time - endDateTime: + endDate: description: 'The moment this event ends' type: string format: date-time @@ -1879,8 +1879,8 @@ components: $ref: '#/components/schemas/Calendar-read' required: - name - - startDateTime - - endDateTime + - startDate + - endDate - location Event-write: type: object @@ -1889,8 +1889,8 @@ components: url: 'https://schema.org/Event' required: - name - - startDateTime - - endDateTime + - startDate + - endDate - location properties: name: @@ -1899,11 +1899,11 @@ components: description: description: 'An short description of this Event' type: string - startDateTime: + startDate: description: 'The moment this event starts' type: string format: date-time - endDateTime: + endDate: description: 'The moment this event ends' type: string format: date-time @@ -2016,8 +2016,8 @@ definitions: description: example: 'This is the best Calendar ever' maxLength: 2550 - schedules: [] events: [] + schedules: [] required: - name Calendar-write: @@ -2028,8 +2028,8 @@ definitions: description: example: 'This is the best Calendar ever' maxLength: 2550 - schedules: [] events: [] + schedules: [] required: - name Event-read: @@ -2043,9 +2043,10 @@ definitions: description: example: 'This is the best Event ever' maxLength: 2550 - startDateTime: + startDate: example: 30-11-2019 - endDateTime: [] + endDate: + example: 3-11-2019 location: example: 'Dam 1, Amsterdam' maxLength: 255 @@ -2053,8 +2054,8 @@ definitions: calendar: [] required: - name - - startDateTime - - endDateTime + - startDate + - endDate Event-write: properties: name: @@ -2063,9 +2064,10 @@ definitions: description: example: 'This is the best Event ever' maxLength: 2550 - startDateTime: + startDate: example: 30-11-2019 - endDateTime: [] + endDate: + example: 3-11-2019 location: example: 'Dam 1, Amsterdam' maxLength: 255 @@ -2073,8 +2075,8 @@ definitions: calendar: [] required: - name - - startDateTime - - endDateTime + - startDate + - endDate Schedule-read: properties: id: @@ -2092,7 +2094,8 @@ definitions: example: '1' byMonthDay: example: '1' - exceptDates: [] + exceptDates: + example: '30' repeatCount: example: '10' repeatFrequency: @@ -2116,7 +2119,8 @@ definitions: example: '1' byMonthDay: example: '1' - exceptDates: [] + exceptDates: + example: '30' repeatCount: example: '10' repeatFrequency: diff --git a/api/src/Entity/Calendar.php b/api/src/Entity/Calendar.php index 89e76cf5..b5781e95 100644 --- a/api/src/Entity/Calendar.php +++ b/api/src/Entity/Calendar.php @@ -62,22 +62,22 @@ class Calendar private $description; /** - * @var array Schedules that belong to this Calendar + * @var array Events that belong to this Calendar * * @MaxDepth(1) * @Groups({"read","write"}) - * @ORM\OneToMany(targetEntity="App\Entity\Schedule", mappedBy="calendar", orphanRemoval=true) + * @ORM\OneToMany(targetEntity="App\Entity\Event", mappedBy="calendar", orphanRemoval=true) */ - private $schedules; + private $events; /** - * @var array Events that belong to this Calendar + * @var array Schedules that belong to this Calendar * * @MaxDepth(1) * @Groups({"read","write"}) - * @ORM\OneToMany(targetEntity="App\Entity\Event", mappedBy="calendar", orphanRemoval=true) + * @ORM\OneToMany(targetEntity="App\Entity\Schedule", mappedBy="calendar", orphanRemoval=true) */ - private $events; + private $schedules; public function __construct() { @@ -115,30 +115,30 @@ public function setDescription(?string $description): self } /** - * @return Collection|Schedule[] + * @return Collection|Event[] */ - public function getSchedules(): Collection + public function getEvents(): Collection { - return $this->schedules; + return $this->events; } - public function addSchedule(Schedule $schedule): self + public function addEvent(Event $event): self { - if (!$this->schedules->contains($schedule)) { - $this->schedules[] = $schedule; - $schedule->setCalendar($this); + if (!$this->events->contains($event)) { + $this->events[] = $event; + $event->setCalendar($this); } return $this; } - public function removeSchedule(Schedule $schedule): self + public function removeEvent(Event $event): self { - if ($this->schedules->contains($schedule)) { - $this->schedules->removeElement($schedule); + if ($this->events->contains($event)) { + $this->events->removeElement($event); // set the owning side to null (unless already changed) - if ($schedule->getCalendar() === $this) { - $schedule->setCalendar(null); + if ($event->getCalendar() === $this) { + $event->setCalendar(null); } } @@ -146,33 +146,35 @@ public function removeSchedule(Schedule $schedule): self } /** - * @return Collection|Event[] + * @return Collection|Schedule[] */ - public function getEvents(): Collection + public function getSchedules(): Collection { - return $this->events; + return $this->schedules; } - public function addEvent(Event $event): self + public function addSchedule(Schedule $schedule): self { - if (!$this->events->contains($event)) { - $this->events[] = $event; - $event->setCalendar($this); + if (!$this->schedules->contains($schedule)) { + $this->schedules[] = $schedule; + $schedule->setCalendar($this); } return $this; } - public function removeEvent(Event $event): self + public function removeSchedule(Schedule $schedule): self { - if ($this->events->contains($event)) { - $this->events->removeElement($event); + if ($this->schedules->contains($schedule)) { + $this->schedules->removeElement($schedule); // set the owning side to null (unless already changed) - if ($event->getCalendar() === $this) { - $event->setCalendar(null); + if ($schedule->getCalendar() === $this) { + $schedule->setCalendar(null); } } return $this; } + + } diff --git a/api/src/Entity/Event.php b/api/src/Entity/Event.php index d2dee9c0..a23fbfd9 100644 --- a/api/src/Entity/Event.php +++ b/api/src/Entity/Event.php @@ -69,17 +69,18 @@ class Event * @Groups({"read","write"}) * @ORM\Column(type="datetime") */ - private $startDateTime; + private $startDate; /** * @var Datetime The moment this event ends + * @example 3-11-2019 * * @Assert\DateTime * @Assert\NotNull * @Groups({"read","write"}) * @ORM\Column(type="datetime") */ - private $endDateTime; + private $endDate; /** * @var string The location of this event @@ -142,26 +143,26 @@ public function setDescription(?string $description): self return $this; } - public function getStartDateTime(): ?\DateTimeInterface + public function getStartDate(): ?\DateTimeInterface { - return $this->startDateTime; + return $this->startDate; } - public function setStartDateTime(\DateTimeInterface $startDateTime): self + public function setStartDate(\DateTimeInterface $startDate): self { - $this->startDateTime = $startDateTime; + $this->startDate = $startDate; return $this; } - public function getEndDateTime(): ?\DateTimeInterface + public function getEndDate(): ?\DateTimeInterface { - return $this->endDateTime; + return $this->endDate; } - public function setEndDateTime(\DateTimeInterface $endDateTime): self + public function setEndDate(\DateTimeInterface $endDate): self { - $this->endDateTime = $endDateTime; + $this->endDate = $endDate; return $this; } diff --git a/api/src/Entity/Schedule.php b/api/src/Entity/Schedule.php index 577bda58..06ef95bf 100644 --- a/api/src/Entity/Schedule.php +++ b/api/src/Entity/Schedule.php @@ -115,6 +115,7 @@ class Schedule /** * @var string Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31. + * @example 30 * * @Groups({"read","write"}) * @ORM\Column(type="array", nullable=true) From f810704729bb3cc4bbdc392aa06acafa51948ee1 Mon Sep 17 00:00:00 2001 From: Ruben van der Linde Date: Fri, 13 Dec 2019 06:58:01 +0000 Subject: [PATCH 41/46] Apply fixes from StyleCI --- api/src/Entity/Calendar.php | 6 +++--- api/src/Entity/Event.php | 7 ++++++- api/src/Entity/Schedule.php | 10 +++++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/api/src/Entity/Calendar.php b/api/src/Entity/Calendar.php index b5781e95..0b465a13 100644 --- a/api/src/Entity/Calendar.php +++ b/api/src/Entity/Calendar.php @@ -2,7 +2,6 @@ namespace App\Entity; -use ApiPlatform\Core\Annotation\ApiProperty; use ApiPlatform\Core\Annotation\ApiResource; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; @@ -25,6 +24,7 @@ class Calendar { /** * @var UuidInterface The UUID identifier of this resource + * * @example e2984465-190a-4562-829e-a8cca81aa35d * * @Assert\Uuid @@ -38,6 +38,7 @@ class Calendar /** * @var string The name of this Calendar + * * @example My Calendar * * @Assert\NotNull @@ -51,6 +52,7 @@ class Calendar /** * @var string An short description of this Calendar + * * @example This is the best Calendar ever * * @Assert\Length( @@ -175,6 +177,4 @@ public function removeSchedule(Schedule $schedule): self return $this; } - - } diff --git a/api/src/Entity/Event.php b/api/src/Entity/Event.php index a23fbfd9..8f2470b3 100644 --- a/api/src/Entity/Event.php +++ b/api/src/Entity/Event.php @@ -2,7 +2,6 @@ namespace App\Entity; -use ApiPlatform\Core\Annotation\ApiProperty; use ApiPlatform\Core\Annotation\ApiResource; use Doctrine\ORM\Mapping as ORM; use Ramsey\Uuid\UuidInterface; @@ -24,6 +23,7 @@ class Event { /** * @var UuidInterface The UUID identifier of this resource + * * @example e2984465-190a-4562-829e-a8cca81aa35d * * @Assert\Uuid @@ -37,6 +37,7 @@ class Event /** * @var string The name of this RequestType + * * @example My RequestType * * @Assert\NotNull @@ -50,6 +51,7 @@ class Event /** * @var string An short description of this Event + * * @example This is the best Event ever * * @Assert\Length( @@ -62,6 +64,7 @@ class Event /** * @var Datetime The moment this event starts + * * @example 30-11-2019 * * @Assert\DateTime @@ -73,6 +76,7 @@ class Event /** * @var Datetime The moment this event ends + * * @example 3-11-2019 * * @Assert\DateTime @@ -84,6 +88,7 @@ class Event /** * @var string The location of this event + * * @example Dam 1, Amsterdam * * @Assert\Length( diff --git a/api/src/Entity/Schedule.php b/api/src/Entity/Schedule.php index 06ef95bf..abc1abbe 100644 --- a/api/src/Entity/Schedule.php +++ b/api/src/Entity/Schedule.php @@ -2,7 +2,6 @@ namespace App\Entity; -use ApiPlatform\Core\Annotation\ApiProperty; use ApiPlatform\Core\Annotation\ApiResource; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; @@ -26,6 +25,7 @@ class Schedule { /** * @var UuidInterface The UUID identifier of this resource + * * @example e2984465-190a-4562-829e-a8cca81aa35d * * @Assert\Uuid @@ -39,6 +39,7 @@ class Schedule /** * @var string The name of this Schedule + * * @example My Schedule * * @Assert\NotNull @@ -52,6 +53,7 @@ class Schedule /** * @var string An short description of this Schedule + * * @example This is the best Schedule ever * * @Assert\Length( @@ -64,6 +66,7 @@ class Schedule /** * @var string Defines the day(s) of the week on which a recurring Event takes place. Sunday is both 0 and 7. + * * @example 1 * * @Assert\Range( @@ -78,6 +81,7 @@ class Schedule /** * @var string Defines the month(s) of the year on which a recurring Event takes place. Specified as an Integer between 1-12. January is 1. + * * @example 1 * * @Assert\Range( @@ -92,6 +96,7 @@ class Schedule /** * @var string Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31. + * * @example 1 * * @Assert\Range( @@ -115,6 +120,7 @@ class Schedule /** * @var string Defines the day(s) of the month on which a recurring Event takes place. Specified as an Integer between 1-31. + * * @example 30 * * @Groups({"read","write"}) @@ -124,6 +130,7 @@ class Schedule /** * @var int Defines the number of times a recurring Event will take place + * * @example 10 * * @Assert\Type("integer") @@ -134,6 +141,7 @@ class Schedule /** * @var string Defines the frequency at which Events will occur according to a schedule Schedule. The intervals between events should be defined as a [Duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) of time. + * * @example PT1M * * @Assert\Length( From a65d57d8ae09fe3284942ac8f9868fcf9fd4530b Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 16 Dec 2019 11:05:59 +0100 Subject: [PATCH 42/46] Data model .png rename --- Agendaservice.png => agendaservice.png | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename Agendaservice.png => agendaservice.png (100%) diff --git a/Agendaservice.png b/agendaservice.png similarity index 100% rename from Agendaservice.png rename to agendaservice.png From 1d0e960fc5eb9af8cca72a16d72badaebd3c79bd Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 16 Dec 2019 16:51:09 +0100 Subject: [PATCH 43/46] Entities and properties added. Journal and Todo added, Event improved. --- api/src/Entity/Calendar.php | 30 +- api/src/Entity/Event.php | 398 ++++++++++++++- api/src/Entity/Journal.php | 501 +++++++++++++++++++ api/src/Entity/Todo.php | 608 +++++++++++++++++++++++ api/src/Repository/JournalRepository.php | 50 ++ api/src/Repository/TodoRepository.php | 50 ++ 6 files changed, 1624 insertions(+), 13 deletions(-) create mode 100644 api/src/Entity/Journal.php create mode 100644 api/src/Entity/Todo.php create mode 100644 api/src/Repository/JournalRepository.php create mode 100644 api/src/Repository/TodoRepository.php diff --git a/api/src/Entity/Calendar.php b/api/src/Entity/Calendar.php index 0b465a13..26631300 100644 --- a/api/src/Entity/Calendar.php +++ b/api/src/Entity/Calendar.php @@ -38,7 +38,6 @@ class Calendar /** * @var string The name of this Calendar - * * @example My Calendar * * @Assert\NotNull @@ -51,8 +50,7 @@ class Calendar private $name; /** - * @var string An short description of this Calendar - * + * @var string An short description of this Calenda * @example This is the best Calendar ever * * @Assert\Length( @@ -81,6 +79,20 @@ class Calendar */ private $schedules; + /** + * @var string The time zone of this calendar + * @example CET + * + * @Assert\NotNull + * @Assert\Length( + * min = 3, + * max = 5 + * ) + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=5) + */ + private $timeZone; + public function __construct() { $this->schedules = new ArrayCollection(); @@ -177,4 +189,16 @@ public function removeSchedule(Schedule $schedule): self return $this; } + + public function getTimeZone(): ?string + { + return $this->timeZone; + } + + public function setTimeZone(string $timeZone): self + { + $this->timeZone = $timeZone; + + return $this; + } } diff --git a/api/src/Entity/Event.php b/api/src/Entity/Event.php index 8f2470b3..e37986a2 100644 --- a/api/src/Entity/Event.php +++ b/api/src/Entity/Event.php @@ -13,7 +13,7 @@ * An event happening at a certain time and location, such as a concert, lecture, meeting or festival. * * @ApiResource( - * iri="https://schema.org/Event", + * iri="https://schema.org/Event", * normalizationContext={"groups"={"read"}, "enable_max_depth"=true}, * denormalizationContext={"groups"={"write"}, "enable_max_depth"=true} * ) @@ -37,7 +37,6 @@ class Event /** * @var string The name of this RequestType - * * @example My RequestType * * @Assert\NotNull @@ -51,7 +50,6 @@ class Event /** * @var string An short description of this Event - * * @example This is the best Event ever * * @Assert\Length( @@ -63,9 +61,8 @@ class Event private $description; /** - * @var Datetime The moment this event starts - * - * @example 30-11-2019 + * @var DateTime The moment this event starts + * @example 30-11-2019 15:00:00 * * @Assert\DateTime * @Assert\NotNull @@ -76,8 +73,7 @@ class Event /** * @var Datetime The moment this event ends - * - * @example 3-11-2019 + * @example 3-11-2019 20:00:00 * * @Assert\DateTime * @Assert\NotNull @@ -88,7 +84,6 @@ class Event /** * @var string The location of this event - * * @example Dam 1, Amsterdam * * @Assert\Length( @@ -101,7 +96,7 @@ class Event private $location; /** - * @var string An optional Schedule to wich this event belongs + * @var string An optional Schedule to which this event belongs * * @MaxDepth(1) * @Groups({"read","write"}) @@ -119,6 +114,196 @@ class Event */ private $calendar; + /** + * @var string The security class of this event. + * @example PUBLIC + * + * @Assert\Length( + * max = 255 + * ) + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=255) + */ + private $class; + + /** + * @todo Automated ? + * @var string The creation in datetime of this event. + * @example 16-12-2019 15:08:26 + * + * @Assert\DateTime + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="datetime") + */ + private $created; + + /** + * @var string The coordinates of this event. + * @example 81.15147,10.36374,42.26 + * + * @Assert\Length( + * max = 255 + * ) + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=255) + */ + private $geo; + + /** + * @todo Automated ? + * @var datetime The last modification of this event in datetime. + * @example 16-12-2019 15:14:34 + * + * @Assert\DateTime + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="datetime") + */ + private $lastMod; + + /** + * @var string The organiser of this event linked to with an url. + * @example conduction.nl + * + * @Assert\Length( + * max = 255 + * ) + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=255) + */ + private $organiser; + + /** + * @var string The status of this evemt. + * @example Confirmed + * + * @Assert\Length( + * max = 255 + * ) + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=255) + */ + private $status; + + /** + * @var string The summary of this event. + * @example This is the best event ever. + * + * @Assert\Length( + * max = 255 + * ) + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=255) + */ + private $summary; + + /** + * @var string The determination if the event should block the duration of the event for participants. + * @example Transparent + * + * @Assert\Length( + * max = 255 + * ) + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=255) + */ + private $transp; + + /** + * @todo Automated ? + * @var string The url of this event. + * @example conduction.nl + * + * @Assert\Length( + * max = 255 + * ) + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="string", length=255) + */ + private $url; + + /** + * @todo Automated ? + * @var string The duration of this event. + * @example 2 + * + * @Assert\Type("int") + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="integer") + */ + private $duration; + + + /** + * @todo Automated ? + * @var int The version number of this event. + * @example 1.0 + * + * @Assert\Type("int") + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="integer") + */ + private $seq; + /** + * @var int The priority of this event ranging from 1 (high) to 9 (low). + * @example 1 + * + * @Assert\Type("int") + * @Assert\NotBlank + * @Groups({"read","write"}) + * @ORM\Column(type="integer") + */ + private $priority; + + /** + * @var array The urls of the attendees of this event. + * @example https://con.example.com, https://con.example2.com + * + * @Assert\Url + * @Groups({"read","write"}) + * @ORM\Column(type="array") + */ + private $attendees = []; + + /** + * @var array The urls of the attachments of this event. + * @example https://example.org, https://example2.org + * + * @Assert\Url + * @Groups({"read","write"}) + * @ORM\Column(type="array") + */ + private $attachments = []; + + /** + * @var array The urls of the catergories this event belongs to. + * @example https://con.example.com, https://con.example2.com + * + * @Assert\Url + * @Groups({"read","write"}) + * @ORM\Column(type="array") + */ + private $categories = []; + + /** + * @var array The urls of the comments that belong to this event. + * @example https://con.example.com, https://con.example2.com + * + * @Assert\Url + * @Groups({"read","write"}) + * @ORM\Column(type="array") + */ + private $comments = []; + public function getId(): ?string { return $this->id; @@ -207,4 +392,197 @@ public function setCalendar(?Calendar $calendar): self return $this; } + + public function getClass(): ?string + { + return $this->class; + } + + public function setClass(string $class): self + { + $this->class = $class; + + return $this; + } + + public function getCreated(): ?string + { + return $this->created; + } + + public function setCreated(string $created): self + { + $this->created = $created; + + return $this; + } + + public function getGeo(): ?string + { + return $this->geo; + } + + public function setGeo(string $geo): self + { + $this->geo = $geo; + + return $this; + } + + public function getLastMod(): ?string + { + return $this->lastMod; + } + + public function setLastMod(string $lastMod): self + { + $this->lastMod = $lastMod; + + return $this; + } + + public function getOrganiser(): ?string + { + return $this->organiser; + } + + public function setOrganiser(string $organiser): self + { + $this->organiser = $organiser; + + return $this; + } + + public function getStatus(): ?string + { + return $this->status; + } + + public function setStatus(string $status): self + { + $this->status = $status; + + return $this; + } + + public function getSummary(): ?string + { + return $this->summary; + } + + public function setSummary(string $summary): self + { + $this->summary = $summary; + + return $this; + } + + public function getTransp(): ?string + { + return $this->transp; + } + + public function setTransp(string $transp): self + { + $this->transp = $transp; + + return $this; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(string $url): self + { + $this->url = $url; + + return $this; + } + + public function getDuration(): ?int + { + return $this->duration; + } + + public function setDuration(int $duration): self + { + $this->duration = $duration; + + return $this; + } + + public function getSeq(): ?int + { + return $this->seq; + } + + public function setSeq(int $seq): self + { + $this->seq = $seq; + + return $this; + } + + public function getPriority(): ?int + { + return $this->priority; + } + + public function setPriority(int $priority): self + { + $this->priority = $priority; + + return $this; + } + + public function getAttendees(): ?array + { + return $this->attendees; + } + + public function setAttendees(array $attendees): self + { + $this->attendees = $attendees; + + return $this; + } + + + public function getAttachments(): ?array + { + return $this->attachments; + } + + public function setAttach(array $attachments): self + { + $this->attachments = $attachments; + + return $this; + } + + public function getCategories(): ?array + { + return $this->categories; + } + + public function setCategories(array $categories): self + { + $this->categories = $categories; + + return $this; + } + + public function getComments(): ?array + { + return $this->comments; + } + + public function setComments(array $comments): self + { + $this->comments = $comments; + + return $this; + } } diff --git a/api/src/Entity/Journal.php b/api/src/Entity/Journal.php new file mode 100644 index 00000000..e48394d9 --- /dev/null +++ b/api/src/Entity/Journal.php @@ -0,0 +1,501 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + public function getStartDate(): ?\DateTimeInterface + { + return $this->startDate; + } + + public function setStartDate(\DateTimeInterface $startDate): self + { + $this->startDate = $startDate; + + return $this; + } + + public function getEndDate(): ?\DateTimeInterface + { + return $this->endDate; + } + + public function setEndDate(\DateTimeInterface $endDate): self + { + $this->endDate = $endDate; + + return $this; + } + + public function getCalendar(): ?Calendar + { + return $this->calendar; + } + + public function setCalendar(?Calendar $calendar): self + { + $this->calendar = $calendar; + + return $this; + } + + public function getClass(): ?string + { + return $this->class; + } + + public function setClass(string $class): self + { + $this->class = $class; + + return $this; + } + + public function getCreated(): ?string + { + return $this->created; + } + + public function setCreated(string $created): self + { + $this->created = $created; + + return $this; + } + + public function getLastMod(): ?string + { + return $this->lastMod; + } + + public function setLastMod(string $lastMod): self + { + $this->lastMod = $lastMod; + + return $this; + } + + public function getOrganiser(): ?string + { + return $this->organiser; + } + + public function setOrganiser(string $organiser): self + { + $this->organiser = $organiser; + + return $this; + } + + public function getStatus(): ?string + { + return $this->status; + } + + public function setStatus(string $status): self + { + $this->status = $status; + + return $this; + } + + public function getSummary(): ?string + { + return $this->summary; + } + + public function setSummary(string $summary): self + { + $this->summary = $summary; + + return $this; + } + + public function getTransp(): ?string + { + return $this->transp; + } + + public function setTransp(string $transp): self + { + $this->transp = $transp; + + return $this; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(string $url): self + { + $this->url = $url; + + return $this; + } + + public function getDuration(): ?int + { + return $this->duration; + } + + public function setDuration(int $duration): self + { + $this->duration = $duration; + + return $this; + } + + public function getSeq(): ?int + { + return $this->seq; + } + + public function setSeq(int $seq): self + { + $this->seq = $seq; + + return $this; + } + + public function getPriority(): ?int + { + return $this->priority; + } + + public function setPriority(int $priority): self + { + $this->priority = $priority; + + return $this; + } + + public function getAttendees(): ?array + { + return $this->attendees; + } + + public function setAttendees(array $attendees): self + { + $this->attendees = $attendees; + + return $this; + } + + + public function getAttachments(): ?array + { + return $this->attachments; + } + + public function setAttach(array $attachments): self + { + $this->attachments = $attachments; + + return $this; + } + + public function getCategories(): ?array + { + return $this->categories; + } + + public function setCategories(array $categories): self + { + $this->categories = $categories; + + return $this; + } + + public function getComments(): ?array + { + return $this->comments; + } + + public function setComments(array $comments): self + { + $this->comments = $comments; + + return $this; + } +} diff --git a/api/src/Entity/Todo.php b/api/src/Entity/Todo.php new file mode 100644 index 00000000..1409b052 --- /dev/null +++ b/api/src/Entity/Todo.php @@ -0,0 +1,608 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + public function getStartDate(): ?\DateTimeInterface + { + return $this->startDate; + } + + public function setStartDate(\DateTimeInterface $startDate): self + { + $this->startDate = $startDate; + + return $this; + } + + public function getEndDate(): ?\DateTimeInterface + { + return $this->endDate; + } + + public function setEndDate(\DateTimeInterface $endDate): self + { + $this->endDate = $endDate; + + return $this; + } + + public function getLocation(): ?string + { + return $this->location; + } + + public function setLocation(string $location): self + { + $this->location = $location; + + return $this; + } + + public function getSchedule(): ?Schedule + { + return $this->schedule; + } + + public function setSchedule(?Schedule $schedule): self + { + $this->schedule = $schedule; + + return $this; + } + + public function getCalendar(): ?Calendar + { + return $this->calendar; + } + + public function setCalendar(?Calendar $calendar): self + { + $this->calendar = $calendar; + + return $this; + } + + public function getClass(): ?string + { + return $this->class; + } + + public function setClass(string $class): self + { + $this->class = $class; + + return $this; + } + + public function getCreated(): ?string + { + return $this->created; + } + + public function setCreated(string $created): self + { + $this->created = $created; + + return $this; + } + + public function getGeo(): ?string + { + return $this->geo; + } + + public function setGeo(string $geo): self + { + $this->geo = $geo; + + return $this; + } + + public function getLastMod(): ?string + { + return $this->lastMod; + } + + public function setLastMod(string $lastMod): self + { + $this->lastMod = $lastMod; + + return $this; + } + + public function getOrganiser(): ?string + { + return $this->organiser; + } + + public function setOrganiser(string $organiser): self + { + $this->organiser = $organiser; + + return $this; + } + + public function getStatus(): ?string + { + return $this->status; + } + + public function setStatus(string $status): self + { + $this->status = $status; + + return $this; + } + + public function getSummary(): ?string + { + return $this->summary; + } + + public function setSummary(string $summary): self + { + $this->summary = $summary; + + return $this; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(string $url): self + { + $this->url = $url; + + return $this; + } + + public function getDuration(): ?int + { + return $this->duration; + } + + public function setDuration(int $duration): self + { + $this->duration = $duration; + + return $this; + } + + public function getSeq(): ?int + { + return $this->seq; + } + + public function setSeq(int $seq): self + { + $this->seq = $seq; + + return $this; + } + + public function getPriority(): ?int + { + return $this->priority; + } + + public function setPriority(int $priority): self + { + $this->priority = $priority; + + return $this; + } + + public function getAttendees(): ?array + { + return $this->attendees; + } + + public function setAttendees(array $attendees): self + { + $this->attendees = $attendees; + + return $this; + } + + + public function getAttachments(): ?array + { + return $this->attachments; + } + + public function setAttach(array $attachments): self + { + $this->attachments = $attachments; + + return $this; + } + + public function getCategories(): ?array + { + return $this->categories; + } + + public function setCategories(array $categories): self + { + $this->categories = $categories; + + return $this; + } + + public function getComments(): ?array + { + return $this->comments; + } + + public function setComments(array $comments): self + { + $this->comments = $comments; + + return $this; + } + + public function getCompleted(): ?\DateTimeInterface + { + return $this->completed; + } + + public function setCompleted(\DateTimeInterface $completed): self + { + $this->completed = $completed; + + return $this; + } + + public function getPercentageDone(): ?int + { + return $this->percentageDone; + } + + public function setPercentageDone(int $percentageDone): self + { + $this->percentageDone = $percentageDone; + + return $this; + } +} diff --git a/api/src/Repository/JournalRepository.php b/api/src/Repository/JournalRepository.php new file mode 100644 index 00000000..a31ecea2 --- /dev/null +++ b/api/src/Repository/JournalRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('j') + ->andWhere('j.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('j.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Journal + { + return $this->createQueryBuilder('j') + ->andWhere('j.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/api/src/Repository/TodoRepository.php b/api/src/Repository/TodoRepository.php new file mode 100644 index 00000000..bcf8bdcf --- /dev/null +++ b/api/src/Repository/TodoRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('t') + ->andWhere('t.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('t.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Todo + { + return $this->createQueryBuilder('t') + ->andWhere('t.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} From 7a09b68b2c34b4d6120c623ddf901b74391313ee Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 16 Dec 2019 16:53:00 +0100 Subject: [PATCH 44/46] Uses added to Journal --- api/src/Entity/Journal.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api/src/Entity/Journal.php b/api/src/Entity/Journal.php index e48394d9..d8d1d8a1 100644 --- a/api/src/Entity/Journal.php +++ b/api/src/Entity/Journal.php @@ -4,6 +4,10 @@ use ApiPlatform\Core\Annotation\ApiResource; use Doctrine\ORM\Mapping as ORM; +use Ramsey\Uuid\UuidInterface; +use Symfony\Component\Serializer\Annotation\Groups; +use Symfony\Component\Serializer\Annotation\MaxDepth; +use Symfony\Component\Validator\Constraints as Assert; /** * @ApiResource() From 455a04f6139b6c365a586622e45ae7659534a5f9 Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 16 Dec 2019 16:54:14 +0100 Subject: [PATCH 45/46] Uuid added to Journal --- api/src/Entity/Journal.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/api/src/Entity/Journal.php b/api/src/Entity/Journal.php index d8d1d8a1..cc12c7df 100644 --- a/api/src/Entity/Journal.php +++ b/api/src/Entity/Journal.php @@ -10,15 +10,27 @@ use Symfony\Component\Validator\Constraints as Assert; /** - * @ApiResource() + * A journal from an event. + * + * @ApiResource( + * normalizationContext={"groups"={"read"}, "enable_max_depth"=true}, + * denormalizationContext={"groups"={"write"}, "enable_max_depth"=true} + * ) * @ORM\Entity(repositoryClass="App\Repository\JournalRepository") */ class Journal { /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") + * @var UuidInterface The UUID identifier of this resource + * + * @example e2984465-190a-4562-829e-a8cca81aa35d + * + * @Assert\Uuid + * @Groups({"read"}) + * @ORM\Id + * @ORM\Column(type="uuid", unique=true) + * @ORM\GeneratedValue(strategy="CUSTOM") + * @ORM\CustomIdGenerator(class="Ramsey\Uuid\Doctrine\UuidGenerator") */ private $id; From 87fa086d2de3102b251984d24991b014497bc034 Mon Sep 17 00:00:00 2001 From: Barry Date: Mon, 16 Dec 2019 17:53:37 +0100 Subject: [PATCH 46/46] All relations and annotations added --- api/src/Entity/Alarm.php | 249 +++++++++++++++++ api/src/Entity/Calendar.php | 117 ++++++++ api/src/Entity/Event.php | 162 +++++++++++ api/src/Entity/Freebusy.php | 318 ++++++++++++++++++++++ api/src/Entity/Journal.php | 63 +++-- api/src/Entity/Resource.php | 163 +++++++++++ api/src/Entity/Schedule.php | 78 ++++++ api/src/Entity/Todo.php | 149 +++++++--- api/src/Repository/AlarmRepository.php | 50 ++++ api/src/Repository/FreebusyRepository.php | 50 ++++ api/src/Repository/ResourceRepository.php | 50 ++++ 11 files changed, 1383 insertions(+), 66 deletions(-) create mode 100644 api/src/Entity/Alarm.php create mode 100644 api/src/Entity/Freebusy.php create mode 100644 api/src/Entity/Resource.php create mode 100644 api/src/Repository/AlarmRepository.php create mode 100644 api/src/Repository/FreebusyRepository.php create mode 100644 api/src/Repository/ResourceRepository.php diff --git a/api/src/Entity/Alarm.php b/api/src/Entity/Alarm.php new file mode 100644 index 00000000..6d6a38a9 --- /dev/null +++ b/api/src/Entity/Alarm.php @@ -0,0 +1,249 @@ +id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + public function getSummary(): ?string + { + return $this->summary; + } + + public function setSummary(string $summary): self + { + $this->summary = $summary; + + return $this; + } + + public function getAction(): ?string + { + return $this->action; + } + + public function setAction(string $action): self + { + $this->action = $action; + + return $this; + } + + public function getTrigger(): ?int + { + return $this->trigger; + } + + public function setTrigger(int $trigger): self + { + $this->trigger = $trigger; + + return $this; + } + + public function getDuration(): ?int + { + return $this->duration; + } + + public function setDuration(int $duration): self + { + $this->duration = $duration; + + return $this; + } + + public function getRepeat(): ?int + { + return $this->repeat; + } + + public function setRepeat(int $repeat): self + { + $this->repeat = $repeat; + + return $this; + } + + public function getEvent(): ?Event + { + return $this->event; + } + + public function setEvent(?Event $event): self + { + $this->event = $event; + + return $this; + } + + public function getTodo(): ?Todo + { + return $this->todo; + } + + public function setTodo(?Todo $todo): self + { + $this->todo = $todo; + + return $this; + } +} diff --git a/api/src/Entity/Calendar.php b/api/src/Entity/Calendar.php index 26631300..64482507 100644 --- a/api/src/Entity/Calendar.php +++ b/api/src/Entity/Calendar.php @@ -93,10 +93,34 @@ class Calendar */ private $timeZone; + /** + * @Groups({"read","write"}) + * @ORM\OneToMany(targetEntity="App\Entity\Freebusy", mappedBy="calendar") + * @MaxDepth(1) + */ + private $freebusies; + + /** + * @Groups({"read","write"}) + * @ORM\OneToMany(targetEntity="App\Entity\Journal", mappedBy="calendar") + * @MaxDepth(1) + */ + private $journals; + + /** + * @Groups({"read","write"}) + * @ORM\OneToMany(targetEntity="App\Entity\Todo", mappedBy="calendar") + * @MaxDepth(1) + */ + private $todos; + public function __construct() { $this->schedules = new ArrayCollection(); $this->events = new ArrayCollection(); + $this->freebusies = new ArrayCollection(); + $this->journals = new ArrayCollection(); + $this->todos = new ArrayCollection(); } public function getId(): ?string @@ -201,4 +225,97 @@ public function setTimeZone(string $timeZone): self return $this; } + + /** + * @return Collection|Freebusy[] + */ + public function getFreebusies(): Collection + { + return $this->freebusies; + } + + public function addFreebusy(Freebusy $freebusy): self + { + if (!$this->freebusies->contains($freebusy)) { + $this->freebusies[] = $freebusy; + $freebusy->setCalendar($this); + } + + return $this; + } + + public function removeFreebusy(Freebusy $freebusy): self + { + if ($this->freebusies->contains($freebusy)) { + $this->freebusies->removeElement($freebusy); + // set the owning side to null (unless already changed) + if ($freebusy->getCalendar() === $this) { + $freebusy->setCalendar(null); + } + } + + return $this; + } + + /** + * @return Collection|Journal[] + */ + public function getJournals(): Collection + { + return $this->journals; + } + + public function addJournal(Journal $journal): self + { + if (!$this->journals->contains($journal)) { + $this->journals[] = $journal; + $journal->setCalendar($this); + } + + return $this; + } + + public function removeJournal(Journal $journal): self + { + if ($this->journals->contains($journal)) { + $this->journals->removeElement($journal); + // set the owning side to null (unless already changed) + if ($journal->getCalendar() === $this) { + $journal->setCalendar(null); + } + } + + return $this; + } + + /** + * @return Collection|Todo[] + */ + public function getTodos(): Collection + { + return $this->todos; + } + + public function addTodo(Todo $todo): self + { + if (!$this->todos->contains($todo)) { + $this->todos[] = $todo; + $todo->setCalendar($this); + } + + return $this; + } + + public function removeTodo(Todo $todo): self + { + if ($this->todos->contains($todo)) { + $this->todos->removeElement($todo); + // set the owning side to null (unless already changed) + if ($todo->getCalendar() === $this) { + $todo->setCalendar(null); + } + } + + return $this; + } } diff --git a/api/src/Entity/Event.php b/api/src/Entity/Event.php index e37986a2..6d426562 100644 --- a/api/src/Entity/Event.php +++ b/api/src/Entity/Event.php @@ -3,6 +3,8 @@ namespace App\Entity; use ApiPlatform\Core\Annotation\ApiResource; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Ramsey\Uuid\UuidInterface; use Symfony\Component\Serializer\Annotation\Groups; @@ -241,6 +243,16 @@ class Event */ private $duration; + /** + * @var string Url of this person + * @example https://con.example.org + * + * @Assert\NotNull + * @Assert\Url + * @Groups({"read","write"}) + * @ORM\Column(type="string") + */ + private $contact; /** * @todo Automated ? @@ -304,6 +316,41 @@ class Event */ private $comments = []; + /** + * @Groups({"read","write"}) + * @ORM\ManyToMany(targetEntity="App\Entity\Event") + * @MaxDepth(1) + */ + private $related; + + /** + * @Groups({"read","write"}) + * @ORM\ManyToMany(targetEntity="App\Entity\Resource", mappedBy="events") + * @MaxDepth(1) + */ + private $resources; + + /** + * @Groups({"read","write"}) + * @ORM\OneToMany(targetEntity="App\Entity\Alarm", mappedBy="event") + * @MaxDepth(1) + */ + private $alarms; + + /** + * @Groups({"read","write"}) + * @ORM\OneToOne(targetEntity="App\Entity\Journal", mappedBy="event", cascade={"persist", "remove"}) + * @MaxDepth(1) + */ + private $journal; + + public function __construct() + { + $this->related = new ArrayCollection(); + $this->resources = new ArrayCollection(); + $this->alarms = new ArrayCollection(); + } + public function getId(): ?string { return $this->id; @@ -513,6 +560,18 @@ public function setDuration(int $duration): self return $this; } + public function getContact(): ?string + { + return $this->contact; + } + + public function setContact(string $contact): ?string + { + $this->contact = $contact; + + return $this; + } + public function getSeq(): ?int { return $this->seq; @@ -585,4 +644,107 @@ public function setComments(array $comments): self return $this; } + + /** + * @return Collection|self[] + */ + public function getRelated(): Collection + { + return $this->related; + } + + public function addRelated(self $related): self + { + if (!$this->related->contains($related)) { + $this->related[] = $related; + } + + return $this; + } + + public function removeRelated(self $related): self + { + if ($this->related->contains($related)) { + $this->related->removeElement($related); + } + + return $this; + } + + /** + * @return Collection|Resource[] + */ + public function getResources(): Collection + { + return $this->resources; + } + + public function addResource(Resource $resource): self + { + if (!$this->resources->contains($resource)) { + $this->resources[] = $resource; + $resource->addEvent($this); + } + + return $this; + } + + public function removeResource(Resource $resource): self + { + if ($this->resources->contains($resource)) { + $this->resources->removeElement($resource); + $resource->removeEvent($this); + } + + return $this; + } + + /** + * @return Collection|Alarm[] + */ + public function getAlarms(): Collection + { + return $this->alarms; + } + + public function addAlarm(Alarm $alarm): self + { + if (!$this->alarms->contains($alarm)) { + $this->alarms[] = $alarm; + $alarm->setEvent($this); + } + + return $this; + } + + public function removeAlarm(Alarm $alarm): self + { + if ($this->alarms->contains($alarm)) { + $this->alarms->removeElement($alarm); + // set the owning side to null (unless already changed) + if ($alarm->getEvent() === $this) { + $alarm->setEvent(null); + } + } + + return $this; + } + + public function getJournal(): ?Journal + { + return $this->journal; + } + + public function setJournal(?Journal $journal): self + { + $this->journal = $journal; + + // set (or unset) the owning side of the relation if necessary + $newEvent = $journal === null ? null : $this; + if ($newEvent !== $journal->getEvent()) { + $journal->setEvent($newEvent); + } + + return $this; + } } diff --git a/api/src/Entity/Freebusy.php b/api/src/Entity/Freebusy.php new file mode 100644 index 00000000..ee44ef12 --- /dev/null +++ b/api/src/Entity/Freebusy.php @@ -0,0 +1,318 @@ +id; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(string $url): self + { + $this->url = $url; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + public function getAttendee(): ?string + { + return $this->attendee; + } + + public function setAttendee(string $attendee): self + { + $this->attendee = $attendee; + + return $this; + } + + public function getComments(): ?array + { + return $this->comments; + } + + public function setComments(array $comments): self + { + $this->comments = $comments; + + return $this; + } + + public function getContact(): ?string + { + return $this->contact; + } + + public function setContact(string $contact): ?string + { + $this->contact = $contact; + + return $this; + } + + public function getStartDate(): ?\DateTimeInterface + { + return $this->startDate; + } + + public function setStartDate(\DateTimeInterface $startDate): self + { + $this->startDate = $startDate; + + return $this; + } + + public function getEndDate(): ?\DateTimeInterface + { + return $this->endDate; + } + + public function setEndDate(\DateTimeInterface $endDate): self + { + $this->endDate = $endDate; + + return $this; + } + + public function getDuration(): ?int + { + return $this->duration; + } + + public function setDuration(int $duration): self + { + $this->duration = $duration; + + return $this; + } + + public function getOrganiser(): ?string + { + return $this->organiser; + } + + public function setOrganiser(string $organiser): self + { + $this->organiser = $organiser; + + return $this; + } + + public function getFreebusy(): ?string + { + return $this->freebusy; + } + + public function setFreebusy(string $freebusy): self + { + $this->freebusy = $freebusy; + + return $this; + } + + public function getCalendar(): ?Calendar + { + return $this->calendar; + } + + public function setCalendar(?Calendar $calendar): self + { + $this->calendar = $calendar; + + return $this; + } + + public function getSchedule(): ?Schedule + { + return $this->schedule; + } + + public function setSchedule(?Schedule $schedule): self + { + $this->schedule = $schedule; + + return $this; + } +} diff --git a/api/src/Entity/Journal.php b/api/src/Entity/Journal.php index cc12c7df..d4185859 100644 --- a/api/src/Entity/Journal.php +++ b/api/src/Entity/Journal.php @@ -11,7 +11,7 @@ /** * A journal from an event. - * + * * @ApiResource( * normalizationContext={"groups"={"read"}, "enable_max_depth"=true}, * denormalizationContext={"groups"={"write"}, "enable_max_depth"=true} @@ -81,16 +81,6 @@ class Journal */ private $endDate; - /** - * @var string The Calendar to wich this event belongs - * - * @MaxDepth(1) - * @Groups({"read","write"}) - * @ORM\ManyToOne(targetEntity="App\Entity\Calendar", inversedBy="events") - * @ORM\JoinColumn(nullable=false) - */ - private $calendar; - /** * @var string The security class of this event. * @example PUBLIC @@ -269,6 +259,21 @@ class Journal */ private $comments = []; + /** + * @Groups({"read","write"}) + * @ORM\ManyToOne(targetEntity="App\Entity\Calendar", inversedBy="journals") + * @ORM\JoinColumn(nullable=false) + * @MaxDepth(1) + */ + private $calendar; + + /** + * @Groups({"read","write"}) + * @ORM\OneToOne(targetEntity="App\Entity\Event", inversedBy="journal", cascade={"persist", "remove"}) + * @MaxDepth(1) + */ + private $event; + public function getId(): ?int { return $this->id; @@ -322,18 +327,6 @@ public function setEndDate(\DateTimeInterface $endDate): self return $this; } - public function getCalendar(): ?Calendar - { - return $this->calendar; - } - - public function setCalendar(?Calendar $calendar): self - { - $this->calendar = $calendar; - - return $this; - } - public function getClass(): ?string { return $this->class; @@ -514,4 +507,28 @@ public function setComments(array $comments): self return $this; } + + public function getCalendar(): ?Calendar + { + return $this->calendar; + } + + public function setCalendar(?Calendar $calendar): self + { + $this->calendar = $calendar; + + return $this; + } + + public function getEvent(): ?Event + { + return $this->event; + } + + public function setEvent(?Event $event): self + { + $this->event = $event; + + return $this; + } } diff --git a/api/src/Entity/Resource.php b/api/src/Entity/Resource.php new file mode 100644 index 00000000..faba9c4c --- /dev/null +++ b/api/src/Entity/Resource.php @@ -0,0 +1,163 @@ +events = new ArrayCollection(); + $this->todos = new ArrayCollection(); + } + + public function getId(): ?string + { + return $this->id; + } + + public function getName(): ?string + { + return $this->name; + } + + public function setName(string $name): self + { + $this->name = $name; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(?string $description): self + { + $this->description = $description; + + return $this; + } + + /** + * @return Collection|Event[] + */ + public function getEvents(): Collection + { + return $this->events; + } + + public function addEvent(Event $event): self + { + if (!$this->events->contains($event)) { + $this->events[] = $event; + } + + return $this; + } + + public function removeEvent(Event $event): self + { + if ($this->events->contains($event)) { + $this->events->removeElement($event); + } + + return $this; + } + + /** + * @return Collection|Todo[] + */ + public function getTodos(): Collection + { + return $this->todos; + } + + public function addTodo(Todo $todo): self + { + if (!$this->todos->contains($todo)) { + $this->todos[] = $todo; + } + + return $this; + } + + public function removeTodo(Todo $todo): self + { + if ($this->todos->contains($todo)) { + $this->todos->removeElement($todo); + } + + return $this; + } +} diff --git a/api/src/Entity/Schedule.php b/api/src/Entity/Schedule.php index abc1abbe..470f5c7f 100644 --- a/api/src/Entity/Schedule.php +++ b/api/src/Entity/Schedule.php @@ -162,9 +162,25 @@ class Schedule */ private $calendar; + /** + * @Groups({"read","write"}) + * @ORM\OneToMany(targetEntity="App\Entity\Freebusy", mappedBy="schedule") + * @MaxDepth(1) + */ + private $freebusies; + + /** + * @Groups({"read","write"}) + * @ORM\OneToMany(targetEntity="App\Entity\Todo", mappedBy="schedule") + * @MaxDepth(1) + */ + private $todos; + public function __construct() { $this->events = new ArrayCollection(); + $this->freebusies = new ArrayCollection(); + $this->todos = new ArrayCollection(); } public function getId(): ?string @@ -310,4 +326,66 @@ public function setCalendar(?Calendar $calendar): self return $this; } + + /** + * @return Collection|Freebusy[] + */ + public function getFreebusies(): Collection + { + return $this->freebusies; + } + + public function addFreebusy(Freebusy $freebusy): self + { + if (!$this->freebusies->contains($freebusy)) { + $this->freebusies[] = $freebusy; + $freebusy->setSchedule($this); + } + + return $this; + } + + public function removeFreebusy(Freebusy $freebusy): self + { + if ($this->freebusies->contains($freebusy)) { + $this->freebusies->removeElement($freebusy); + // set the owning side to null (unless already changed) + if ($freebusy->getSchedule() === $this) { + $freebusy->setSchedule(null); + } + } + + return $this; + } + + /** + * @return Collection|Todo[] + */ + public function getTodos(): Collection + { + return $this->todos; + } + + public function addTodo(Todo $todo): self + { + if (!$this->todos->contains($todo)) { + $this->todos[] = $todo; + $todo->setSchedule($this); + } + + return $this; + } + + public function removeTodo(Todo $todo): self + { + if ($this->todos->contains($todo)) { + $this->todos->removeElement($todo); + // set the owning side to null (unless already changed) + if ($todo->getSchedule() === $this) { + $todo->setSchedule(null); + } + } + + return $this; + } } diff --git a/api/src/Entity/Todo.php b/api/src/Entity/Todo.php index 1409b052..4e19b8b9 100644 --- a/api/src/Entity/Todo.php +++ b/api/src/Entity/Todo.php @@ -3,6 +3,8 @@ namespace App\Entity; use ApiPlatform\Core\Annotation\ApiResource; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Ramsey\Uuid\UuidInterface; use Symfony\Component\Serializer\Annotation\Groups; @@ -94,25 +96,6 @@ class Todo */ private $location; - /** - * @var string An optional Schedule to wich this event belongs - * - * @MaxDepth(1) - * @Groups({"read","write"}) - * @ORM\ManyToOne(targetEntity="App\Entity\Schedule", inversedBy="events") - */ - private $schedule; - - /** - * @var string The Calendar to wich this event belongs - * - * @MaxDepth(1) - * @Groups({"read","write"}) - * @ORM\ManyToOne(targetEntity="App\Entity\Calendar", inversedBy="events") - * @ORM\JoinColumn(nullable=false) - */ - private $calendar; - /** * @var string The security class of this event. * @example PUBLIC @@ -312,6 +295,40 @@ class Todo */ private $percentageDone; + /** + * @Groups({"read","write"}) + * @ORM\ManyToMany(targetEntity="App\Entity\Resource", mappedBy="todos") + * @MaxDepth(1) + */ + private $resources; + + /** + * @Groups({"read","write"}) + * @ORM\OneToOne(targetEntity="App\Entity\Alarm", mappedBy="todo", cascade={"persist", "remove"}) + * @MaxDepth(1) + */ + private $alarm; + + /** + * @Groups({"read","write"}) + * @ORM\ManyToOne(targetEntity="App\Entity\Calendar", inversedBy="todos") + * @ORM\JoinColumn(nullable=false) + * @MaxDepth(1) + */ + private $calendar; + + /** + * @Groups({"read","write"}) + * @ORM\ManyToOne(targetEntity="App\Entity\Schedule", inversedBy="todos") + * @MaxDepth(1) + */ + private $schedule; + + public function __construct() + { + $this->resources = new ArrayCollection(); + } + public function getId(): ?string { return $this->id; @@ -377,30 +394,6 @@ public function setLocation(string $location): self return $this; } - public function getSchedule(): ?Schedule - { - return $this->schedule; - } - - public function setSchedule(?Schedule $schedule): self - { - $this->schedule = $schedule; - - return $this; - } - - public function getCalendar(): ?Calendar - { - return $this->calendar; - } - - public function setCalendar(?Calendar $calendar): self - { - $this->calendar = $calendar; - - return $this; - } - public function getClass(): ?string { return $this->class; @@ -605,4 +598,74 @@ public function setPercentageDone(int $percentageDone): self return $this; } + + /** + * @return Collection|Resource[] + */ + public function getResources(): Collection + { + return $this->resources; + } + + public function addResource(Resource $resource): self + { + if (!$this->resources->contains($resource)) { + $this->resources[] = $resource; + $resource->addTodo($this); + } + + return $this; + } + + public function removeResource(Resource $resource): self + { + if ($this->resources->contains($resource)) { + $this->resources->removeElement($resource); + $resource->removeTodo($this); + } + + return $this; + } + + public function getAlarm(): ?Alarm + { + return $this->alarm; + } + + public function setAlarm(?Alarm $alarm): self + { + $this->alarm = $alarm; + + // set (or unset) the owning side of the relation if necessary + $newTodo = $alarm === null ? null : $this; + if ($newTodo !== $alarm->getTodo()) { + $alarm->setTodo($newTodo); + } + + return $this; + } + + public function getCalendar(): ?Calendar + { + return $this->calendar; + } + + public function setCalendar(?Calendar $calendar): self + { + $this->calendar = $calendar; + + return $this; + } + + public function getSchedule(): ?Schedule + { + return $this->schedule; + } + + public function setSchedule(?Schedule $schedule): self + { + $this->schedule = $schedule; + + return $this; + } } diff --git a/api/src/Repository/AlarmRepository.php b/api/src/Repository/AlarmRepository.php new file mode 100644 index 00000000..bd6eed61 --- /dev/null +++ b/api/src/Repository/AlarmRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('a') + ->andWhere('a.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('a.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Alarm + { + return $this->createQueryBuilder('a') + ->andWhere('a.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/api/src/Repository/FreebusyRepository.php b/api/src/Repository/FreebusyRepository.php new file mode 100644 index 00000000..e9b208db --- /dev/null +++ b/api/src/Repository/FreebusyRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('f') + ->andWhere('f.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('f.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Freebusy + { + return $this->createQueryBuilder('f') + ->andWhere('f.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +} diff --git a/api/src/Repository/ResourceRepository.php b/api/src/Repository/ResourceRepository.php new file mode 100644 index 00000000..4c348155 --- /dev/null +++ b/api/src/Repository/ResourceRepository.php @@ -0,0 +1,50 @@ +createQueryBuilder('r') + ->andWhere('r.exampleField = :val') + ->setParameter('val', $value) + ->orderBy('r.id', 'ASC') + ->setMaxResults(10) + ->getQuery() + ->getResult() + ; + } + */ + + /* + public function findOneBySomeField($value): ?Resource + { + return $this->createQueryBuilder('r') + ->andWhere('r.exampleField = :val') + ->setParameter('val', $value) + ->getQuery() + ->getOneOrNullResult() + ; + } + */ +}