diff --git a/.env b/.env
index e5e3834a..0bff0679 100644
--- a/.env
+++ b/.env
@@ -26,14 +26,34 @@ APP_DESCRIPTION='This component provides a products and services catalogue that
# 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$|^(.+\.)?vng\.cloud$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.dev$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost
+
+##################################################
+# Orgization details
+##################################################
+
+# The following details describe your organisations and are used for both certificate creation, nlx (if active) and common-ground.dev
+
+ORGANIZATION_NAME=Conduction
+ORGANIZATION_EMAIL_ADDRESS=info@conduction.nl
+ORGANIZATION_COUNTRY_NAME=Netherlands
+ORGANIZATION_STATE=Noord-Holland
+ORGANIZATION_LOCALITY=Amsterdam
+ORGANIZATION_UNIT_NAME=Common-Ground
##################################################
# Documentation settings
##################################################
+# The primary domain for this API @depracticed
APP_DOMAIN=conduction.nl
+APP_DOMAINS=["conduction.nl","huwelijksplanner.online"]
+# he domains on wich you want to provide this component, the first wil be used as primary (or common in cert-manger terms)
+# If set to true wil provide the component on an {APP_NAME}.{APP_DOMAIN} basis for production enviroment, and {APP_NAME}.{APP_ENV}.{APP_DOMAIN} basis for other enviroments. Wil skipp the {APP_NAME}. on both if set to false
+APP_USE_NAME_AS_SUBDOMAIN=true
+# The demo enviroment for this component @depracticed
APP_DEMO=pdc.zaakonline.nl
+# he Repository for this component
APP_REPRO=https://github.com/ConductionNL/productenendienstencatalogus
##################################################
@@ -42,6 +62,7 @@ APP_REPRO=https://github.com/ConductionNL/productenendienstencatalogus
CONTAINER_REGISTRY_BASE=docker.io/conduction
CONTAINER_PROJECT_NAME=pdc
+# The repository for the primary (php) container of this project
CONTAINER_REPRO=https://hub.docker.com/repository/docker/conduction/pdc-php
##################################################
@@ -49,7 +70,7 @@ CONTAINER_REPRO=https://hub.docker.com/repository/docker/conduction/pdc-php
##################################################
NOTIFICATION_ENABLED=falsedxfddxf
-NOTIFICATION_PROVIDER=sasd
+NOTIFICATION_PROVIDER=sasdasd
NOTIFICATION_ENABLED_AUTHORIZATION=sasd
##################################################
diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/dockerimage.yml
index 249261e8..96e87bea 100644
--- a/.github/workflows/dockerimage.yml
+++ b/.github/workflows/dockerimage.yml
@@ -63,6 +63,10 @@ jobs:
run: docker-compose logs
- name: Security Checks
run: docker-compose exec -T php composer req sensiolabs/security-checker
+ - name: Database Update
+ run: docker-compose exec -T php bin/console doctrine:schema:update --force
+ - name: Database Check
+ run: docker-compose exec -T php bin/console doctrine:schema:validate
- name: Chores
run: docker-compose down
- name: Login to DockerHub Registry
@@ -94,7 +98,7 @@ jobs:
if: (contains( github.ref, 'master' ) || contains( github.ref, 'staging' ) || contains( github.ref, 'development' )) && steps.kubeconfig.outputs.success == 'true'
run: helm upgrade $APP_NAME-$APP_ENV ./api/helm --kubeconfig="kubeconfig.yaml" --namespace=$APP_ENV --set settings.env=$APP_ENV,settings.debug=1
- name: Install through helm
- if: failure()
+ if: failure() && (contains( github.ref, 'master' ) || contains( github.ref, 'staging' ) || contains( github.ref, 'development' )) && steps.kubeconfig.outputs.success == 'true'
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' && success()
diff --git a/DESIGN.md b/DESIGN.md
deleted file mode 100644
index acfdad1e..00000000
--- a/DESIGN.md
+++ /dev/null
@@ -1,330 +0,0 @@
-# Design Considerations as Proposal
-
-Welcome, you are currently viewing the design decisions for the proto component. The proto component aims to provide a framework for the quick development of production apis for the commonground project.
-
-*Index*
-- [The European factor](#the-european-factor)
-- [On standards and standardisation](#on-standards-and-standardization)
-- [NL API Strategie](#nl-api-strategie)
-
-*Design Choices*
-- [NLX](#nlx)
-- [English](#english)
-- [Fields](#fields)
-- [Search](#search)
-- [Queries](#queries)
-- [Extending](#extending)
-- [Time travel](#timetravel)
-- [Archivation](#archivation)
-- [Audit trail](#audittrail)
-- [Health checks](#healthchecks)
-- [Notifications](#notifications)
-- [Authentication](#authentication)
-- [Authorization](#authorization)
-- [Ordering](#ordering)
-- [Translations](#translations)
-- [Errors](#errors)
-- [Arrays](#arrays)
-- [Filtering](#filtering)
-
-*Implementation choices*
-- [Api Versioning](#api-versioning)
-- [Environments and name spacing](#environments-and-namespacing)
-- [Domain Build-up and routing](#domain-build-up-and-routing)
-- [Container Setup](#container-setup)
-
-
-The European factor
--------
-The proto-component isn't just a Dutch Component, it is in essence a Dutch translation of European components, nowhere is this more obvious than in the core code. Our component is based on [API Platform](https://api-platform.com/) an API specific version of the symfony framework. This framework is build by the lovely people of [Les Tilleuls](https://les-tilleuls.coop/en) and is build with support of the European Commission trough the [EU-FOSSA Hackathon](https://ec.europa.eu/info/news/first-eu-fossa-hackathon-it-happened-2019-may-03_en) and Digital Ocean trough [Hacktoberfest](https://hacktoberfest.digitalocean.com/).
-
-But it doesn't just end there. The [varnish container](https://hub.docker.com/r/eeacms/varnish/) that we use to speed up the API response is build and maintained by [EEA]() (The European Environment Agency) and the development team at conduction itself is attached to the [Odyssey program](https://www.odyssey.org/) and originated from the [startupinresidence](https://startupinresidence.com/) program.
-
-So you could say that both change and a European perspective is in our blood.
-
-On standards and standardization
--------
-The specific goal of the proto component (which this current code base is a version of) is to provide a common architecture for common ground components. As such the common ground principles are leading in design choices, and within those principles international compliancy and technological invocation is deemed most important. **We do not want to make concessions to the current infrastructure.** As such the component might differ on [NL API Strategie](https://docs.geostandaarden.nl/api/API-Strategie), [NORA](https://www.noraonline.nl/wiki/Standaarden), [vng.cloud](https://zaakgerichtwerken.vng.cloud/themas/index) and or other standards if they are deemed incompatible or out of line with (inter)national standards and or good practices.
-
-Unfortunately (inter)national standards can be conflicting. We therefore prioritize standards on several grounds
-
-- International is put before local
-- Standards carried by a standard organization (like ISO, W3C etc) at put before floating standards (like RFC's) wichs are put before industry standards, good practices and so on.
-
-So if for instance a **local** standard is out of line with an **international** good practice we follow the international good practice.
-
-### Commonground specific standards
-
-This component was designed in line with the [NL API Strategie](https://docs.geostandaarden.nl/api/API-Strategie), [NORA](https://www.noraonline.nl/wiki/Standaarden), [vng.cloud](https://zaakgerichtwerken.vng.cloud/themas/index), [commonground principles](https://vng.nl/onderwerpenindex/bestuur/samen-organiseren-2019/common-ground).
-
-## NL API Strategie
-
-The [NL API Strategie](https://docs.geostandaarden.nl/api/API-Strategie) takes a special place in this component, it is designed as a set of guidelines for API's for the Dutch landscape. As such we follow it as close as possible. It dos however contains inconsistencies with both international standards and good practices. On those items we do not follow the norm but consider it our duty to try to change the norm.
-
-** We implement **
-
-api-01, api-02, api-03, api-05, api-06, api-10, api-11, api-12, api-13,api-14, api-16, api-18, api-19, api-20, api-21, api-22, api-23, api-24, api-25, api-26, api-27, api-28, api-29, api-30, api-33, api-34, api-35, api-42
-
-** We want to implement **
-- [api-14](https://docs.geostandaarden.nl/api/API-Strategie/#api-14) Use OAuth 2.0 for authorization
-
-** We do not implement **
-
-- [api-04](https://docs.geostandaarden.nl/api/API-Strategie/#api-04) Define interfaces in Dutch unless there is an official English glossary (see [english](#english))
-- [api-09](https://docs.geostandaarden.nl/api/API-Strategie/#api-09) Implement custom representation if supported (see [fields](#fields))
-- [api-17](https://docs.geostandaarden.nl/api/API-Strategie/#api-17) Publish documentation in Dutch unless there is existing documentation in English or there is an official English glossary (see [english](#english))
-- [api-31](https://docs.geostandaarden.nl/api/API-Strategie/#api-31) Use the query parameter sorteer to sort (see [ordering](#ordering))
-- [api-32](https://docs.geostandaarden.nl/api/API-Strategie/#api-32) Use the query parameter zoek for full-text search (see [search](#search))
-- [api-36](https://docs.geostandaarden.nl/api/API-Strategie/#api-36) Provide a POST endpoint for GEO queries (see [queries](#queries))
-- [api-37](https://docs.geostandaarden.nl/api/API-Strategie/#api-37) Support mixed queries at POST endpoints available (see [queries](#queries))
-- [api-38](https://docs.geostandaarden.nl/api/API-Strategie/#api-38) Put results of a global spatial query in the relevant geometric context (see [queries](#queries))
-
-
-** We doubt or haven’t made a choice yet about**
-
-- [api-15](https://docs.geostandaarden.nl/api/API-Strategie/#api-15) Use PKI overheid certificates for access-restricted or purpose-limited API authentication
-- [api-39](https://docs.geostandaarden.nl/api/API-Strategie/#api-39) Use ETRS89 as the preferred coordinate reference system (CRS)
-- [api-40](https://docs.geostandaarden.nl/api/API-Strategie/#api-40) Pass the coordinate reference system (CRS) of the request and the response in the headers
-- [api-41](https://docs.geostandaarden.nl/api/API-Strategie/#api-41) Use content negotiation to serve different CRS
-
-NLX
--------
-We implement the [NLX system](https://docs.nlx.io/understanding-the-basics/introduction/) as part of the basic commonground infrastructure, as such nlx headers are used in the internal logging.
-The following X-NLX headers have been implemented for that reason `X-NLX-Logrecord-ID`,`X-NLX-Request-Process-Id`,`X-NLX-Request-Data-Elements` and `X-NLX-Request-Data-Subject`, these are tied to the internal audit trail (see audit trail for more information), and `X-Audit-Toelichting` (from the ZGW APIs) is implemented as `X-Audit-Clarification`. We do not use other NLX headers since they (conform to the [NLX schema](https://docs.nlx.io/reference-information/transaction-log-headers/)) wil not reach the provider.
-
-We strongly discourage the use of the `X-NLX-Request-Data-Subject` header as it might allow private data (such as BSNs) to show up in logging.
-
-Please note that the use of nlx is optional. The component can be used without NLX. In that case set `X-NLX-Logrecord-ID` to false and provide (the normaly ignored) fields `X-NLX-Requester-User-Id`, `X-NLX-Request-Application-Id`, `X-NLX-Request-Subject-Identifier`, `X-NLX-Requester-Claims` and `X-NLX-Request-User` as if you are making an NLX call. This provides the API with enough credentials to make an complete audit trail. It also provides an easy implementation route to NLX since the only thing that would need to be changed at a later time is making you call to an nlx outway instead of the API directly.
-
-English
--------
-The [NL API Standard](https://geonovum.github.io/KP-APIs/#api-04-define-interfaces-in-dutch-unless-there-is-an-official-english-glossary) describes that there is a preference for Dutch in API documentation.
-
-> Define resources and the underlying entities, fields and so on (the information model ad the external interface) in Dutch. English is allowed in case there is an official English glossary.
-
-We view this as a breach with good coding practice and international coding standards, all documentation and code is therefore supplied in English. We do however provide translation (or i18n) support.
-
-Fields
--------
-A part of the [haal centraal](https://raw.githubusercontent.com/VNG-Realisatie/Haal-Centraal-BRP-bevragen/master/api-specificatie/Bevraging-Ingeschreven-Persoon/openapi.yaml) the concept of field limitations has been introduced its general purpose being to allow an application to limit the returned fields to prevent the unnecessary transportation of (private) data. In the [NL API Strategie](https://github.com/VNG-Realisatie/Haal-Centraal-BRP-bevragen/blob/master/features/fields.feature) this has been implemented as a parameter consisting of comma separated values. However the normal web standard for optional lists (conform w3c form standards) is an array.
-
-Search
--------
-As part of [api-32](https://docs.geostandaarden.nl/api/API-Strategie/#api-32) a `zoeken` query has been introduced that can handle wildcards. This breaks best practice, first of allest practice is a `search` query parameter (see also the nodes on [English](#english)). Secondly wildcards are a sql concept, not a webconcept, they are also a rather old concept severely limiting the search options provided. Instead the [regular expression standard](https://en.wikipedia.org/wiki/Regular_expression) should be used.
-
-__solution__
-We implement a `search` query parameter on resource collections, that filters with regex.
-
-Queries
--------
-In several examples of the nl api strategie we see query parameters being attached to post requests. This is unusual in the sence that sending query strings along with a post is considered bad practice (because query parameters end up as part of an url and are therefore logged by servers). But it is technically possible folowing RFC 3986. The real pain is that in the NL api-stratgie the POST requests seems to be used to search, ot in other words GET data. This is where compliance with HTTP (1.1) breaks.
-
-__solution__
-We do not implement a query endpoint on post requests.
-
-Api Versioning
--------
-As per [landelijke API-strategie.](https://geonovum.github.io/KP-APIs/#versioning) we provide/ask major versions in the endpoint and minor versions in header, for this the `API-Version` is used (instead of the `api-version` header used in haal centraal)
-
-__solution__
-We implement both endpoint and header versioning
-
-Extending
--------
-A part of the [haal centraal](https://raw.githubusercontent.com/VNG-Realisatie/Haal-Centraal-BRP-bevragen/master/api-specificatie/Bevraging-Ingeschreven-Perso on/openapi.yaml) the concept of extending has been introduced, its general purpose being to allow the inclusion of sub resources at an api level thereby preventing unnecessary API calls. In the [NL API Strategie](https://github.com/VNG-Realisatie/Haal-Centraal-BRP-bevragen/blob/master/features/expand.feature) this has been implemented as a parameter consisting of comma separated values. However the normal web standard for optional lists (conform w3c form standards) is an array.
-
-__solution__
-The extend parameter has been implemented as an array
-
-Archivation
--------
-There is a need (by law) for archivation, meaning that we should only keep resources for a fixed amount of time and delete them thereafter. In line with the extending and fields principle whereby we only want resource properties that we need when we needed, it is deemed good practice make a sub resource of the archivation properties. For the archivation properties the [zgw](https://zaken-api.vng.cloud/api/v1/schema/#operation/zaak_list) is followed and translated to englisch.
-
-
-```json
-{
- "id": "e2984465-190a-4562-829e-a8cca81aa35d",
- "nomination": "destroy",
- "action_date": "2019-11-25T07:26:54Z",
- "status": "to_be_archived",
-}
-```
-
-This gives us an interesting thought, according to [NL API Strategie](https://docs.geostandaarden.nl/api/API-Strategie/#api-10-implement-operations-that-do-not-fit-the-crud-model-as-sub-resources) sub resources should have their own endpoint. Therefore we could use a archive sub of a different resource for archivation rules e.g. /zaken/{uuid}/archivation for a verzoek. This in itself leads credence to the thought that archivation should have its own central crud api.
-
-
-Audittrail
--------
-For audittrail we use the base mechanism as provided by [vng.cloud](https://zaakgerichtwerken.vng.cloud/themas/achtergronddocumentatie/audit-trail), we do however diver on some key point,
-- Personal data should never be part of a log, therefore only the user id with the client should be logged (instead of the name)
-- Besides an endpoint per resource there should be a general enpoint to search all audit trials of a component
-- [Time travel](#timetravel) in combination with objects versioning makes the return of complete objects unnecessary. But an audit rail endpoint should support the [extend](#extending) functionality to provide the option of obtaining complete objects.
-
-
-__solution__
-In compliance with [vng.cloud](https://zaakgerichtwerken.vng.cloud/themas/achtergronddocumentatie/audit-trail) each individual object should support an /audittrail endpoint. You can look into the [tutorial](TUTORIAL.md) for specifications on how to activate an audit trail for a given object.
-
-Healthchecks
--------
-From [issue 154](https://github.com/VNG-Realisatie/huwelijksplanner/issues/154)
-
-For healthchecks we use the health-json principle (or json-health to stay in line with json-ld and json-hal). This means the any endpoint `should` be capable of providing health information concerning that endpoint and services behind it.
-
-__solution__
-The use of a `Content-Type: application/health+json` header returns an health json schema.
-
-
-Notifications
--------
-To be determined
-
-__solution__
-In compliance with [w3.org](https://www.w3.org/TR/websub/) each endpoint `should` returns an header containing an subscription url. That can be used in accordance with the application to subscribe to both individual objects as collections whereby collections serve as 'kanalen'. We aim to implement the ZGW notificatie component, but feel that further features on that component would be required to make to be fully supported. We will supply feature requests per issue to support this effort.
-
-Authentication
--------
-
-__solution__
-
-Authorization
--------
-We implement user scopes as per [vng.cloud](https://zaakgerichtwerken.vng.cloud/themas/achtergronddocumentatie/autorisatie-scopes) standard. But see problems with how the scopes are defined and named, and consider the general setup to be to focused on ZGW (including Dutch naming, zgw specific fields like maxVertrouwlijkheid and a lack of CRUD thinking). There is a further document concerning [Authentication and Authorization](https://zaakgerichtwerken.vng.cloud/themas/achtergronddocumentatie/authenticatie-autorisatie) that details how we should authenticate users and give them scopes. We agree with the principles of the document on application based authorization and the use of JWT tokens. But disagree on some key technical aspect. Most important being that the architecture doesn't take into consideration the use of one component by several organizations at once. Or scopes per property.
-
-__solution__
-No solution as of yet, so there is no implementation of Authorization or Scopes. We aim to implement the ZGW authorisatie component, but feel that further features on that component would be required to make to be fully supported. We will supply feature requests per issue to support this effort.
-
-
-Timetravel
--------
-A part of the [haal centraal](https://raw.githubusercontent.com/VNG-Realisatie/Haal-Centraal-BRP-bevragen/master/api-specificatie/Bevraging-Ingeschreven-Persoon/openapi.yaml) the concept of timetravel has been introduced, as in getting the version of an object as it was on a given date. For this the `geldigop` [see the docs](file:///C:/Users/ruben/Desktop/doc_gba_historie.html#operation/getBewoningen) header is used. In addition the `geldigvan` and `geldigtot` are introduced as collection filters.
-
-The commonground proto componant natively supports time traveling on all resources that are annotaded with the @Gedmo\Loggable, this is done by adding the ?validOn=[date] query to a request, date can either be a datetime or datedatime string. Any value supported by php's [strtotime()](https://www.php.net/manual/en/function.strtotime.php) is supported. Keep in mind that this returns the entity a as it was valid on that time or better put, the last changed version BEFORE that moment. To get a complete list of all changes on an item the [/audittrail](#Audittrail
-) endpoint can be used.
-
-__solution__
-In compliance with [schema.org](https://schema.org/validFrom) `geldigop`,`geldigvan` and `geldigtot` are implemented as `validOn`,`validFrom` and `validUntil`. And can be used a query parameters on collection operations/
-
-Additionally `validOn` can be used on a single object get request to get the version of that object on a given date, a 404 is returned if no version of that object can be given for the given date
-
-Ordering
--------
-In the [zaak-api](https://zaken-api.vng.cloud/api/v1/schema/#operation/zaak_list) ordering is done in a single field parameter, we however prefer to be able to order on multiple fields in combination of ascending and descending orders. We therefore implement an order parameter as array where they key is the property on wish should be ordered and the value the type of ordering e.g. `?order[name]=desc&order[status]=asc`. The order in which the keys are added to the order array determines the order in which they are applied.
-
-
-Translations
--------
-We support translations trough the `Accept-Language` header (read the [docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language)), the fallback language for all messages is English
-
-Errors
--------
-See [jsonapi](https://jsonapi.org/examples/#error-objects) and the [rfc](https://tools.ietf.org/html/rfc7807).
-
-Arrays
--------
-The NL API standard uses comma notation on array's in http requests. E.g. fields=id,name,description however common browsers(based on chromium e.g. chrome and edge) use bracket notation for query style array's e.g. fields[]=id&fields[]=name,&fields[]=description. The difference of course is obvious since comma notation doesn't allow you to index arrays. [Interestingly enough there isn't actually a rfc spec for this](https://stackoverflow.com/questions/15854017/what-rfc-defines-arrays-transmitted-over-http).
-
-It is perceivable that in future iterations we would like to use indexed array in situations where the index of the array can't be assumed on basis of url notation, when indexes aren�t numerical, when we don�t want an index to start at 0 or when indexes are purpusly missing (comma notation of id,name,description would always refert to the equivalent of fields: [
- 0 => id,
- 1 => name,
- 2 => description
-]
-
-__solution__
-We support both comma and bracket notation on array's, but only document bracket notation since it is preferred.
-
-
-Container Setup
--------
-https://medium.com/shiphp/building-a-custom-nginx-docker-image-with-environment-variables-in-the-config-4a0c36c4a617
-
-
-Filtering
--------
-Because it is based on api-platform de proto component supports filter functions as in [api platform](https://api-platform.com/docs/core/filters/) additionally there are custom filter types available for common ground.
-
-__Regex Exact__
-
-__Regex Contains__
-
-__Like___
-The like filters is used to search for resources with the traditional sql LIKE operator. If pattern does not contain percent signs or underscores, then the pattern only represents the string itself; in that case LIKE acts like the equals operator. An underscore (_) in pattern stands for (matches) any single character; a percent sign (%) matches any sequence of zero or more characters.
-
-Some examples:
-
-'abc' LIKE 'abc' true
-'abc' LIKE 'a%' true
-'abc' LIKE '_b_' true
-'abc' LIKE 'c' false
-
-LIKE pattern matching always covers the entire string. Therefore, if it's desired to match a sequence anywhere within a string, the pattern must start and end with a percent sign.
-
-To match a literal underscore or percent sign without matching other characters, the respective character in pattern must be preceded by a backlash.
-
-## Kubernetes
-
-### Loadbalancers
-We no longer provide a load balancer per component, since this would require a IP address per component (and ipv 4 addresses are in short supply). Instead we make components available as an internal service. A central load balancer could then be used to provide several api’s in one
-
-### server naming
-A component is (speaking in kubernetes terms) a service that is available at a name corresponding to its designation
-
-### Domain Build-up and routing
-By convention the component assumes that you follow the common ground domain name build up, meaning {environment}.{component}.{rest of domain}. That means that only the first two url parts are used for routing. It is also assumed that when no environment is supplied the production environment should be offered E.g. a proper domain for the production API of the verzoeken registratie component would be prod.vrc.zaakonline.nl but it should also be reachable under vrc.zaakonline.nl. The proper location for the development environment should always be dev.vrc.zaakonlin.nl
-
-### Environments and namespacing
-We assume that for that you want to run several environments for development purposes. We identify the following namespaces for support.
-- prod (Production)
-- acce (Acceptation)
-- stag (Staging)
-- test (Testing)
-- dev (Development)
-
-Because we base the common ground infrastructure on kubernetes, and we want to keep a hard separation between environment we also assume that you are using your environment as a namespace
-
-Symfony library management gives us the option to define the libraries on a per environment base, you can find that definition in the [bundle config](api/config/bundles.php)
-
-Besides the API environments the component also ships with additional tools/environments but those are not meant to be deployed
-- client (An react client frontend)
-- admin (An read admin interface)
-
-On the local development docker deploy the client environment is used as default instead of the production version of the api.
-
-
-## Data types
-
-| Period Designator | Description |
-|-------------------|----------------------------------------------------------------------|
-| Y | years |
-| M | months |
-| D | days |
-| W | weeks. These get converted into days, so cannot be combined with D. |
-| H | hours |
-| M | minutes |
-| S | seconds |
-
-### Types versus formats
-
-| Type | Format | Example | Source | Description | Documentation |
-|---------|-----------|----------|--------|-------------|----------------------------------------------------------------------|
-| integer | int32 | | | | |
-| integer | int64 | | | | |
-| string | float | 0.15625 | | | [wikipedia](https://en.wikipedia.org/wiki/Single-precision_floating-point_format) |
-| string | double | 0.15625 | | | [wikipedia](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) |
-| integer | byte | | | | |
-| integer | binary | | | | |
-| string | date | | | | |
-| string | date-time | | | | |
-| string | duration | P23DT23H | | | [wikipedia](https://en.wikipedia.org/wiki/ISO_8601#Durations) |
-| string | password | | | | |
-| string | boolean | | | | |
-| string | string | | | | |
-| string | uuid | | | | |
-| string | uri | | | | |
-| string | email | | | | |
-| string | rsin | | | | |
-| string | bag | | | A BAG uuid | |
-| string | bsn | | | | |
-| string | iban | | | | |
-| | | | | | |
-
-
diff --git a/INSTALLATION.md b/INSTALLATION.md
index d5928fe2..a93f30bb 100644
--- a/INSTALLATION.md
+++ b/INSTALLATION.md
@@ -35,10 +35,19 @@ Now that we've installed both Helm components, we're ready to use helm to instal
## 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"
+```CLI
+$ helm install stable/nginx-ingress --name loadbalancer --kubeconfig="kubeconfig.yaml"
+```
+
+We can check that out with
+
+```CLI
+$ kubectl describe ingress pc-dev-ingress -n=kube-system --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="kubeconfig.yaml" --namespace="kube-system"
```
@@ -57,7 +66,7 @@ $ kubectl -n kube-system describe secrets tiller-token-xxxxx --kubeconfig="kube
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="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
@@ -65,6 +74,29 @@ This should proxy our dashboard to helm making it available trough our favorite
http://localhost:8001/api/v1/namespaces/kube-system/services/https:dashboard-kubernetes-dashboard:https/proxy/#!/login
```
+
+## Cert Manager
+https://cert-manager.io/docs/installation/kubernetes/
+
+```CLI
+$ kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.12/deploy/manifests/00-crds.yaml --kubeconfig="kubeconfig.yaml"
+$ kubectl create namespace cert-manager --kubeconfig="kubeconfig.yaml"
+```
+
+ The we need tp deploy the cert manager to our cluster
+
+```CLI
+$ helm repo add jetstack https://charts.jetstack.io
+$ helm install --name cert-manager --namespace cert-manager --version v0.12.0 \ jetstack/cert-manager --kubeconfig="kubeconfig.yaml"
+```
+
+lets check if everything is working
+
+```CLI
+$ kubectl get pods --namespace cert-manager --kubeconfig="kubeconfig.yaml"
+$ kubectl describe certificate -n dev --kubeconfig="kubeconfig.yaml"
+```
+
## Deploying trough helm
First we always need to update our dependencies
```CLI
@@ -72,14 +104,14 @@ $ helm dependency update ./api/helm
```
If you want to create a new instance
```CLI
-$ helm install --name pdc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1,settings.loadbalancerEnabled=true
+$ helm install --name pdc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1
$ helm install --name pdc-stag ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=stag --set settings.env=stag,settings.debug=0
$ helm install --name pdc-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 pdc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1,settings.loadbalancerEnabled=true
+$ helm upgrade pdc-dev ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=dev --set settings.env=dev,settings.debug=1
$ helm upgrade pdc-stag ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=stag --set settings.env=stag,settings.debug=0
$ helm upgrade pdc-prod ./api/helm --kubeconfig="api/helm/kubeconfig.yaml" --namespace=prod --set settings.env=prod,settings.debug=0
```
diff --git a/README.md b/README.md
index 578dab9b..0c31f23e 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,9 @@ Het "orders" component is ontwikkeld voor de gemeente Utrecht en heeft als doel
- [contributing](https://github.com/ConductionNL/orderscomponent/blob/master/CONTRIBUTING.md) for tips tricks and general rules concerning contributing to this component.
- [codebase](https://github.com/ConductionNL/orderscomponent) on github.
- [codebase](https://github.com/ConductionNL/orderscomponent/archive/master.zip) as a download.
+- [Design considerations](DESIGN-PDC.md)
+- [Data model](api/public/schema/datamodel.pdf)
+- [Postman tests](api/public/schema/pdc.postman_collection.json)
Getting started
-------
diff --git a/api/Dockerfile b/api/Dockerfile
index 3ce66183..4084c00d 100644
--- a/api/Dockerfile
+++ b/api/Dockerfile
@@ -29,6 +29,7 @@ RUN set -eux; \
$PHPIZE_DEPS \
icu-dev \
libzip-dev \
+ libpng-dev \
postgresql-dev \
zlib-dev \
; \
@@ -40,6 +41,8 @@ RUN set -eux; \
zip \
mysqli \
pdo_mysql \
+ pcntl \
+ gd \
; \
pecl install \
apcu-${APCU_VERSION} \
@@ -103,6 +106,9 @@ RUN set -eux; \
chmod +x bin/console; sync
VOLUME /srv/api/var
+# Now that we have our own composer lets update
+RUN composer update --no-interaction
+
COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint
diff --git a/api/composer.json b/api/composer.json
index 5f2cf5aa..bc7545a9 100644
--- a/api/composer.json
+++ b/api/composer.json
@@ -13,6 +13,7 @@
"phpdocumentor/reflection-docblock": "^4.3",
"ramsey/uuid": "^3.8",
"ramsey/uuid-doctrine": "^1.5",
+ "sensio/framework-extra-bundle": "^5.5",
"sensiolabs/security-checker": "^6.0",
"stof/doctrine-extensions-bundle": "^1.3",
"symfony/console": "4.3.*",
diff --git a/api/composer.lock b/api/composer.lock
index d27c4cef..ebd2142c 100644
--- a/api/composer.lock
+++ b/api/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "38df876b57237e6be24848f1f8f637da",
+ "content-hash": "a5cf6c5b0e2fcb4b7558cd2635260c67",
"packages": [
{
"name": "api-platform/api-pack",
@@ -3251,6 +3251,84 @@
],
"time": "2018-08-11T21:01:22+00:00"
},
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v5.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "dfc2c4df9f7d465a65c770e9feb578fe071636f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/dfc2c4df9f7d465a65c770e9feb578fe071636f7",
+ "reference": "dfc2c4df9f7d465a65c770e9feb578fe071636f7",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.0",
+ "php": ">=7.1.3",
+ "symfony/config": "^4.3|^5.0",
+ "symfony/dependency-injection": "^4.3|^5.0",
+ "symfony/framework-bundle": "^4.3|^5.0",
+ "symfony/http-kernel": "^4.3|^5.0"
+ },
+ "conflict": {
+ "doctrine/doctrine-cache-bundle": "<1.3.1"
+ },
+ "require-dev": {
+ "doctrine/doctrine-bundle": "^1.11|^2.0",
+ "doctrine/orm": "^2.5",
+ "nyholm/psr7": "^1.1",
+ "symfony/browser-kit": "^4.3|^5.0",
+ "symfony/dom-crawler": "^4.3|^5.0",
+ "symfony/expression-language": "^4.3|^5.0",
+ "symfony/finder": "^4.3|^5.0",
+ "symfony/monolog-bridge": "^4.0|^5.0",
+ "symfony/monolog-bundle": "^3.2",
+ "symfony/phpunit-bridge": "^4.3.5|^5.0",
+ "symfony/psr-http-message-bridge": "^1.1",
+ "symfony/security-bundle": "^4.3|^5.0",
+ "symfony/twig-bundle": "^4.3|^5.0",
+ "symfony/yaml": "^4.3|^5.0",
+ "twig/twig": "^1.34|^2.4|^3.0"
+ },
+ "suggest": {
+ "symfony/expression-language": "",
+ "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
+ "symfony/security-bundle": ""
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/"
+ },
+ "exclude-from-classmap": [
+ "/tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "time": "2019-10-16T18:54:45+00:00"
+ },
{
"name": "sensiolabs/security-checker",
"version": "v6.0.3",
diff --git a/api/config/bundles.php b/api/config/bundles.php
index fa4a09fd..b3f9617a 100644
--- a/api/config/bundles.php
+++ b/api/config/bundles.php
@@ -2,6 +2,7 @@
return [
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
+ Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Symfony\Bundle\MercureBundle\MercureBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
diff --git a/api/config/packages/api_platform.yaml b/api/config/packages/api_platform.yaml
index b45dcb5b..0e26017c 100644
--- a/api/config/packages/api_platform.yaml
+++ b/api/config/packages/api_platform.yaml
@@ -34,7 +34,7 @@ api_platform:
- Version: %env(APP_VERSION)%
- Repository: [online](%env(APP_REPRO)%) / [zip](%env(APP_REPRO)%/archive/master.zip)
- Docker Image: [online](%env(CONTAINER_REPRO)%)
- - Datamodel: [postman](/schema/openapi.postman_collection) / [oas](/schema/openapi.yaml) / [pdf](/schema/datamodel.pdf) / [mwb](/schema/datamodel.mwb)
+ - Datamodel: [postman](/schema/%env(APP_NAME)%.postman_collection.json) / [oas](/schema/openapi.yaml) / [pdf](/schema/datamodel.pdf) / [mwb](/schema/datamodel.mwb)
%env(APP_DESCRIPTION)%
diff --git a/api/config/packages/sensio_framework_extra.yaml b/api/config/packages/sensio_framework_extra.yaml
new file mode 100644
index 00000000..1821ccc0
--- /dev/null
+++ b/api/config/packages/sensio_framework_extra.yaml
@@ -0,0 +1,3 @@
+sensio_framework_extra:
+ router:
+ annotations: false
diff --git a/api/config/packages/twig.yaml b/api/config/packages/twig.yaml
index 8284abd9..ee6c1853 100644
--- a/api/config/packages/twig.yaml
+++ b/api/config/packages/twig.yaml
@@ -1,3 +1,13 @@
+parameters:
+ env(APP_DOMAINS): '[]'
+ # Organisation stuff
+ env(ORGANIZATION_NAME): ''
+ env(ORGANIZATION_EMAIL_ADDRESS): ''
+ env(ORGANIZATION_COUNTRY_NAME): ''
+ env(ORGANIZATION_STATE): ''
+ env(ORGANIZATION_LOCALITY): ''
+ env(ORGANIZATION_UNIT_NAME): ''
+
twig:
default_path: '%kernel.project_dir%/templates'
debug: '%kernel.debug%'
@@ -8,6 +18,13 @@ twig:
container_registry_base: '%env(CONTAINER_REGISTRY_BASE)%'
container_project_name: '%env(CONTAINER_PROJECT_NAME)%'
+
+ organization_name: '%env(ORGANIZATION_NAME)%'
+ organization_email: '%env(ORGANIZATION_EMAIL_ADDRESS)%'
+ organization_country: '%env(ORGANIZATION_COUNTRY_NAME)%'
+ organization_state: '%env(ORGANIZATION_STATE)%'
+ organization_locality: '%env(ORGANIZATION_LOCALITY)%'
+ organization_unit: '%env(ORGANIZATION_UNIT_NAME)%'
app_name: '%env(APP_NAME)%'
app_title: '%env(APP_TITLE)%'
@@ -15,6 +32,7 @@ twig:
app_env: '%env(APP_ENV)%'
app_debug: '%env(APP_DEBUG)%'
app_domain: '%env(APP_DOMAIN)%'
+ app_domains: '%env(json:APP_DOMAINS)%'
app_demo: '%env(APP_DEMO)%'
app_repro: '%env(APP_REPRO)%'
app_description: '%env(APP_DESCRIPTION)%'
diff --git a/api/docker/php/docker-entrypoint.sh b/api/docker/php/docker-entrypoint.sh
index 1eb6b462..c87aa888 100755
--- a/api/docker/php/docker-entrypoint.sh
+++ b/api/docker/php/docker-entrypoint.sh
@@ -31,9 +31,10 @@ if [ "$1" = 'php-fpm' ] || [ "$1" = 'php' ] || [ "$1" = 'bin/console' ]; then
#fi
#fi
- if [ "$APP_ENV" != 'prod' ]; then
+ #wierd bug fix...
+ #if [ "$APP_ENV" != 'prod' ]; then
composer install --prefer-dist --no-progress --no-suggest --no-interaction
- fi
+ #fi
# Lets setup an nlx certificate if needed
#if [ "$APP_ENV" != 'prod' ]; then
diff --git a/api/helm/templates/api-deployment.yaml b/api/helm/templates/api-deployment.yaml
index cc7aad23..11cca3fb 100644
--- a/api/helm/templates/api-deployment.yaml
+++ b/api/helm/templates/api-deployment.yaml
@@ -21,7 +21,7 @@ spec:
spec:
containers:
- name: {{ include "name" . }}-nginx
- image: "{{ .Values.settings.registryBase }}/pdc-nginx:{{ .Values.settings.env }}"
+ image: "{{ .Values.settings.registryBase }}/{{ .Values.settings.projectName }}-nginx:{{ .Values.settings.env }}"
imagePullPolicy: {{ .Values.settings.pullPolicy }}
ports:
- containerPort: 80
diff --git a/api/helm/templates/cert-issuer.yaml b/api/helm/templates/cert-issuer.yaml
new file mode 100644
index 00000000..804486a2
--- /dev/null
+++ b/api/helm/templates/cert-issuer.yaml
@@ -0,0 +1,16 @@
+apiVersion: cert-manager.io/v1alpha2
+kind: ClusterIssuer
+metadata:
+ name: {{ include "name" . }}-{{ .Values.settings.env }}-letsencrypt
+spec:
+ acme:
+ email: {{ .Values.settings.email }}
+ http01: {}
+ privateKeySecretRef:
+ name: letsencrypt-private-key
+ server: https://acme-v02.api.letsencrypt.org/directory
+ solvers:
+ - selector: {}
+ http01:
+ ingress:
+ class: nginx
\ No newline at end of file
diff --git a/api/helm/templates/certificate.yaml b/api/helm/templates/certificate.yaml
new file mode 100644
index 00000000..78415e0d
--- /dev/null
+++ b/api/helm/templates/certificate.yaml
@@ -0,0 +1,24 @@
+apiVersion: cert-manager.io/v1alpha2
+kind: Certificate
+metadata:
+ name: {{ include "name" . }}-{{ .Values.settings.env }}-cert
+spec:
+ secretName: {{ include "name" . }}-{{ .Values.settings.env }}-cert
+ duration: 24h
+ renewBefore: 12h
+ dnsNames:
+# {{- if eq .Values.settings.env "prod" }}
+# - {{ .Values.settings.name }}.{{ .Values.settings.domain }}
+# {{- else }}
+# - {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }}
+# {{- end }}
+{{- range .Values.settings.domains }}
+ {{- if eq $.Values.settings.env "prod" }}
+ - {{ $.Values.settings.name }}.{{ . }}
+ {{- else }}
+ - {{ $.Values.settings.name }}.{{ $.Values.settings.env }}.{{ . }}
+ {{- end }}
+{{- end }}
+ issuerRef:
+ name: {{ include "name" . }}-{{ .Values.settings.env }}-letsencrypt
+ kind: ClusterIssuer
\ No newline at end of file
diff --git a/api/helm/templates/configmap.yaml b/api/helm/templates/configmap.yaml
index d3b97459..41f37e42 100644
--- a/api/helm/templates/configmap.yaml
+++ b/api/helm/templates/configmap.yaml
@@ -25,6 +25,13 @@ data:
app-health: {{ .Values.settings.healthEnabled | quote }}
app-archive: {{ .Values.settings.archiveEnabled | quote }}
+ organization-name: {{ .Values.settings.organisationName | quote }}
+ organization-email: {{ .Values.settings.email | quote }}
+ organization-country: {{ .Values.settings.country | quote }}
+ organization-state: {{ .Values.settings.state | quote }}
+ organization-locality: {{ .Values.settings.locality | quote }}
+ organization-unit: {{ .Values.settings.unit | quote }}
+
env: {{ .Values.settings.env | quote }}
debug: {{ .Values.settings.debug | quote }}
cors-allow-origin: {{ .Values.settings.corsAllowOrigin | quote }}
diff --git a/api/helm/templates/ingress.yaml b/api/helm/templates/ingress.yaml
index ad27ed07..a684f9fc 100644
--- a/api/helm/templates/ingress.yaml
+++ b/api/helm/templates/ingress.yaml
@@ -1,6 +1,10 @@
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
+ annotations:
+ # add an annotation indicating the issuer to use.
+ cert-manager.io/acme-challenge-type: http01
+ cert-manager.io/cluster-issuer: {{ include "name" . }}-{{ .Values.settings.env }}-letsencrypt
name: {{ include "name" . }}-{{ .Values.settings.env }}-ingress
labels:
app.kubernetes.io/name: {{ include "name" . }}-ingress
@@ -8,100 +12,29 @@ metadata:
helm.sh/chart: {{ include "chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
- {{- with .Values.ingress.annotations }}
- annotations:
- {{- toYaml . | nindent 4 }}
- {{- end }}
spec:
-{{- if .Values.ingress.tls }}
- tls:
- {{- range .Values.ingress.tls }}
- - hosts:
- {{- range .hosts }}
- - {{ .host | quote }}
- {{- end }}
- secretName: {{ .secretName }}
+ tls:
+ - hosts:
+ {{- range .Values.settings.domains }}
+ - {{ . }}
{{- end }}
-{{- end }}
+# - {{ .Values.settings.domain }}
+ secretName: {{ include "name" . }}-{{ .Values.settings.env }}-cert
rules:
-# - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }}
-# http:
-# paths:
-# - backend:
-# serviceName: {{ include "name" . }}
-# servicePort: 80
- {{- if eq .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
+ {{- range .Values.settings.domains }}
+ {{- if eq $.Values.settings.env "prod" }}
+ - host: {{ $.Values.settings.name }}.{{ . }}
http:
paths:
- backend:
- serviceName: {{ include "name" . }}
- servicePort: 80
- - host: {{ .Values.settings.name }}.zaakonline.eu
- http:
- paths:
- - backend:
- serviceName: {{ include "name" . }}
- servicePort: 80
+ serviceName: {{ $.Values.settings.name }}
+ servicePort: 80
{{- else }}
- - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.{{ .Values.settings.domain }}
+ - host: {{ $.Values.settings.name }}.{{ $.Values.settings.env }}.{{ . }}
http:
paths:
- 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
- - host: {{ .Values.settings.name }}.{{ .Values.settings.env }}.zaakonline.nl
- http:
- paths:
- - backend:
- serviceName: {{ include "name" . }}
+ serviceName: {{ $.Values.settings.name }}
servicePort: 80
{{- end }}
+ {{- end }}
diff --git a/api/helm/templates/php-deployment.yaml b/api/helm/templates/php-deployment.yaml
index 38fb0d0f..611e5d39 100644
--- a/api/helm/templates/php-deployment.yaml
+++ b/api/helm/templates/php-deployment.yaml
@@ -9,7 +9,7 @@ metadata:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
- replicas: {{ .Values.php.replicaCount }}
+ replicas: 3
template:
metadata:
labels:
@@ -21,7 +21,7 @@ spec:
spec:
containers:
- name: {{ include "name" . }}-php
- image: "{{ .Values.settings.registryBase }}/pdc-php:{{ .Values.settings.env }}"
+ image: "{{ .Values.settings.registryBase }}/{{ .Values.settings.projectName }}-php:{{ .Values.settings.env }}"
imagePullPolicy: {{ .Values.settings.pullPolicy }}
ports:
- containerPort: 9000
@@ -82,22 +82,63 @@ spec:
configMapKeyRef:
name: {{ template "fullname" . }}
key: app-domain
- - name: APP_REPRO
+ # organization
+ - name: ORGANIZATION_NAME
valueFrom:
configMapKeyRef:
name: {{ template "fullname" . }}
- key: app-repro
+ key: organization-name
+ - name: ORGANIZATION_EMAIL_ADDRESS
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: organization-email
+ - name: ORGANIZATION_COUNTRY_NAME
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: organization-country
+ - name: ORGANIZATION_STATE
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: organization-state
+ - name: ORGANIZATION_LOCALITY
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: organization-locality
+ - name: ORGANIZATION_UNIT_NAME
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: organization-unit
# config
- name: AUTH_ENABLED
- value: "false"
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: app-auth
- name: AUDITTRAIL_ENABLED
- value: "false"
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: app-audittrail
- name: NOTIFICATION_ENABLED
- value: "false"
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: app-notification
- name: HEALTH_ENABLED
- value: "false"
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: app-health
- name: ARCHIVE_ENABLED
- value: "false"
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: app-archive
# bla bla
- name: CORS_ALLOW_ORIGIN
@@ -117,6 +158,21 @@ spec:
secretKeyRef:
name: {{ template "fullname" . }}
key: database-url
+ - name: MERCURE_PUBLISH_URL
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: mercure-publish-url
+ - name: MERCURE_SUBSCRIBE_URL
+ valueFrom:
+ configMapKeyRef:
+ name: {{ template "fullname" . }}
+ key: mercure-subscribe-url
+ - name: MERCURE_JWT_SECRET
+ valueFrom:
+ secretKeyRef:
+ name: {{ template "fullname" . }}
+ key: mercure-jwt-secret
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- if .Values.nodeSelector }}
diff --git a/api/helm/values.yaml b/api/helm/values.yaml
index e77c3c6c..9602449a 100644
--- a/api/helm/values.yaml
+++ b/api/helm/values.yaml
@@ -8,15 +8,24 @@ settings:
name: pdc
title: Producten en Diensten Catalogus
version: V.0.1
- description: ''Naast deze JSON rest API is er ook een [graphql](/graphql) interface beschikbaar.''
- domain: conduction.nl
+ description: ''This component provides a products and services catalogue that can be used by a order component in order to provide the products in the orders with better details. The design considerations are given in [DESIGN.md](https://github.com/ConductionNL/productenendienstencatalogus/blob/master/DESIGN.md) and [DESIGN-PDC.md](https://github.com/ConductionNL/productenendienstencatalogus/blob/master/DESIGN-PDC.md)''
+ repro: 'https://github.com/ConductionNL/productenendienstencatalogus'
+ domain: conduction.nl
+ domains:
+ - conduction.nl
+ - huwelijksplanner.online
+ organisationName: Conduction
+ email: info@conduction.nl
+ country: Netherlands
+ state: Noord-Holland
+ locality: Amsterdam
+ unit: Common-Ground
demo: pdc.zaakonline.nl
- repro: https://github.com/ConductionNL/productenendienstencatalogus'
env: dev
debug: 1
replicaCount: 1
corsAllowOrigin: ['*']
- trustedHosts: '^(.+\.)?conduction\.nl$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.nl$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost'
+ trustedHosts: '^(.+\.)?conduction\.nl$|^(.+\.)?vng\.cloud$|^(.+\.)?huwelijksplanner\.online$|^(.+\.)?larping\.eu$|^(.+\.)?common-ground\.dev$|^(.+\.)?trouwplanner\.online$|^(.+\.)?zaakonline\.nl$|localhost'
pullPolicy: Always
# You will need these proxies on kubernetes
trustedProxies:
diff --git a/api/public/schema/datamodel.pdf b/api/public/schema/datamodel.pdf
new file mode 100644
index 00000000..eaab2a40
Binary files /dev/null and b/api/public/schema/datamodel.pdf differ
diff --git a/api/public/schema/openapi.yaml b/api/public/schema/openapi.yaml
index f06b2e90..ea05c1c2 100644
--- a/api/public/schema/openapi.yaml
+++ b/api/public/schema/openapi.yaml
@@ -10,7 +10,7 @@ info:
- Version: V.0.1
- Repository: [online](https://github.com/ConductionNL/productenendienstencatalogus) / [zip](https://github.com/ConductionNL/productenendienstencatalogus/archive/master.zip)
- Docker Image: [online](https://hub.docker.com/repository/docker/conduction/pdc-php)
- - Datamodel: [postman](/schema/openapi.postman_collection) / [oas](/schema/openapi.yaml) / [pdf](/schema/datamodel.pdf) / [mwb](/schema/datamodel.mwb)
+ - Datamodel: [postman](/schema/pdc.postman_collection.json) / [oas](/schema/openapi.yaml) / [pdf](/schema/datamodel.pdf) / [mwb](/schema/datamodel.mwb)
'This component provides a products and services catalogue that can be used by a order component in order to provide the products in the orders with better details. The design considerations are given in [DESIGN.md](https://github.com/ConductionNL/productenendienstencatalogus/blob/master/DESIGN.md) and [DESIGN-PDC.md](https://github.com/ConductionNL/productenendienstencatalogus/blob/master/DESIGN-PDC.md)'
@@ -3588,73 +3588,1508 @@ paths:
schema:
$ref: '#/components/schemas/Supplier-write'
description: 'The updated Supplier resource'
+ /taxes:
+ get:
+ tags:
+ - Tax
+ operationId: getTaxCollection
+ summary: 'Retrieves the collection of Tax resources.'
+ responses:
+ 200:
+ description: 'Tax collection response'
+ content:
+ application/hal+json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ application/ld+json:
+ schema:
+ type: object
+ properties:
+ 'hydra:member': { type: array, items: { $ref: '#/components/schemas/Tax:jsonld-read' } }
+ 'hydra:totalItems': { type: integer, minimum: 0 }
+ 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } } }
+ 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: string }, required: { type: boolean } } } } } }
+ required:
+ - 'hydra:member'
+ application/vnd.api+json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ application/xml:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ application/x-yaml:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ text/csv:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ text/html:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ parameters:
+ -
+ name: page
+ in: query
+ required: false
+ description: 'The collection page number'
+ schema:
+ type: integer
+ default: 1
+ -
+ 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:
+ - Tax
+ operationId: postTaxCollection
+ summary: 'Creates a Tax resource.'
+ responses:
+ 201:
+ description: 'Tax resource created'
+ content:
+ application/hal+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/ld+json:
+ schema:
+ $ref: '#/components/schemas/Tax:jsonld-read'
+ application/vnd.api+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/x-yaml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/csv:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/html:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ links:
+ GetTaxItem:
+ parameters:
+ id: '$response.body#/id'
+ operationId: getTaxItem
+ description: 'The `id` value returned in the response can be used as the `id` parameter in `GET /taxes/{id}`.'
+ 400:
+ description: 'Invalid input'
+ 404:
+ description: 'Resource not found'
+ requestBody:
+ content:
+ application/hal+json:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/ld+json:
+ schema:
+ $ref: '#/components/schemas/Tax:jsonld-write'
+ application/vnd.api+json:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/x-yaml:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ text/csv:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ text/html:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ description: 'The new Tax 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
+ '/taxes/{id}':
+ get:
+ tags:
+ - Tax
+ operationId: getTaxItem
+ summary: 'Retrieves a Tax 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: 'Tax resource response'
+ content:
+ application/hal+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/ld+json:
+ schema:
+ $ref: '#/components/schemas/Tax:jsonld-read'
+ application/vnd.api+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/x-yaml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/csv:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/html:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ 404:
+ description: 'Resource not found'
+ produces:
+ - application/health+json
+ delete:
+ tags:
+ - Tax
+ operationId: deleteTaxItem
+ summary: 'Removes the Tax resource.'
+ responses:
+ 204:
+ description: 'Tax 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:
+ - Tax
+ operationId: putTaxItem
+ summary: 'Replaces the Tax 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: 'Tax resource updated'
+ content:
+ application/hal+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/ld+json:
+ schema:
+ $ref: '#/components/schemas/Tax:jsonld-read'
+ application/vnd.api+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/x-yaml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/csv:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/html:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ 400:
+ description: 'Invalid input'
+ 404:
+ description: 'Resource not found'
+ requestBody:
+ content:
+ application/hal+json:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/ld+json:
+ schema:
+ $ref: '#/components/schemas/Tax:jsonld-write'
+ application/vnd.api+json:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ application/x-yaml:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ text/csv:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ text/html:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ description: 'The updated Tax resource'
+ patch:
+ tags:
+ - Tax
+ operationId: patchTaxItem
+ summary: 'Updates the Tax 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: 'Tax resource updated'
+ content:
+ application/hal+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/ld+json:
+ schema:
+ $ref: '#/components/schemas/Tax:jsonld-read'
+ application/vnd.api+json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ application/x-yaml:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/csv:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ text/html:
+ schema:
+ $ref: '#/components/schemas/Tax-read'
+ 400:
+ description: 'Invalid input'
+ 404:
+ description: 'Resource not found'
+ requestBody:
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: '#/components/schemas/Tax-write'
+ description: 'The updated Tax resource'
components:
schemas:
Catalogue-read:
type: object
- description: 'This is an example entity.'
+ description: 'An entity representing a product catalogue.'
+ properties:
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ name:
+ description: 'The name of this Catalogue'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ description:
+ description: 'An short description of this Catalogue'
+ externalDocs:
+ url: 'https://schema.org/description'
+ type: string
+ logo:
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'https://schema.org/logo'
+ type: string
+ sourceOrganization:
+ description: 'The RSIN of the organization that provides this catalogue'
+ type: string
+ groups:
+ readOnly: true
+ description: 'The groups that are a part of this catalogue'
+ type: array
+ items:
+ $ref: '#/components/schemas/Group-read'
+ products:
+ readOnly: true
+ description: 'The groups that are a part of this catalogue'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product-read'
+ required:
+ - name
+ - sourceOrganization
+ Catalogue-write:
+ type: object
+ description: 'An entity representing a product catalogue.'
+ required:
+ - name
+ - sourceOrganization
+ properties:
+ name:
+ description: 'The name of this Catalogue'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ description:
+ description: 'An short description of this Catalogue'
+ externalDocs:
+ url: 'https://schema.org/description'
+ type: string
+ logo:
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'https://schema.org/logo'
+ type: string
+ sourceOrganization:
+ description: 'The RSIN of the organization that provides this catalogue'
+ type: string
+ 'Catalogue:jsonld-read':
+ type: object
+ description: 'An entity representing a product catalogue.'
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ name:
+ description: 'The name of this Catalogue'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ description:
+ description: 'An short description of this Catalogue'
+ externalDocs:
+ url: 'https://schema.org/description'
+ type: string
+ logo:
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'https://schema.org/logo'
+ type: string
+ sourceOrganization:
+ description: 'The RSIN of the organization that provides this catalogue'
+ type: string
+ groups:
+ readOnly: true
+ description: 'The groups that are a part of this catalogue'
+ type: array
+ items:
+ $ref: '#/components/schemas/Group:jsonld-read'
+ products:
+ readOnly: true
+ description: 'The groups that are a part of this catalogue'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product:jsonld-read'
+ required:
+ - name
+ - sourceOrganization
+ 'Catalogue:jsonld-write':
+ type: object
+ description: 'An entity representing a product catalogue.'
+ required:
+ - name
+ - sourceOrganization
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ name:
+ description: 'The name of this Catalogue'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ description:
+ description: 'An short description of this Catalogue'
+ externalDocs:
+ url: 'https://schema.org/description'
+ type: string
+ logo:
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'https://schema.org/logo'
+ type: string
+ sourceOrganization:
+ description: 'The RSIN of the organization that provides this catalogue'
+ type: string
+ CustomerType-read:
+ type: object
+ description: 'An entity representing a type of customer.'
+ properties:
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ name:
+ description: 'The name of this CustomerType'
+ type: string
+ description:
+ description: 'The description for this CustomerType'
+ type: string
+ offers:
+ description: 'The offers that this CustomerType is eligible for'
+ type: array
+ items:
+ $ref: '#/components/schemas/Offer-read'
+ required:
+ - name
+ - description
+ CustomerType-write:
+ type: object
+ description: 'An entity representing a type of customer.'
+ required:
+ - name
+ - description
+ properties:
+ name:
+ description: 'The name of this CustomerType'
+ type: string
+ description:
+ description: 'The description for this CustomerType'
+ type: string
+ offers:
+ description: 'The offers that this CustomerType is eligible for'
+ type: array
+ items:
+ $ref: '#/components/schemas/Offer-write'
+ 'CustomerType:jsonld-read':
+ type: object
+ description: 'An entity representing a type of customer.'
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ name:
+ description: 'The name of this CustomerType'
+ type: string
+ description:
+ description: 'The description for this CustomerType'
+ type: string
+ offers:
+ description: 'The offers that this CustomerType is eligible for'
+ type: array
+ items:
+ $ref: '#/components/schemas/Offer:jsonld-read'
+ required:
+ - name
+ - description
+ 'CustomerType:jsonld-write':
+ type: object
+ description: 'An entity representing a type of customer.'
+ required:
+ - name
+ - description
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ name:
+ description: 'The name of this CustomerType'
+ type: string
+ description:
+ description: 'The description for this CustomerType'
+ type: string
+ offers:
+ description: 'The offers that this CustomerType is eligible for'
+ type: array
+ items:
+ $ref: '#/components/schemas/Offer:jsonld-write'
+ Group-read:
+ type: object
+ description: 'An entity representing a product group.'
+ properties:
+ id:
+ readOnly: true
+ description: 'The Uuid identifier of this group'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ name:
+ description: 'The name of this product group'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ description:
+ readOnly: true
+ description: 'An short description of this product group'
+ externalDocs:
+ url: 'https://schema.org/description'
+ type: string
+ logo:
+ readOnly: true
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'https://schema.org/logo'
+ type: string
+ products:
+ description: 'The groups that are a part of this product group'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product-read'
+ sourceOrganization:
+ description: 'The RSIN of the organization that owns this group'
+ type: string
+ catalogue:
+ description: 'The Catalogue that this product group belongs to'
+ $ref: '#/components/schemas/Catalogue-read'
+ required:
+ - name
+ - sourceOrganization
+ Group-write:
+ type: object
+ description: 'An entity representing a product group.'
+ required:
+ - name
+ - sourceOrganization
+ properties:
+ name:
+ description: 'The name of this product group'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ products:
+ description: 'The groups that are a part of this product group'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product-write'
+ sourceOrganization:
+ description: 'The RSIN of the organization that owns this group'
+ type: string
+ catalogue:
+ description: 'The Catalogue that this product group belongs to'
+ $ref: '#/components/schemas/Catalogue-write'
+ 'Group:jsonld-read':
+ type: object
+ description: 'An entity representing a product group.'
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ id:
+ readOnly: true
+ description: 'The Uuid identifier of this group'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ name:
+ description: 'The name of this product group'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ description:
+ readOnly: true
+ description: 'An short description of this product group'
+ externalDocs:
+ url: 'https://schema.org/description'
+ type: string
+ logo:
+ readOnly: true
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'https://schema.org/logo'
+ type: string
+ products:
+ description: 'The groups that are a part of this product group'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product:jsonld-read'
+ sourceOrganization:
+ description: 'The RSIN of the organization that owns this group'
+ type: string
+ catalogue:
+ description: 'The Catalogue that this product group belongs to'
+ $ref: '#/components/schemas/Catalogue:jsonld-read'
+ required:
+ - name
+ - sourceOrganization
+ 'Group:jsonld-write':
+ type: object
+ description: 'An entity representing a product group.'
+ required:
+ - name
+ - sourceOrganization
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ name:
+ description: 'The name of this product group'
+ externalDocs:
+ url: 'http://schema.org/name'
+ type: string
+ products:
+ description: 'The groups that are a part of this product group'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product:jsonld-write'
+ sourceOrganization:
+ description: 'The RSIN of the organization that owns this group'
+ type: string
+ catalogue:
+ description: 'The Catalogue that this product group belongs to'
+ $ref: '#/components/schemas/Catalogue:jsonld-write'
+ Offer-read:
+ type: object
+ description: 'An entity representing an offer.'
properties:
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
name:
- description: 'The name of this Catalogue'
+ description: 'The name of this offer'
+ type: string
+ description:
+ description: 'An short description of this offer'
+ type: string
+ product:
+ description: 'The product that is sold via this offer'
+ $ref: '#/components/schemas/Product-read'
+ price:
+ description: |
+ The price of this product
+
+ @example 50.00
+ type: string
+ priceCurrency:
+ description: |
+ The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
+
+ @example EUR
externalDocs:
- url: 'http://schema.org/name'
+ url: 'http://schema.org/priceCurrency'
+ type: string
+ offeredBy:
+ description: 'The uri for the organisation that offers this offer'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ availabilityEnds:
+ description: 'the date this offer ends'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ availabilityStarts:
+ description: 'the date this offer has started'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ taxes:
+ description: 'The taxdes that affect this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-read'
+ eligibleCustomerTypes:
+ description: 'The customer types that are eligible for this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/CustomerType-read'
+ required:
+ - name
+ - product
+ - price
+ - offeredBy
+ - availabilityEnds
+ - availabilityStarts
+ Offer-write:
+ type: object
+ description: 'An entity representing an offer.'
+ required:
+ - name
+ - product
+ - price
+ - offeredBy
+ - availabilityEnds
+ - availabilityStarts
+ properties:
+ name:
+ description: 'The name of this offer'
type: string
description:
- description: 'An short description of this Catalogue'
+ description: 'An short description of this offer'
+ type: string
+ product:
+ description: 'The product that is sold via this offer'
+ $ref: '#/components/schemas/Product-write'
+ price:
+ description: |
+ The price of this product
+
+ @example 50.00
+ type: string
+ priceCurrency:
+ description: |
+ The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
+
+ @example EUR
externalDocs:
- url: 'https://schema.org/description'
+ url: 'http://schema.org/priceCurrency'
+ type: string
+ offeredBy:
+ description: 'The uri for the organisation that offers this offer'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ availabilityEnds:
+ description: 'the date this offer ends'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ availabilityStarts:
+ description: 'the date this offer has started'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ taxes:
+ description: 'The taxdes that affect this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax-write'
+ eligibleCustomerTypes:
+ description: 'The customer types that are eligible for this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/CustomerType-write'
+ 'Offer:jsonld-read':
+ type: object
+ description: 'An entity representing an offer.'
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ name:
+ description: 'The name of this offer'
+ type: string
+ description:
+ description: 'An short description of this offer'
+ type: string
+ product:
+ description: 'The product that is sold via this offer'
+ $ref: '#/components/schemas/Product:jsonld-read'
+ price:
+ description: |
+ The price of this product
+
+ @example 50.00
+ type: string
+ priceCurrency:
+ description: |
+ The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
+
+ @example EUR
+ externalDocs:
+ url: 'http://schema.org/priceCurrency'
+ type: string
+ offeredBy:
+ description: 'The uri for the organisation that offers this offer'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ availabilityEnds:
+ description: 'the date this offer ends'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ availabilityStarts:
+ description: 'the date this offer has started'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ taxes:
+ description: 'The taxdes that affect this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax:jsonld-read'
+ eligibleCustomerTypes:
+ description: 'The customer types that are eligible for this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/CustomerType:jsonld-read'
+ required:
+ - name
+ - product
+ - price
+ - offeredBy
+ - availabilityEnds
+ - availabilityStarts
+ 'Offer:jsonld-write':
+ type: object
+ description: 'An entity representing an offer.'
+ required:
+ - name
+ - product
+ - price
+ - offeredBy
+ - availabilityEnds
+ - availabilityStarts
+ properties:
+ '@context':
+ readOnly: true
+ type: string
+ '@id':
+ readOnly: true
+ type: string
+ '@type':
+ readOnly: true
+ type: string
+ name:
+ description: 'The name of this offer'
+ type: string
+ description:
+ description: 'An short description of this offer'
+ type: string
+ product:
+ description: 'The product that is sold via this offer'
+ $ref: '#/components/schemas/Product:jsonld-write'
+ price:
+ description: |
+ The price of this product
+
+ @example 50.00
+ type: string
+ priceCurrency:
+ description: |
+ The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
+
+ @example EUR
+ externalDocs:
+ url: 'http://schema.org/priceCurrency'
+ type: string
+ offeredBy:
+ description: 'The uri for the organisation that offers this offer'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ availabilityEnds:
+ description: 'the date this offer ends'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ availabilityStarts:
+ description: 'the date this offer has started'
+ externalDocs:
+ url: 'http://schema.org/Date'
+ type: string
+ format: date-time
+ taxes:
+ description: 'The taxdes that affect this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/Tax:jsonld-write'
+ eligibleCustomerTypes:
+ description: 'The customer types that are eligible for this offer'
+ type: array
+ items:
+ $ref: '#/components/schemas/CustomerType:jsonld-write'
+ Product-read:
+ type: object
+ description: 'An entity representing a product.'
+ properties:
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
+ externalDocs:
+ url: 'http://schema.org/identifier'
+ type: string
+ sku:
+ description: 'The human readable reference for this product, also known as Stock Keeping Unit (SKU)'
+ type: string
+ name:
+ description: 'The name of this Product'
+ type: string
+ description:
+ description: 'An short description of this Product'
type: string
logo:
- description: 'The logo for this component'
+ description: 'The logo of this product'
externalDocs:
- url: 'https://schema.org/logo'
+ url: 'http://schema.org/url'
+ type: string
+ movie:
+ description: 'The movie for this product'
+ externalDocs:
+ url: 'http://schema.org/url'
type: string
sourceOrganization:
- description: 'The RSIN of the organization that provides this catalogue'
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this product'
type: string
groups:
- readOnly: true
- description: 'The groups that are a part of this catalogue'
+ description: 'The product groups that this product is a part of'
type: array
items:
$ref: '#/components/schemas/Group-read'
- products:
+ price:
+ example: '50.00'
+ description: |
+ The price of this product
+ type: string
+ priceCurrency:
+ example: EUR
+ description: 'The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format'
+ externalDocs:
+ url: 'http://schema.org/priceCurrency'
+ type: string
+ taxPercentage:
+ example: 9
+ description: 'The tax percentage for this product as an integer e.g. 9% makes 9'
+ type: integer
+ variations:
readOnly: true
- description: 'The groups that are a part of this catalogue'
+ description: 'The different variations that are available of this product'
type: array
items:
$ref: '#/components/schemas/Product-read'
- Catalogue-write:
- type: object
- description: 'An entity representing a product catalogue'
+ type:
+ type: string
+ description: 'The type of this product. **simple**: ,**set**: ,**virtual**: ,**external**: ,**ticket**: ,**variable**: ,**subscription**,**person**,**location**,**service**'
+ enum:
+ - simple
+ - set
+ - virtual
+ - external
+ - ticket
+ - variable
+ - subscription
+ - person
+ - location
+ - service
+ example: simple
+ required: 'true'
+ groupedProducts:
+ readOnly: true
+ description: 'If the product type is a **set** this contains the products that are part of that set'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product-read'
+ catalogue:
+ description: 'The Catalogue that this product belongs to'
+ $ref: '#/components/schemas/Catalogue-read'
+ offers:
+ description: 'The offers that refer to this product'
+ type: array
+ items:
+ $ref: '#/components/schemas/Offer-read'
+ calendar:
+ example: 'http://example.org/calendar/calendar'
+ description: 'The uri referring to the calendar of this product.'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ requiresAppointment:
+ example: false
+ description: 'If the product requires a physical appointment, for example to request travel documents or for the booking of hotel rooms'
+ type: boolean
+ documents:
+ readOnly: true
+ description: 'An array of URLs pointing to documents related to this product'
+ type: array
+ items:
+ type: string
+ images:
+ readOnly: true
+ description: 'An array of URLs pointing to images related to this product'
+ type: array
+ items:
+ type: string
+ externalDocs:
+ readOnly: true
+ description: 'An array of URLs pointing to external documents referred to from this product'
+ type: array
+ items:
+ type: string
required:
- name
- sourceOrganization
+ - price
+ - taxPercentage
+ - type
+ - catalogue
+ - requiresAppointment
+ Product-write:
+ type: object
+ description: 'An entity representing a product.'
properties:
+ sku:
+ description: 'The human readable reference for this product, also known as Stock Keeping Unit (SKU)'
+ type: string
name:
- description: 'The name of this Catalogue'
- externalDocs:
- url: 'http://schema.org/name'
+ description: 'The name of this Product'
type: string
description:
- description: 'An short description of this Catalogue'
- externalDocs:
- url: 'https://schema.org/description'
+ description: 'An short description of this Product'
type: string
logo:
- description: 'The logo for this component'
+ description: 'The logo of this product'
externalDocs:
- url: 'https://schema.org/logo'
+ url: 'http://schema.org/url'
+ type: string
+ movie:
+ description: 'The movie for this product'
+ externalDocs:
+ url: 'http://schema.org/url'
type: string
sourceOrganization:
- description: 'The RSIN of the organization that provides this catalogue'
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this product'
type: string
- 'Catalogue:jsonld-read':
- type: object
- description: 'An entity representing a product catalogue'
+ groups:
+ description: 'The product groups that this product is a part of'
+ type: array
+ items:
+ $ref: '#/components/schemas/Group-write'
+ price:
+ example: '50.00'
+ description: |
+ The price of this product
+
+ @ORM\Column(type="decimal", precision=8, scale=2)
+
+ @example 50.00
+ @ApiProperty(
+ attributes={
+ "swagger_context"={
+ "iri"="https://schema.org/price",
+ "description" = "The price of this product",
+ "type"="string",
+ "example"="50.00",
+ "maxLength"="9",
+ "required" = true
+ },
+ "openapi_context"={
+ "example"="50.00"
+ }
+ }
+ )
+ type: string
+ priceCurrency:
+ example: EUR
+ description: 'The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format'
+ externalDocs:
+ url: 'http://schema.org/priceCurrency'
+ type: string
+ taxPercentage:
+ example: 9
+ description: 'The tax percentage for this product as an integer e.g. 9% makes 9'
+ type: integer
+ parent:
+ writeOnly: true
+ description: 'The product that this product is a variation of'
+ $ref: '#/components/schemas/Product-write'
+ type:
+ type: string
+ description: 'The type of this product. **simple**: ,**set**: ,**virtual**: ,**external**: ,**ticket**: ,**variable**: ,**subscription**,**person**,**location**,**service**'
+ enum:
+ - simple
+ - set
+ - virtual
+ - external
+ - ticket
+ - variable
+ - subscription
+ - person
+ - location
+ - service
+ example: simple
+ required: 'true'
+ sets:
+ writeOnly: true
+ description: 'The sets thats this product is a part of'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product-write'
+ catalogue:
+ description: 'The Catalogue that this product belongs to'
+ $ref: '#/components/schemas/Catalogue-write'
+ offers:
+ description: 'The offers that refer to this product'
+ type: array
+ items:
+ $ref: '#/components/schemas/Offer-write'
+ calendar:
+ example: 'http://example.org/calendar/calendar'
+ description: 'The uri referring to the calendar of this product.'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ requiresAppointment:
+ example: false
+ description: 'If the product requires a physical appointment, for example to request travel documents or for the booking of hotel rooms'
+ type: boolean
required:
- name
- sourceOrganization
+ - price
+ - taxPercentage
+ - type
+ - catalogue
+ - requiresAppointment
+ 'Product:jsonld-read':
+ type: object
+ description: 'An entity representing a product.'
properties:
'@context':
readOnly: true
@@ -3665,42 +5100,149 @@ components:
'@type':
readOnly: true
type: string
- name:
- description: 'The name of this Catalogue'
+ id:
+ readOnly: true
+ description: 'The UUID identifier of this object'
externalDocs:
- url: 'http://schema.org/name'
+ url: 'http://schema.org/identifier'
+ type: string
+ sku:
+ description: 'The human readable reference for this product, also known as Stock Keeping Unit (SKU)'
+ type: string
+ name:
+ description: 'The name of this Product'
type: string
description:
- description: 'An short description of this Catalogue'
- externalDocs:
- url: 'https://schema.org/description'
+ description: 'An short description of this Product'
type: string
logo:
- description: 'The logo for this component'
+ description: 'The logo of this product'
externalDocs:
- url: 'https://schema.org/logo'
+ url: 'http://schema.org/url'
+ type: string
+ movie:
+ description: 'The movie for this product'
+ externalDocs:
+ url: 'http://schema.org/url'
type: string
sourceOrganization:
- description: 'The RSIN of the organization that provides this catalogue'
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this product'
type: string
groups:
- readOnly: true
- description: 'The groups that are a part of this catalogue'
+ description: 'The product groups that this product is a part of'
type: array
items:
$ref: '#/components/schemas/Group:jsonld-read'
- products:
+ price:
+ example: '50.00'
+ description: |
+ The price of this product
+
+ @ORM\Column(type="decimal", precision=8, scale=2)
+
+ @example 50.00
+ @ApiProperty(
+ attributes={
+ "swagger_context"={
+ "iri"="https://schema.org/price",
+ "description" = "The price of this product",
+ "type"="string",
+ "example"="50.00",
+ "maxLength"="9",
+ "required" = true
+ },
+ "openapi_context"={
+ "example"="50.00"
+ }
+ }
+ )
+ type: string
+ priceCurrency:
+ example: EUR
+ description: 'The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format'
+ externalDocs:
+ url: 'http://schema.org/priceCurrency'
+ type: string
+ taxPercentage:
+ example: 9
+ description: 'The tax percentage for this product as an integer e.g. 9% makes 9'
+ type: integer
+ variations:
readOnly: true
- description: 'The groups that are a part of this catalogue'
+ description: 'The different variations that are available of this product'
type: array
items:
$ref: '#/components/schemas/Product:jsonld-read'
- 'Catalogue:jsonld-write':
- type: object
- description: 'An entity representing a product catalogue'
+ type:
+ type: string
+ description: 'The type of this product. **simple**: ,**set**: ,**virtual**: ,**external**: ,**ticket**: ,**variable**: ,**subscription**,**person**,**location**,**service**'
+ enum:
+ - simple
+ - set
+ - virtual
+ - external
+ - ticket
+ - variable
+ - subscription
+ - person
+ - location
+ - service
+ example: simple
+ required: 'true'
+ groupedProducts:
+ readOnly: true
+ description: 'If the product type is a **set** this contains the products that are part of that set'
+ type: array
+ items:
+ $ref: '#/components/schemas/Product:jsonld-read'
+ catalogue:
+ description: 'The Catalogue that this product belongs to'
+ $ref: '#/components/schemas/Catalogue:jsonld-read'
+ offers:
+ description: 'The offers that refer to this product'
+ type: array
+ items:
+ $ref: '#/components/schemas/Offer:jsonld-read'
+ calendar:
+ example: 'http://example.org/calendar/calendar'
+ description: 'The uri referring to the calendar of this product.'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ requiresAppointment:
+ example: false
+ description: 'If the product requires a physical appointment, for example to request travel documents or for the booking of hotel rooms'
+ type: boolean
+ documents:
+ readOnly: true
+ description: 'An array of URLs pointing to documents related to this product'
+ type: array
+ items:
+ type: string
+ images:
+ readOnly: true
+ description: 'An array of URLs pointing to images related to this product'
+ type: array
+ items:
+ type: string
+ externalDocs:
+ readOnly: true
+ description: 'An array of URLs pointing to external documents referred to from this product'
+ type: array
+ items:
+ type: string
required:
- name
- sourceOrganization
+ - price
+ - taxPercentage
+ - type
+ - catalogue
+ - requiresAppointment
+ 'Product:jsonld-write':
+ type: object
+ description: 'An entity representing a product.'
properties:
'@context':
readOnly: true
@@ -3711,125 +5253,176 @@ components:
'@type':
readOnly: true
type: string
+ sku:
+ description: 'The human readable reference for this product, also known as Stock Keeping Unit (SKU)'
+ type: string
name:
- description: 'The name of this Catalogue'
- externalDocs:
- url: 'http://schema.org/name'
+ description: 'The name of this Product'
type: string
description:
- description: 'An short description of this Catalogue'
- externalDocs:
- url: 'https://schema.org/description'
+ description: 'An short description of this Product'
type: string
logo:
- description: 'The logo for this component'
+ description: 'The logo of this product'
externalDocs:
- url: 'https://schema.org/logo'
+ url: 'http://schema.org/url'
+ type: string
+ movie:
+ description: 'The movie for this product'
+ externalDocs:
+ url: 'http://schema.org/url'
type: string
sourceOrganization:
- description: 'The RSIN of the organization that provides this catalogue'
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this product'
type: string
- CustomerType-read:
- type: object
- description: 'An entity representing a type of customer'
- properties:
- offers:
- description: 'The offers that this CustomerType is eligible for'
- type: array
- items:
- $ref: '#/components/schemas/Offer-read'
- CustomerType-write:
- type: object
- description: 'An entity representing a type of customer'
- properties:
- offers:
- description: 'The offers that this CustomerType is eligible for'
+ groups:
+ description: 'The product groups that this product is a part of'
type: array
items:
- $ref: '#/components/schemas/Offer-write'
- 'CustomerType:jsonld-read':
- type: object
- description: 'An entity representing a type of customer'
- properties:
- '@context':
- readOnly: true
- type: string
- '@id':
- readOnly: true
+ $ref: '#/components/schemas/Group:jsonld-write'
+ price:
+ example: '50.00'
+ description: |
+ The price of this product
+
+ @ORM\Column(type="decimal", precision=8, scale=2)
+
+ @example 50.00
+ @ApiProperty(
+ attributes={
+ "swagger_context"={
+ "iri"="https://schema.org/price",
+ "description" = "The price of this product",
+ "type"="string",
+ "example"="50.00",
+ "maxLength"="9",
+ "required" = true
+ },
+ "openapi_context"={
+ "example"="50.00"
+ }
+ }
+ )
type: string
- '@type':
- readOnly: true
+ priceCurrency:
+ example: EUR
+ description: 'The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format'
+ externalDocs:
+ url: 'http://schema.org/priceCurrency'
type: string
- offers:
- description: 'The offers that this CustomerType is eligible for'
+ taxPercentage:
+ example: 9
+ description: 'The tax percentage for this product as an integer e.g. 9% makes 9'
+ type: integer
+ parent:
+ writeOnly: true
+ description: 'The product that this product is a variation of'
+ $ref: '#/components/schemas/Product:jsonld-write'
+ type:
+ type: string
+ description: 'The type of this product. **simple**: ,**set**: ,**virtual**: ,**external**: ,**ticket**: ,**variable**: ,**subscription**,**person**,**location**,**service**'
+ enum:
+ - simple
+ - set
+ - virtual
+ - external
+ - ticket
+ - variable
+ - subscription
+ - person
+ - location
+ - service
+ example: simple
+ required: 'true'
+ sets:
+ writeOnly: true
+ description: 'The sets thats this product is a part of'
type: array
items:
- $ref: '#/components/schemas/Offer:jsonld-read'
- 'CustomerType:jsonld-write':
- type: object
- description: 'An entity representing a type of customer'
- properties:
- '@context':
- readOnly: true
- type: string
- '@id':
- readOnly: true
- type: string
- '@type':
- readOnly: true
- type: string
+ $ref: '#/components/schemas/Product:jsonld-write'
+ catalogue:
+ description: 'The Catalogue that this product belongs to'
+ $ref: '#/components/schemas/Catalogue:jsonld-write'
offers:
- description: 'The offers that this CustomerType is eligible for'
+ description: 'The offers that refer to this product'
type: array
items:
$ref: '#/components/schemas/Offer:jsonld-write'
- Group-read:
+ calendar:
+ example: 'http://example.org/calendar/calendar'
+ description: 'The uri referring to the calendar of this product.'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ requiresAppointment:
+ example: false
+ description: 'If the product requires a physical appointment, for example to request travel documents or for the booking of hotel rooms'
+ type: boolean
+ required:
+ - name
+ - sourceOrganization
+ - price
+ - taxPercentage
+ - type
+ - catalogue
+ - requiresAppointment
+ Supplier-read:
type: object
- description: 'An entity representing a product group'
+ description: 'An entity representing a supplier of products.'
properties:
id:
+ example: e2984465-190a-4562-829e-a8cca81aa35d
readOnly: true
- description: 'The Uuid identifier of this group'
+ description: 'The Uuid identifier of this supplier'
externalDocs:
url: 'http://schema.org/identifier'
type: string
+ sourceOrganization:
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this process'
+ type: string
name:
- readOnly: true
- description: 'The name of this product group'
- externalDocs:
- url: 'http://schema.org/name'
+ description: 'The name of this RequestType'
type: string
- description:
- readOnly: true
- description: 'An short description of this product group'
- externalDocs:
- url: 'https://schema.org/description'
+ kvk:
+ description: 'The number under which the supplier is registered at the chamber of commerce'
type: string
- camelCase:
- description: 'Proof that we camel case our api'
+ logo:
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'http://schema.org/url'
type: string
required:
- sourceOrganization
- Group-write:
+ - name
+ - kvk
+ Supplier-write:
type: object
- description: 'An entity representing a product group'
+ description: 'An entity representing a supplier of products.'
+ required:
+ - sourceOrganization
+ - name
+ - kvk
properties:
- products:
- description: 'The groups that are a part of this product group'
- type: array
- items:
- $ref: '#/components/schemas/Product-write'
sourceOrganization:
- description: 'The RSIN of the organization that owns this group'
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this process'
type: string
- catalogue:
- description: 'The Catalogue that this product group belongs to'
- $ref: '#/components/schemas/Catalogue-write'
- required:
- - sourceOrganization
- 'Group:jsonld-read':
+ name:
+ description: 'The name of this RequestType'
+ type: string
+ kvk:
+ description: 'The number under which the supplier is registered at the chamber of commerce'
+ type: string
+ logo:
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ 'Supplier:jsonld-read':
type: object
- description: 'An entity representing a product group'
+ description: 'An entity representing a supplier of products.'
properties:
'@context':
readOnly: true
@@ -3841,45 +5434,38 @@ components:
readOnly: true
type: string
id:
+ example: e2984465-190a-4562-829e-a8cca81aa35d
readOnly: true
- description: 'The Uuid identifier of this group'
+ description: 'The Uuid identifier of this supplier'
externalDocs:
url: 'http://schema.org/identifier'
type: string
+ sourceOrganization:
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this process'
+ type: string
name:
- readOnly: true
- description: 'The name of this product group'
- externalDocs:
- url: 'http://schema.org/name'
+ description: 'The name of this RequestType'
type: string
- description:
- readOnly: true
- description: 'An short description of this product group'
- externalDocs:
- url: 'https://schema.org/description'
+ kvk:
+ description: 'The number under which the supplier is registered at the chamber of commerce'
type: string
logo:
- readOnly: true
description: 'The logo for this component'
externalDocs:
- url: 'https://schema.org/logo'
- type: string
- products:
- description: 'The groups that are a part of this product group'
- type: array
- items:
- $ref: '#/components/schemas/Product:jsonld-read'
- sourceOrganization:
- description: 'The RSIN of the organization that owns this group'
+ url: 'http://schema.org/url'
type: string
- catalogue:
- description: 'The Catalogue that this product group belongs to'
- $ref: '#/components/schemas/Catalogue:jsonld-read'
required:
- sourceOrganization
- 'Group:jsonld-write':
+ - name
+ - kvk
+ 'Supplier:jsonld-write':
type: object
- description: 'An entity representing a product group'
+ description: 'An entity representing a supplier of products.'
+ required:
+ - sourceOrganization
+ - name
+ - kvk
properties:
'@context':
readOnly: true
@@ -3890,22 +5476,24 @@ components:
'@type':
readOnly: true
type: string
- products:
- description: 'The groups that are a part of this product group'
- type: array
- items:
- $ref: '#/components/schemas/Product:jsonld-write'
sourceOrganization:
- description: 'The RSIN of the organization that owns this group'
+ example: '002851234'
+ description: 'The RSIN of the organization that owns this process'
type: string
- catalogue:
- description: 'The Catalogue that this product group belongs to'
- $ref: '#/components/schemas/Catalogue:jsonld-write'
- required:
- - sourceOrganization
- Offer-read:
+ name:
+ description: 'The name of this RequestType'
+ type: string
+ kvk:
+ description: 'The number under which the supplier is registered at the chamber of commerce'
+ type: string
+ logo:
+ description: 'The logo for this component'
+ externalDocs:
+ url: 'http://schema.org/url'
+ type: string
+ Tax-read:
type: object
- description: 'An entity representing an offer'
+ description: 'An entity representing an tax.'
properties:
id:
readOnly: true
@@ -3914,194 +5502,76 @@ components:
url: 'http://schema.org/identifier'
type: string
name:
- description: 'The name of this offer'
+ description: 'The name of this tax'
+ type: string
+ description:
+ description: 'An short description of this tax'
type: string
- product:
- readOnly: true
- description: 'The product that is sold via this offer'
- $ref: '#/components/schemas/Product-read'
price:
- description: |
- The price of this product
- @example 50.00
-
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/price",
- "description" = "The price of this product",
- "type"="string",
- "example"="50.00",
- "maxLength"="9",
- "required" = true
- }
- }
- )
+ description: 'The price of this tax'
type: string
priceCurrency:
description: |
- The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @example EUR
+ The currency of this tax in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/priceCurrency",
- "description" = "The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format",
- "type"="string",
- "example"="EUR",
- "default"="EUR",
- "maxLength"="3",
- "minLength"="3"
- }
- }
- )
+ @example EUR
externalDocs:
url: 'http://schema.org/priceCurrency'
type: string
- offeredBy:
- description: 'The uri for the organisation that offers this offer'
- externalDocs:
- url: 'http://schema.org/url'
- type: string
- availabilityEnds:
- description: 'the date this offer ends'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- availabilityStarts:
- description: 'the date this offer has started'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- taxPercentage:
+ percentage:
description: |
The tax percentage for this offer as an integer e.g. 9% makes 9
- @example 9
- @ApiProperty(
- attributes={
- "swagger_context"={
- "description" = "The tax percentage for this offer as an integer e.g. 9% makes 9",
- "type"="integer",
- "example"="9",
- "maxLength"="3",
- "minLength"="1",
- "required" = true
- }
- }
- )
+ @example 9
type: integer
- eligibleCustomerTypes:
- description: 'The customer types that are eligible for this offer'
+ offers:
+ description: 'The offers that use this tax'
type: array
items:
- $ref: '#/components/schemas/CustomerType-read'
+ $ref: '#/components/schemas/Offer-read'
required:
- name
- price
- - offeredBy
- - availabilityEnds
- - availabilityStarts
- - taxPercentage
- Offer-write:
+ - percentage
+ Tax-write:
type: object
- description: 'This is an example entity.'
+ description: 'An entity representing an tax.'
required:
- name
- price
- - offeredBy
- - availabilityEnds
- - availabilityStarts
- - taxPercentage
+ - percentage
properties:
name:
- description: 'The name of this offer'
+ description: 'The name of this tax'
+ type: string
+ description:
+ description: 'An short description of this tax'
type: string
price:
- description: |
- The price of this product
- @example 50.00
-
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/price",
- "description" = "The price of this product",
- "type"="string",
- "example"="50.00",
- "maxLength"="9",
- "required" = true
- }
- }
- )
+ description: 'The price of this tax'
type: string
priceCurrency:
description: |
- The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @example EUR
+ The currency of this tax in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/priceCurrency",
- "description" = "The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format",
- "type"="string",
- "example"="EUR",
- "default"="EUR",
- "maxLength"="3",
- "minLength"="3"
- }
- }
- )
+ @example EUR
externalDocs:
url: 'http://schema.org/priceCurrency'
type: string
- offeredBy:
- description: 'The uri for the organisation that offers this offer'
- externalDocs:
- url: 'http://schema.org/url'
- type: string
- availabilityEnds:
- description: 'the date this offer ends'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- availabilityStarts:
- description: 'the date this offer has started'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- taxPercentage:
+ percentage:
description: |
The tax percentage for this offer as an integer e.g. 9% makes 9
- @example 9
- @ApiProperty(
- attributes={
- "swagger_context"={
- "description" = "The tax percentage for this offer as an integer e.g. 9% makes 9",
- "type"="integer",
- "example"="9",
- "maxLength"="3",
- "minLength"="1",
- "required" = true
- }
- }
- )
+ @example 9
type: integer
- eligibleCustomerTypes:
- description: 'The customer types that are eligible for this offer'
+ offers:
+ description: 'The offers that use this tax'
type: array
items:
- $ref: '#/components/schemas/CustomerType-write'
- 'Offer:jsonld-read':
+ $ref: '#/components/schemas/Offer-write'
+ 'Tax:jsonld-read':
type: object
- description: 'An entity representing an offer'
+ description: 'An entity representing an tax.'
properties:
'@context':
readOnly: true
@@ -4119,108 +5589,44 @@ components:
url: 'http://schema.org/identifier'
type: string
name:
- description: 'The name of this offer'
- type: string
- product:
- readOnly: true
- description: 'The product that is sold via this offer'
- $ref: '#/components/schemas/Product:jsonld-read'
+ description: 'The name of this tax'
+ type: string
+ description:
+ description: 'An short description of this tax'
+ type: string
price:
- description: |
- The price of this product
- @example 50.00
-
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/price",
- "description" = "The price of this product",
- "type"="string",
- "example"="50.00",
- "maxLength"="9",
- "required" = true
- }
- }
- )
+ description: 'The price of this tax'
type: string
priceCurrency:
description: |
- The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @example EUR
+ The currency of this tax in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/priceCurrency",
- "description" = "The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format",
- "type"="string",
- "example"="EUR",
- "default"="EUR",
- "maxLength"="3",
- "minLength"="3"
- }
- }
- )
+ @example EUR
externalDocs:
url: 'http://schema.org/priceCurrency'
type: string
- offeredBy:
- description: 'The uri for the organisation that offers this offer'
- externalDocs:
- url: 'http://schema.org/url'
- type: string
- availabilityEnds:
- description: 'the date this offer ends'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- availabilityStarts:
- description: 'the date this offer has started'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- taxPercentage:
+ percentage:
description: |
The tax percentage for this offer as an integer e.g. 9% makes 9
- @example 9
- @ApiProperty(
- attributes={
- "swagger_context"={
- "description" = "The tax percentage for this offer as an integer e.g. 9% makes 9",
- "type"="integer",
- "example"="9",
- "maxLength"="3",
- "minLength"="1",
- "required" = true
- }
- }
- )
+ @example 9
type: integer
- eligibleCustomerTypes:
- description: 'The customer types that are eligible for this offer'
+ offers:
+ description: 'The offers that use this tax'
type: array
items:
- $ref: '#/components/schemas/CustomerType:jsonld-read'
+ $ref: '#/components/schemas/Offer:jsonld-read'
required:
- name
- price
- - offeredBy
- - availabilityEnds
- - availabilityStarts
- - taxPercentage
- 'Offer:jsonld-write':
+ - percentage
+ 'Tax:jsonld-write':
type: object
- description: 'An entity representing an offer'
+ description: 'An entity representing an tax.'
required:
- name
- price
- - offeredBy
- - availabilityEnds
- - availabilityStarts
- - taxPercentage
+ - percentage
properties:
'@context':
readOnly: true
@@ -4232,165 +5638,465 @@ components:
readOnly: true
type: string
name:
- description: 'The name of this offer'
+ description: 'The name of this tax'
+ type: string
+ description:
+ description: 'An short description of this tax'
type: string
price:
- description: |
- The price of this product
- @example 50.00
-
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/price",
- "description" = "The price of this product",
- "type"="string",
- "example"="50.00",
- "maxLength"="9",
- "required" = true
- }
- }
- )
+ description: 'The price of this tax'
type: string
priceCurrency:
description: |
- The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @example EUR
+ The currency of this tax in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format
- @ApiProperty(
- attributes={
- "swagger_context"={
- "iri"="https://schema.org/priceCurrency",
- "description" = "The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format",
- "type"="string",
- "example"="EUR",
- "default"="EUR",
- "maxLength"="3",
- "minLength"="3"
- }
- }
- )
+ @example EUR
externalDocs:
url: 'http://schema.org/priceCurrency'
type: string
- offeredBy:
- description: 'The uri for the organisation that offers this offer'
- externalDocs:
- url: 'http://schema.org/url'
- type: string
- availabilityEnds:
- description: 'the date this offer ends'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- availabilityStarts:
- description: 'the date this offer has started'
- externalDocs:
- url: 'http://schema.org/Date'
- type: string
- format: date-time
- taxPercentage:
+ percentage:
description: |
The tax percentage for this offer as an integer e.g. 9% makes 9
- @example 9
- @ApiProperty(
- attributes={
- "swagger_context"={
- "description" = "The tax percentage for this offer as an integer e.g. 9% makes 9",
- "type"="integer",
- "example"="9",
- "maxLength"="3",
- "minLength"="1",
- "required" = true
- }
- }
- )
+ @example 9
type: integer
- eligibleCustomerTypes:
- description: 'The customer types that are eligible for this offer'
+ offers:
+ description: 'The offers that use this tax'
type: array
items:
- $ref: '#/components/schemas/CustomerType:jsonld-write'
- Product-read:
- type: object
- description: 'An entity representing a product'
- properties:
- id:
- readOnly: true
- description: 'The UUID identifier of this object'
- externalDocs:
- url: 'http://schema.org/identifier'
- type: string
- sku:
- description: 'The human readable reference for this product, also known as Stock Keeping Unit (SKU)'
- type: string
- name:
- description: 'The name of this Product'
- externalDocs:
- url: 'http://schema.org/name'
- type: string
- description:
- description: 'An short description of this Product'
- externalDocs:
- url: 'https://schema.org/description'
- type: string
- camelCase:
- description: 'Proof that we camel case our api'
- type: string
+ $ref: '#/components/schemas/Offer:jsonld-write'
definitions:
- ExampleEntity-read:
+ Catalogue-read:
+ properties:
+ id:
+ example: e2984465-190a-4562-829e-a8cca81aa35d
+ format: uuid
+ name:
+ example: 'My Catalogue'
+ maxLength: 255
+ description:
+ example: 'This is the best catalogue ever'
+ maxLength: 2550
+ logo:
+ example: 'https://www.my-organization.com/logo.png'
+ format: url
+ maxLength: 255
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ groups: []
+ products: []
+ required:
+ - name
+ - sourceOrganization
+ Catalogue-write:
+ properties:
+ name:
+ example: 'My Catalogue'
+ maxLength: 255
+ description:
+ example: 'This is the best catalogue ever'
+ maxLength: 2550
+ logo:
+ example: 'https://www.my-organization.com/logo.png'
+ format: url
+ maxLength: 255
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ required:
+ - name
+ - sourceOrganization
+ CustomerType-read:
properties:
id:
example: e2984465-190a-4562-829e-a8cca81aa35d
format: uuid
+ name:
+ example: 'My CustomerType'
+ maxLength: 255
+ description:
+ example: 'this is the best customertype ever'
+ maxLength: 2550
+ offers: []
+ required:
+ - name
+ - description
+ CustomerType-write:
+ properties:
+ name:
+ example: 'My CustomerType'
+ maxLength: 255
+ description:
+ example: 'this is the best customertype ever'
+ maxLength: 2550
+ offers: []
+ required:
+ - name
+ - description
+ Group-read:
+ properties:
+ id:
+ format: uuid
name:
example: 'My Group'
maxLength: 255
description:
- example: 'Is the best group ever'
- maxLength: 2555
- camelCase:
- example: 'Best api ever'
+ example: 'This is the best group ever'
+ maxLength: 2550
+ logo:
+ example: 'https://www.my-organization.com/logo.png'
+ format: url
maxLength: 255
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ products: []
+ catalogue: []
required:
- name
- ExampleEntity-write:
+ - sourceOrganization
+ Group-write:
properties:
name:
example: 'My Group'
maxLength: 255
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ products: []
+ catalogue: []
+ required:
+ - name
+ - sourceOrganization
+ Offer-read:
+ properties:
+ id:
+ example: e2984465-190a-4562-829e-a8cca81aa35d
+ format: uuid
+ name:
+ example: 'my offer'
+ maxLength: 255
+ description:
+ example: 'This is the best product ever'
+ maxLength: 2550
+ price: []
+ priceCurrency: []
+ offeredBy:
+ example: '(http://example.org/example/1)'
+ format: url
+ maxLength: 255
+ availabilityEnds:
+ example: '20191231'
+ availabilityStarts:
+ example: '20190101'
+ product: []
+ taxes: []
+ eligibleCustomerTypes: []
+ required:
+ - name
+ - price
+ - offeredBy
+ - availabilityEnds
+ - availabilityStarts
+ - product
+ Offer-write:
+ properties:
+ name:
+ example: 'my offer'
+ maxLength: 255
+ description:
+ example: 'This is the best product ever'
+ maxLength: 2550
+ price: []
+ priceCurrency: []
+ offeredBy:
+ example: '(http://example.org/example/1)'
+ format: url
+ maxLength: 255
+ availabilityEnds:
+ example: '20191231'
+ availabilityStarts:
+ example: '20190101'
+ product: []
+ taxes: []
+ eligibleCustomerTypes: []
+ required:
+ - name
+ - price
+ - offeredBy
+ - availabilityEnds
+ - availabilityStarts
+ - product
+ Product-read:
+ properties:
+ id:
+ example: e2984465-190a-4562-829e-a8cca81aa35d
+ format: uuid
+ sku:
+ example: 6666-2019
+ name:
+ example: 'My product'
+ maxLength: 255
+ description:
+ example: 'This is the best product ever'
+ maxLength: 2550
+ logo:
+ example: 'https://www.my-organization.com/logo.png'
+ format: url
+ maxLength: 255
+ movie:
+ example: 'https://www.youtube.com/embed/RkBZYoMnx5w'
+ format: url
+ maxLength: 255
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ price: []
+ priceCurrency:
+ example: |
+ EUR
+ @ApiProperty(
+ attributes={
+ "swagger_context"={
+ "iri"="https://schema.org/priceCurrency",
+ "description" = "The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format",
+ "type"="string",
+ "example"="EUR",
+ "default"="EUR",
+ "maxLength"="3",
+ "minLength"="3"
+ },
+ "openapi_context"={
+ "example"="EUR"
+ }
+ }
+ )
+ taxPercentage: []
+ type:
+ example: simple
+ calendar:
+ example: 'http://example.org/calendar/calendar'
+ format: url
+ maxLength: 255
+ requiresAppointment:
+ example: 'false'
+ documents: []
+ images: []
+ externalDocs: []
+ groups: []
+ variations: []
+ groupedProducts: []
+ catalogue: []
+ offers: []
+ required:
+ - name
+ - sourceOrganization
+ - price
+ - requiresAppointment
+ - catalogue
+ Product-write:
+ properties:
+ sku:
+ example: 6666-2019
+ name:
+ example: 'My product'
+ maxLength: 255
+ description:
+ example: 'This is the best product ever'
+ maxLength: 2550
+ logo:
+ example: 'https://www.my-organization.com/logo.png'
+ format: url
+ maxLength: 255
+ movie:
+ example: 'https://www.youtube.com/embed/RkBZYoMnx5w'
+ format: url
+ maxLength: 255
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ price: []
+ priceCurrency:
+ example: |
+ EUR
+ @ApiProperty(
+ attributes={
+ "swagger_context"={
+ "iri"="https://schema.org/priceCurrency",
+ "description" = "The currency of this product in an [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) format",
+ "type"="string",
+ "example"="EUR",
+ "default"="EUR",
+ "maxLength"="3",
+ "minLength"="3"
+ },
+ "openapi_context"={
+ "example"="EUR"
+ }
+ }
+ )
+ taxPercentage: []
+ type:
+ example: simple
+ calendar:
+ example: 'http://example.org/calendar/calendar'
+ format: url
+ maxLength: 255
+ requiresAppointment:
+ example: 'false'
+ groups: []
+ parent: []
+ sets: []
+ catalogue: []
+ offers: []
+ required:
+ - name
+ - sourceOrganization
+ - price
+ - requiresAppointment
+ - catalogue
+ Supplier-read:
+ properties:
+ id:
+ format: uuid
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ name:
+ example: 'My RequestType'
+ maxLength: 255
+ kvk:
+ example: '30280353'
+ maxLength: 255
+ logo:
+ example: 'https://www.my-organization.com/logo.png'
+ format: url
+ maxLength: 255
+ required:
+ - sourceOrganization
+ - name
+ - kvk
+ Supplier-write:
+ properties:
+ sourceOrganization:
+ example: '002851234'
+ maxLength: 11
+ minLength: 8
+ name:
+ example: 'My RequestType'
+ maxLength: 255
+ kvk:
+ example: '30280353'
+ maxLength: 255
+ logo:
+ example: 'https://www.my-organization.com/logo.png'
+ format: url
+ maxLength: 255
+ required:
+ - sourceOrganization
+ - name
+ - kvk
+ Tax-read:
+ properties:
+ id:
+ example: e2984465-190a-4562-829e-a8cca81aa35d
+ format: uuid
+ name:
+ example: 'my offer'
+ maxLength: 255
description:
- example: 'Is the best group ever'
- maxLength: 2555
- camelCase:
- example: 'Best api ever'
+ example: 'This is the best product ever'
+ maxLength: 2550
+ price:
+ example: '50.00'
+ priceCurrency: []
+ percentage: []
+ offers: []
+ required:
+ - name
+ - price
+ Tax-write:
+ properties:
+ name:
+ example: 'my offer'
maxLength: 255
+ description:
+ example: 'This is the best product ever'
+ maxLength: 2550
+ price:
+ example: '50.00'
+ priceCurrency: []
+ percentage: []
+ offers: []
required:
- name
+ - price
tags:
-
name: Catalogue
description: |
- This is an example entity.
+ An entity representing a product catalogue.
+
+ This entity represents a product catalogue that contains all products that can be ordered in a single point.
+ -
+ name: CustomerType
+ description: |
+ An entity representing a type of customer.
+
+ This entity represents a type of customer that can order offers in the OrderRegistratieComponent. This entity is linked from offer with the variable eligibleCustomerType.
+ -
+ name: Group
+ description: |
+ An entity representing a product group.
+
+ This entity represents a product group to differ between various product types.
+ -
+ name: Offer
+ description: |
+ An entity representing an offer.
+
+ This entity represents an offer that bridges products to the OrderRegistratieComponent to be able to change prices without invalidating past orders.
+ -
+ name: Product
+ description: |
+ An entity representing a product.
+
+ This entity represents a product that can be ordered via the OrderRegistratieComponent.
+ -
+ name: Supplier
+ description: |
+ An entity representing a supplier of products.
+
+ This entity represents a supplier that delivers products to the seller. For example: if we are a municipality we sell passports to our inhabitants, but these passports are made by the ministry of internal affairs.
+ -
+ name: Tax
+ description: |
+ An entity representing an tax.
- With an adtional description, all in all its pritty nice [url](www.google.nl)
+ This entity represents an offer that bridges products to the OrderRegistratieComponent to be able to change prices without invalidating past orders.
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 Tax resource'
+ write: 'write right to the Tax 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 Tax resource'
+ write: 'write right to the Tax resource'
host: irc.zaakonline.nl
servers:
-
diff --git a/api/public/schema/pdc.postman_collection.json b/api/public/schema/pdc.postman_collection.json
new file mode 100644
index 00000000..c31e41f3
--- /dev/null
+++ b/api/public/schema/pdc.postman_collection.json
@@ -0,0 +1,11932 @@
+{
+ "info": {
+ "_postman_id": "db92a569-9808-409d-8897-3d4d5fc8f68d",
+ "name": "Producten en Diensten Catalogus",
+ "description": "API Details\n- Component: Producten en Diensten Catalogus\n- Reference: pdc\n- Enviroment: dev\n- Version: V.0.1\n- Repository: [online](https://github.com/ConductionNL/productenendienstencatalogus) / [zip](https://github.com/ConductionNL/productenendienstencatalogus/archive/master.zip)\n- Docker Image: [online](https://hub.docker.com/repository/docker/conduction/pdc-php) \n- Datamodel: [postman](/schema/openapi.postman_collection) / [oas](/schema/openapi.yaml) / [pdf](/schema/datamodel.pdf) / [mwb](/schema/datamodel.mwb) \n\n'This component provides a products and services catalogue that can be used by a order component in order to provide the products in the orders with better details. The design considerations are given in [DESIGN.md](https://github.com/ConductionNL/productenendienstencatalogus/blob/master/DESIGN.md) and [DESIGN-PDC.md](https://github.com/ConductionNL/productenendienstencatalogus/blob/master/DESIGN-PDC.md)' \n",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
+ },
+ "item": [
+ {
+ "name": "catalogues",
+ "item": [
+ {
+ "name": "Retrieves the collection of Catalogue resources.",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "0b60c2a4-39a6-45d0-86d9-13f436a26118",
+ "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}}/catalogues?",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues"
+ ],
+ "query": [
+ {
+ "key": "sourceOrganization",
+ "value": "",
+ "disabled": true
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": "",
+ "disabled": true
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": "",
+ "disabled": true
+ },
+ {
+ "key": "page",
+ "value": "1",
+ "description": "The collection page number",
+ "disabled": true
+ },
+ {
+ "key": "extend[]",
+ "value": "",
+ "description": "An array of nested objects to include in the return object",
+ "disabled": true
+ },
+ {
+ "key": "fields[]",
+ "value": "",
+ "description": "An array of fields to return in output, wil return all fields is not supplied",
+ "disabled": true
+ },
+ {
+ "key": "validOn",
+ "value": "",
+ "description": "Returns object as valid on a given date time",
+ "disabled": true
+ },
+ {
+ "key": "validFrom",
+ "value": "",
+ "description": "Returns objects valid from a given date time",
+ "disabled": true
+ },
+ {
+ "key": "validUntil",
+ "value": "",
+ "description": "Returns objects valid until a given date time",
+ "disabled": true
+ }
+ ]
+ }
+ },
+ "response": [
+ {
+ "name": "Catalogue 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}}/catalogues?sourceOrganization=&sourceOrganization[]=&sourceOrganization[]=&page=1&extend[]=&fields[]=&validOn=&validFrom=&validUntil=",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues"
+ ],
+ "query": [
+ {
+ "key": "sourceOrganization",
+ "value": ""
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": ""
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": ""
+ },
+ {
+ "key": "page",
+ "value": "1"
+ },
+ {
+ "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 Catalogue resource.",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "c03547bd-a8d7-468b-9663-aa69c5bfe7a0",
+ "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(\"catalogue\", 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": "{\n \"name\": \"My Catalogue\",\n \"sourceOrganization\": \"002851234\",\n \"description\": \"This is the best catalogue ever\",\n \"logo\": \"https://www.my-organization.com/logo.png\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues"
+ ]
+ }
+ },
+ "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": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues"
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "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": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues"
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Catalogue 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": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues"
+ ]
+ }
+ },
+ "status": "Created",
+ "code": 201,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/hal+json"
+ }
+ ],
+ "cookie": [],
+ "body": "null"
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {}
+ },
+ {
+ "name": "catalogues/{id}",
+ "item": [
+ {
+ "name": "Retrieves a Catalogue resource.",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "92fb0358-7ee4-46f2-8dbe-ca81a2c65735",
+ "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}}/catalogues/{{catalogue}}?",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ "{{catalogue}}"
+ ],
+ "query": [
+ {
+ "key": "extend[]",
+ "value": "",
+ "description": "An array of nested objects to include in the return object",
+ "disabled": true
+ },
+ {
+ "key": "fields[]",
+ "value": "",
+ "description": "An array of fields to return in output, wil return all fields is not supplied",
+ "disabled": true
+ },
+ {
+ "key": "validOn",
+ "value": "",
+ "description": "Returns object as valid on a given date time",
+ "disabled": true
+ },
+ {
+ "key": "validFrom",
+ "value": "",
+ "description": "Returns objects valid from a given date time",
+ "disabled": true
+ },
+ {
+ "key": "validUntil",
+ "value": "",
+ "description": "Returns objects valid until a given date time",
+ "disabled": true
+ }
+ ]
+ }
+ },
+ "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}}/catalogues/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ],
+ "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": "Catalogue 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}}/catalogues/?extend[]=&fields[]=&validOn=&validFrom=&validUntil=",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ],
+ "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 Catalogue resource.",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "b810ff96-a944-47c1-9373-170b73ce2d29",
+ "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": "{\n \"name\": \"My Catalogue\",\n \"sourceOrganization\": \"002851234\",\n \"description\": \"This is the best catalogue ever\",\n \"logo\": \"https://www.my-organization.com/logo.png\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/{{catalogue}}",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ "{{catalogue}}"
+ ]
+ }
+ },
+ "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": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ]
+ }
+ },
+ "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": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Catalogue 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": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ]
+ }
+ },
+ "status": "OK",
+ "code": 200,
+ "_postman_previewlanguage": "json",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "application/hal+json"
+ }
+ ],
+ "cookie": [],
+ "body": "null"
+ }
+ ]
+ },
+ {
+ "name": "Updates the Catalogue resource.",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "e6b5655a-a71a-423f-a828-9f7f8db310e6",
+ "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/vnd.api+json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \"name\": \"My Catalogue\",\r\n \"sourceOrganization\": \"002851234\",\r\n \"description\": \"This is the best catalogue ever\",\r\n \"logo\": \"https://www.my-organization.com/logo.png\"\r\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/{{catalogue}}",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ "{{catalogue}}"
+ ]
+ }
+ },
+ "response": [
+ {
+ "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/vnd.api+json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ]
+ }
+ },
+ "status": "Not Found",
+ "code": 404,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ },
+ {
+ "name": "Catalogue 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/vnd.api+json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ]
+ }
+ },
+ "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/vnd.api+json"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/catalogues/",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "catalogues",
+ ""
+ ]
+ }
+ },
+ "status": "Bad Request",
+ "code": 400,
+ "_postman_previewlanguage": "text",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "text/plain"
+ }
+ ],
+ "cookie": [],
+ "body": ""
+ }
+ ]
+ }
+ ],
+ "protocolProfileBehavior": {}
+ },
+ {
+ "name": "groups",
+ "item": [
+ {
+ "name": "Retrieves the collection of Group resources.",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "d23587cd-8ce3-4641-9df2-4880e04eac0d",
+ "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}}/groups?",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "groups"
+ ],
+ "query": [
+ {
+ "key": "sourceOrganization",
+ "value": "",
+ "disabled": true
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": "",
+ "disabled": true
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": "",
+ "disabled": true
+ },
+ {
+ "key": "page",
+ "value": "1",
+ "description": "The collection page number",
+ "disabled": true
+ },
+ {
+ "key": "extend[]",
+ "value": "",
+ "description": "An array of nested objects to include in the return object",
+ "disabled": true
+ },
+ {
+ "key": "fields[]",
+ "value": "",
+ "description": "An array of fields to return in output, wil return all fields is not supplied",
+ "disabled": true
+ },
+ {
+ "key": "validOn",
+ "value": "",
+ "description": "Returns object as valid on a given date time",
+ "disabled": true
+ },
+ {
+ "key": "validFrom",
+ "value": "",
+ "description": "Returns objects valid from a given date time",
+ "disabled": true
+ },
+ {
+ "key": "validUntil",
+ "value": "",
+ "description": "Returns objects valid until a given date time",
+ "disabled": true
+ }
+ ]
+ }
+ },
+ "response": [
+ {
+ "name": "Group 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}}/groups?sourceOrganization=&sourceOrganization[]=&sourceOrganization[]=&page=1&extend[]=&fields[]=&validOn=&validFrom=&validUntil=",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "groups"
+ ],
+ "query": [
+ {
+ "key": "sourceOrganization",
+ "value": ""
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": ""
+ },
+ {
+ "key": "sourceOrganization[]",
+ "value": ""
+ },
+ {
+ "key": "page",
+ "value": "1"
+ },
+ {
+ "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": "[\n {\n \"sourceOrganization\": \"\",\n \"id\": \"\",\n \"name\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"products\": [\n {\n \"name\": \"schema type not provided\",\n \"sourceOrganization\": \"schema type not provided\",\n \"price\": \"schema type not provided\",\n \"taxPercentage\": \"schema type not provided\",\n \"type\": \"schema type not provided\",\n \"requiresAppointment\": \"schema type not provided\",\n \"id\": \"schema type not provided\",\n \"sku\": \"schema type not provided\",\n \"description\": \"schema type not provided\",\n \"logo\": \"schema type not provided\",\n \"movie\": \"schema type not provided\",\n \"groups\": \"schema type not provided\",\n \"priceCurrency\": \"schema type not provided\",\n \"variations\": \"schema type not provided\",\n \"groupedProducts\": \"schema type not provided\",\n \"offers\": \"schema type not provided\",\n \"calendar\": \"schema type not provided\",\n \"documents\": \"schema type not provided\",\n \"images\": \"schema type not provided\",\n \"externalDocs\": \"schema type not provided\"\n },\n {\n \"name\": \"schema type not provided\",\n \"sourceOrganization\": \"schema type not provided\",\n \"price\": \"schema type not provided\",\n \"taxPercentage\": \"schema type not provided\",\n \"type\": \"schema type not provided\",\n \"requiresAppointment\": \"schema type not provided\",\n \"id\": \"schema type not provided\",\n \"sku\": \"schema type not provided\",\n \"description\": \"schema type not provided\",\n \"logo\": \"schema type not provided\",\n \"movie\": \"schema type not provided\",\n \"groups\": \"schema type not provided\",\n \"priceCurrency\": \"schema type not provided\",\n \"variations\": \"schema type not provided\",\n \"groupedProducts\": \"schema type not provided\",\n \"offers\": \"schema type not provided\",\n \"calendar\": \"schema type not provided\",\n \"documents\": \"schema type not provided\",\n \"images\": \"schema type not provided\",\n \"externalDocs\": \"schema type not provided\"\n }\n ],\n \"catalogue\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"groups\": [\n \"schema type not provided\",\n \"schema type not provided\"\n ],\n \"products\": [\n \"schema type not provided\",\n \"schema type not provided\"\n ]\n }\n },\n {\n \"sourceOrganization\": \"\",\n \"id\": \"\",\n \"name\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"products\": [\n {\n \"name\": \"schema type not provided\",\n \"sourceOrganization\": \"schema type not provided\",\n \"price\": \"schema type not provided\",\n \"taxPercentage\": \"schema type not provided\",\n \"type\": \"schema type not provided\",\n \"requiresAppointment\": \"schema type not provided\",\n \"id\": \"schema type not provided\",\n \"sku\": \"schema type not provided\",\n \"description\": \"schema type not provided\",\n \"logo\": \"schema type not provided\",\n \"movie\": \"schema type not provided\",\n \"groups\": \"schema type not provided\",\n \"priceCurrency\": \"schema type not provided\",\n \"variations\": \"schema type not provided\",\n \"groupedProducts\": \"schema type not provided\",\n \"offers\": \"schema type not provided\",\n \"calendar\": \"schema type not provided\",\n \"documents\": \"schema type not provided\",\n \"images\": \"schema type not provided\",\n \"externalDocs\": \"schema type not provided\"\n },\n {\n \"name\": \"schema type not provided\",\n \"sourceOrganization\": \"schema type not provided\",\n \"price\": \"schema type not provided\",\n \"taxPercentage\": \"schema type not provided\",\n \"type\": \"schema type not provided\",\n \"requiresAppointment\": \"schema type not provided\",\n \"id\": \"schema type not provided\",\n \"sku\": \"schema type not provided\",\n \"description\": \"schema type not provided\",\n \"logo\": \"schema type not provided\",\n \"movie\": \"schema type not provided\",\n \"groups\": \"schema type not provided\",\n \"priceCurrency\": \"schema type not provided\",\n \"variations\": \"schema type not provided\",\n \"groupedProducts\": \"schema type not provided\",\n \"offers\": \"schema type not provided\",\n \"calendar\": \"schema type not provided\",\n \"documents\": \"schema type not provided\",\n \"images\": \"schema type not provided\",\n \"externalDocs\": \"schema type not provided\"\n }\n ],\n \"catalogue\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"groups\": [\n \"schema type not provided\",\n \"schema type not provided\"\n ],\n \"products\": [\n \"schema type not provided\",\n \"schema type not provided\"\n ]\n }\n }\n]"
+ }
+ ]
+ },
+ {
+ "name": "Creates a Group resource.",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "id": "9c0774e1-deac-474d-8bd5-0accd5f53fcf",
+ "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(\"group\", 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": "{\n\t\"name\": \"My Group\",\n \"sourceOrganization\": \"002851234\",\n \"catalogue\": \"/catalogues/{{catalogue}}\"\n}"
+ },
+ "url": {
+ "raw": "{{baseUrl}}/groups",
+ "host": [
+ "{{baseUrl}}"
+ ],
+ "path": [
+ "groups"
+ ]
+ }
+ },
+ "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": "{\n \"sourceOrganization\": \"\",\n \"products\": [\n {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"price\": \"\",\n \"taxPercentage\": \"\",\n \"type\": \"\",\n \"requiresAppointment\": \"\",\n \"sku\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"movie\": \"\",\n \"groups\": [\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n },\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n }\n ],\n \"priceCurrency\": \"\",\n \"parent\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"price\": \"\",\n \"taxPercentage\": \"\",\n \"type\": \"\",\n \"requiresAppointment\": \"\",\n \"sku\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"movie\": \"\",\n \"groups\": [\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n },\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n }\n ],\n \"priceCurrency\": \"\",\n \"parent\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"price\": \"\",\n \"taxPercentage\": \"\",\n \"type\": \"\",\n \"requiresAppointment\": \"\",\n \"sku\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"movie\": \"\",\n \"groups\": [\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n },\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n }\n ],\n \"priceCurrency\": \"\",\n \"parent\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"price\": \"\",\n \"taxPercentage\": \"\",\n \"type\": \"\",\n \"requiresAppointment\": \"\",\n \"sku\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"movie\": \"\",\n \"groups\": [\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n },\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n }\n ],\n \"priceCurrency\": \"\",\n \"parent\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"price\": \"\",\n \"taxPercentage\": \"\",\n \"type\": \"\",\n \"requiresAppointment\": \"\",\n \"sku\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"movie\": \"\",\n \"groups\": [\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n },\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n }\n ],\n \"priceCurrency\": \"\",\n \"parent\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"price\": \"\",\n \"taxPercentage\": \"\",\n \"type\": \"\",\n \"requiresAppointment\": \"\",\n \"sku\": \"\",\n \"description\": \"\",\n \"logo\": \"\",\n \"movie\": \"\",\n \"groups\": [\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n },\n {\n \"sourceOrganization\": {\n \"value\": \"\"\n },\n \"products\": {\n \"value\": \"\"\n },\n \"catalogue\": {\n \"value\": \"\"\n }\n }\n ],\n \"priceCurrency\": \"\",\n \"parent\": {\n \"name\": \"\",\n \"sourceOrganization\": \"\",\n \"price\": \"\",\n \"taxPercentage\": \"\",\n \"type\": \"\",\n \"requiresAppointment\": \"\",\n \"sku\": \"\",\n \"description\": \"\",\n \"logo\": \"