{ "pipes": [], "interfaces": [ { "name": "Aantekening", "id": "interface-Aantekening-8e28c6bf4ec154e4db100e2ec1ee19fe9c2d50bc429733f8288f32277ce91963f67ec0363028632e71cfb7e05ce25001908c8dd8ee66d732632d67b993c0645b", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export type RegistrationStatus =\n | { tag: 'Geregistreerd'; herregistratieDatum: string } // ISO date\n | { tag: 'Geschorst'; geschorstTot: string; reden: string }\n | { tag: 'Doorgehaald'; doorgehaaldOp: string; reden: string };\n\n/** Just the discriminant — for atoms that only need the label/color. */\nexport type StatusTag = RegistrationStatus['tag'];\n\nexport interface Registration {\n bigNummer: string;\n naam: string;\n beroep: string; // arts, verpleegkundige, apotheker, ...\n registratiedatum: string; // ISO date\n geboortedatum: string;\n status: RegistrationStatus;\n}\n\n/** A note is either a recognised specialism or a plain annotation — a closed set,\n not an open string, so a typo can't slip through. */\nexport type AantekeningType = 'Specialisme' | 'Aantekening';\n\nexport interface Aantekening {\n type: AantekeningType;\n omschrijving: string;\n datum: string;\n}\n", "properties": [ { "name": "datum", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 32 }, { "name": "omschrijving", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 31 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "AantekeningType", "indexKey": "", "optional": false, "description": "", "line": 30 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "AantekeningDto", "id": "interface-AantekeningDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "datum", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 927 }, { "name": "omschrijving", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 926 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 925 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Aanvraag", "id": "interface-Aanvraag-53ef41435da1a133ef1e82f9615dfa958c569d482f40c63208278c47ecf4a2f5b96432a289ce386460dfe4b27d3380ba7c4b8d23cdbbf77bc686df72f5e684c1", "file": "src/app/registratie/domain/aanvraag.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export type AanvraagType = 'registratie' | 'herregistratie' | 'intake';\n\nexport type AanvraagStatus =\n | { tag: 'Concept'; stepIndex: number; stepCount: number }\n | { tag: 'InBehandeling'; referentie: string; manual: boolean } // manual=true → \"wordt handmatig beoordeeld\"\n | { tag: 'Goedgekeurd'; referentie: string }\n | { tag: 'Afgewezen'; referentie: string; reden: string };\n\nexport interface Aanvraag {\n id: string;\n type: AanvraagType;\n status: AanvraagStatus;\n documentIds: string[];\n createdAt: string;\n updatedAt: string;\n submittedAt?: string;\n}\n\n/** Detail adds the opaque wizard snapshot used to resume a Concept. */\nexport interface AanvraagDetail extends Aanvraag {\n draft: unknown;\n}\n", "properties": [ { "name": "createdAt", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 24 }, { "name": "documentIds", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": false, "description": "", "line": 23 }, { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 20 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "AanvraagStatus", "indexKey": "", "optional": false, "description": "", "line": 22 }, { "name": "submittedAt", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 26 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "AanvraagType", "indexKey": "", "optional": false, "description": "", "line": 21 }, { "name": "updatedAt", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 25 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "AanvraagDetail", "id": "interface-AanvraagDetail-53ef41435da1a133ef1e82f9615dfa958c569d482f40c63208278c47ecf4a2f5b96432a289ce386460dfe4b27d3380ba7c4b8d23cdbbf77bc686df72f5e684c1", "file": "src/app/registratie/domain/aanvraag.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export type AanvraagType = 'registratie' | 'herregistratie' | 'intake';\n\nexport type AanvraagStatus =\n | { tag: 'Concept'; stepIndex: number; stepCount: number }\n | { tag: 'InBehandeling'; referentie: string; manual: boolean } // manual=true → \"wordt handmatig beoordeeld\"\n | { tag: 'Goedgekeurd'; referentie: string }\n | { tag: 'Afgewezen'; referentie: string; reden: string };\n\nexport interface Aanvraag {\n id: string;\n type: AanvraagType;\n status: AanvraagStatus;\n documentIds: string[];\n createdAt: string;\n updatedAt: string;\n submittedAt?: string;\n}\n\n/** Detail adds the opaque wizard snapshot used to resume a Concept. */\nexport interface AanvraagDetail extends Aanvraag {\n draft: unknown;\n}\n", "properties": [ { "name": "draft", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 31 } ], "indexSignatures": [], "kind": 172, "description": "

Detail adds the opaque wizard snapshot used to resume a Concept.

\n", "rawdescription": "\nDetail adds the opaque wizard snapshot used to resume a Concept.", "methods": [], "extends": [ "Aanvraag" ] }, { "name": "AanvraagStatusDto", "id": "interface-AanvraagStatusDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "manual", "deprecated": false, "deprecationMessage": "", "type": "boolean | undefined", "indexKey": "", "optional": true, "description": "", "line": 935 }, { "name": "reden", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 936 }, { "name": "referentie", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 934 }, { "name": "stepCount", "deprecated": false, "deprecationMessage": "", "type": "number | undefined", "indexKey": "", "optional": true, "description": "", "line": 933 }, { "name": "stepIndex", "deprecated": false, "deprecationMessage": "", "type": "number | undefined", "indexKey": "", "optional": true, "description": "", "line": 932 }, { "name": "tag", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 931 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Adres", "id": "interface-Adres-07cec46d80a41919e40d0bcb002981627d1a30edb363d64a0a140a8af2c38ad85be5603d88030d0704870800694c5bed9c709ae6891fe83e646e90c1a67cf548", "file": "src/app/registratie/domain/person.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface Adres {\n straat: string;\n postcode: string;\n woonplaats: string;\n}\n\nexport interface Person {\n naam: string;\n geboortedatum: string; // ISO date\n adres: Adres;\n}\n", "properties": [ { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 4 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 3 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 5 } ], "indexSignatures": [], "kind": 172, "description": "

Person identity as supplied by the BRP (Basisregistratie Personen).

\n", "rawdescription": "\nPerson identity as supplied by the BRP (Basisregistratie Personen).", "methods": [], "extends": [] }, { "name": "AdresDto", "id": "interface-AdresDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 941 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 940 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 942 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "AdresValue", "id": "interface-AdresValue-d490884516bc8cb66cff8f7590026db7300f61f6d03a910f4ad9e35b8967f4d0a64c253d42298b5da3747313c5c44e27cf983756b915eec75ced3508b6e3c6d6", "file": "src/app/registratie/ui/address-fields/address-fields.component.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Component, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldComponent } from '@shared/ui/form-field/form-field.component';\nimport { TextInputComponent } from '@shared/ui/text-input/text-input.component';\n\nexport interface AdresValue {\n straat: string;\n postcode: string;\n woonplaats: string;\n}\nexport type AdresErrors = Partial>;\n\n/** Organism: the editable address block (straat / postcode / woonplaats), grouped\n in a fieldset/legend. Pure & presentational — values in via `value`, errors in\n via `errors`, every keystroke out via `fieldChange`. No store, no services, no\n internal state; the container owns the Model and decides what a change means\n (registratie-wizard dispatches SetField; change-request-form sets its props).\n Composes the form-field molecule (×3) so labels/error wiring stay consistent. */\n@Component({\n selector: 'app-address-fields',\n imports: [FormsModule, FormFieldComponent, TextInputComponent],\n styles: [`\n fieldset{border:0;margin:0;padding:0;min-inline-size:0}\n legend{padding:0;font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-end:var(--rhc-space-max-md)}\n app-form-field + app-form-field{display:block;margin-block-start:var(--rhc-space-max-lg)}\n `],\n template: `\n
\n {{ legend() }}\n \n \n \n \n \n \n \n \n \n
\n `,\n})\nexport class AddressFieldsComponent {\n value = input.required();\n errors = input({});\n /** Prefix for field ids/labels — keeps them unique if two blocks ever co-exist. */\n idPrefix = input('adres');\n legend = input($localize`:@@address.legend:Adres`);\n fieldChange = output<{ key: keyof AdresValue; value: string }>();\n}\n", "properties": [ { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 8 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 7 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 9 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Answers", "id": "interface-Answers-609d18870aac1c3c8425f67e97c964d0503c535eea13c6c7e39c96904be318eb571893c8dc545b7005f66f09f7e19bcf73b4f880459bdb63fce0aa7291c838a5", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, ok, err, assertNever } from '@shared/kernel/fp';\nimport { Uren, parseUren } from '@registratie/domain/value-objects/uren';\n\n/**\n * A FIXED 3-step wizard with progressive disclosure. The steps never change in\n * number (always `STEPS`); instead, follow-up questions appear *inline within a\n * step* depending on earlier answers — answer \"buiten Nederland gewerkt? → ja\"\n * and the country/hours questions reveal in the same step; report few hours and\n * the scholing-question reveals inside the 'werk' step. \"Is this field required\n * right now\" is a pure function (`validateStep`/`lageUren`), so it's trivial to\n * test and impossible to get out of sync with the data.\n */\n\nexport type JaNee = 'ja' | 'nee';\n\n/** The three fixed steps. Each step groups one or more questions. */\nexport type StepId = 'buitenland' | 'werk' | 'review';\n\n/** One record carried across every step (and persisted). All optional: the user\n fills it in gradually, and branches may never ask some fields. */\nexport interface Answers {\n buitenlandGewerkt?: JaNee; // Q1\n land?: string; // Q1a — only when buitenlandGewerkt === 'ja'\n buitenlandseUren?: string; // Q1b — only when buitenlandGewerkt === 'ja'\n uren?: string; // Q2 — uren in NL\n scholingGevolgd?: JaNee; // Q3 — only when total hours are below the threshold\n punten?: string; // Q4\n}\n\n/** What we have after the review step parses — guaranteed valid/typed. */\nexport interface ValidIntake {\n werktBuitenland: boolean;\n land?: string;\n buitenlandseUren?: Uren;\n uren: Uren;\n aanvullendeScholing?: boolean;\n punten?: Uren; // only collected when aanvullende scholing is gevolgd (scholingGevolgd === 'ja')\n}\n\n/** Demo fallback only — the real threshold is a SERVER-OWNED policy value fetched\n at runtime (see IntakePolicyDto / SetPolicy). ponytail: default is the offline\n fallback; the server value wins. */\nexport const SCHOLING_THRESHOLD_DEFAULT = 1000;\n\n/** True when NL-hours are low enough that the scholing question must be answered.\n The threshold is passed in (server-owned), not hardcoded. */\nexport function lageUren(a: Answers, scholingThreshold = SCHOLING_THRESHOLD_DEFAULT): boolean {\n const r = parseUren(a.uren ?? '');\n return r.ok && r.value < scholingThreshold;\n}\n\n/** The fixed step list. Number of steps never changes; questions reveal inline. */\nexport const STEPS: StepId[] = ['buitenland', 'werk', 'review'];\n\n/** Per-field error map: one message per question, since a step holds several. */\ntype Errors = Partial>;\n\nexport type IntakeState =\n | { tag: 'Answering'; answers: Answers; cursor: number; errors: Errors; scholingThreshold: number }\n | { tag: 'Submitting'; data: ValidIntake }\n | { tag: 'Submitted'; data: ValidIntake }\n | { tag: 'Failed'; data: ValidIntake; error: string };\n\nexport const initial: IntakeState = { tag: 'Answering', answers: {}, cursor: 0, errors: {}, scholingThreshold: SCHOLING_THRESHOLD_DEFAULT };\n\n/** Which step the cursor currently points at (clamped to the fixed list). */\nexport function currentStep(s: Extract): StepId {\n return STEPS[Math.min(s.cursor, STEPS.length - 1)];\n}\n\n/** Has the user meaningfully started, so it's worth persisting as a Concept?\n (No auto-prefill here — pristine means truly untouched.) */\nexport function hasProgress(s: Extract): boolean {\n return s.cursor > 0 || Object.keys(s.answers).length > 0;\n}\n\n/** Validate every question currently visible in ONE step. Errors keyed per field. */\nfunction validateStep(step: StepId, a: Answers, scholingThreshold: number): Result {\n const errors: Errors = {};\n switch (step) {\n case 'buitenland':\n if (!a.buitenlandGewerkt) errors.buitenlandGewerkt = $localize`:@@validation.maakKeuze:Maak een keuze.`;\n else if (a.buitenlandGewerkt === 'ja') {\n if (!a.land || a.land.trim() === '') errors.land = $localize`:@@validation.land:Vul een land in.`;\n const u = parseUren(a.buitenlandseUren ?? '');\n if (!u.ok) errors.buitenlandseUren = u.error;\n }\n break;\n case 'werk': {\n const u = parseUren(a.uren ?? '');\n if (!u.ok) errors.uren = u.error;\n if (lageUren(a, scholingThreshold) && !a.scholingGevolgd) errors.scholingGevolgd = $localize`:@@validation.maakKeuze:Maak een keuze.`;\n // Nascholingspunten are only asked (and required) when scholing was followed.\n if (a.scholingGevolgd === 'ja') {\n const p = parseUren(a.punten ?? '');\n if (!p.ok) errors.punten = p.error;\n }\n break;\n }\n case 'review':\n break; // review shows a summary; no own fields\n default:\n return assertNever(step);\n }\n return Object.keys(errors).length > 0 ? err(errors) : ok(undefined);\n}\n\n/** Parse the whole questionnaire into a ValidIntake (called on submit). */\nfunction validateAll(a: Answers, scholingThreshold: number): Result {\n const errors: Errors = {};\n for (const step of STEPS) {\n const r = validateStep(step, a, scholingThreshold);\n if (!r.ok) Object.assign(errors, r.error);\n }\n if (Object.keys(errors).length > 0) return err(errors);\n\n const uren = parseUren(a.uren ?? '');\n // validateStep guaranteed uren parses, but keep the compiler happy.\n if (!uren.ok) return err(errors);\n\n const werktBuitenland = a.buitenlandGewerkt === 'ja';\n const buitenland = parseUren(a.buitenlandseUren ?? '');\n // Punten are only collected when aanvullende scholing was gevolgd.\n const punten = a.scholingGevolgd === 'ja' ? parseUren(a.punten ?? '') : undefined;\n return ok({\n werktBuitenland,\n land: werktBuitenland ? a.land : undefined,\n buitenlandseUren: werktBuitenland && buitenland.ok ? buitenland.value : undefined,\n uren: uren.value,\n aanvullendeScholing: lageUren(a, scholingThreshold) ? a.scholingGevolgd === 'ja' : undefined,\n punten: punten?.ok ? punten.value : undefined,\n });\n}\n\nexport function setAnswer(s: IntakeState, key: keyof Answers, value: string): IntakeState {\n if (s.tag !== 'Answering') return s;\n // Steps are fixed, so editing an answer never moves the cursor — it only\n // reveals/hides inline questions within the current step.\n return { ...s, answers: { ...s.answers, [key]: value } };\n}\n\nexport function next(s: IntakeState): IntakeState {\n if (s.tag !== 'Answering') return s;\n const r = validateStep(currentStep(s), s.answers, s.scholingThreshold);\n if (!r.ok) return { ...s, errors: r.error };\n return { ...s, cursor: Math.min(s.cursor + 1, STEPS.length - 1), errors: {} };\n}\n\n/** Apply a server-owned policy value (e.g. the scholing threshold). */\nexport function setPolicy(s: IntakeState, scholingThreshold: number): IntakeState {\n return s.tag === 'Answering' ? { ...s, scholingThreshold } : s;\n}\n\nexport function back(s: IntakeState): IntakeState {\n if (s.tag !== 'Answering' || s.cursor === 0) return s;\n return { ...s, cursor: s.cursor - 1, errors: {} };\n}\n\nexport function submit(s: IntakeState): IntakeState {\n if (s.tag !== 'Answering') return s;\n const r = validateAll(s.answers, s.scholingThreshold);\n return r.ok ? { tag: 'Submitting', data: r.value } : { ...s, errors: r.error };\n}\n\nexport function resolve(s: IntakeState, r: Result): IntakeState {\n if (s.tag !== 'Submitting') return s;\n return r.ok ? { tag: 'Submitted', data: s.data } : { tag: 'Failed', data: s.data, error: r.error };\n}\n\nexport type IntakeMsg =\n | { tag: 'SetAnswer'; key: keyof Answers; value: string }\n | { tag: 'Next' }\n | { tag: 'Back' }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed' }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'SetPolicy'; scholingThreshold: number }\n | { tag: 'Seed'; state: IntakeState };\n\nexport function reduce(s: IntakeState, m: IntakeMsg): IntakeState {\n switch (m.tag) {\n case 'SetAnswer':\n return setAnswer(s, m.key, m.value);\n case 'Next':\n return next(s);\n case 'Back':\n return back(s);\n case 'Submit':\n return submit(s);\n case 'Retry':\n return s.tag === 'Failed' ? { tag: 'Submitting', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Submitting' ? { tag: 'Submitted', data: s.data } : s;\n case 'SubmitFailed':\n return s.tag === 'Submitting' ? { tag: 'Failed', data: s.data, error: m.error } : s;\n case 'SetPolicy':\n return setPolicy(s, m.scholingThreshold);\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "buitenlandGewerkt", "deprecated": false, "deprecationMessage": "", "type": "JaNee", "indexKey": "", "optional": true, "description": "", "line": 22 }, { "name": "buitenlandseUren", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 24 }, { "name": "land", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 23 }, { "name": "punten", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 27 }, { "name": "scholingGevolgd", "deprecated": false, "deprecationMessage": "", "type": "JaNee", "indexKey": "", "optional": true, "description": "", "line": 26 }, { "name": "uren", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 25 } ], "indexSignatures": [], "kind": 172, "description": "

One record carried across every step (and persisted). All optional: the user\nfills it in gradually, and branches may never ask some fields.

\n", "rawdescription": "\nOne record carried across every step (and persisted). All optional: the user\nfills it in gradually, and branches may never ask some fields.", "methods": [], "extends": [] }, { "name": "ApplicationDetailDto", "id": "interface-ApplicationDetailDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "createdAt", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 951 }, { "name": "documentIds", "deprecated": false, "deprecationMessage": "", "type": "string[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 950 }, { "name": "draft", "deprecated": false, "deprecationMessage": "", "type": "any | undefined", "indexKey": "", "optional": true, "description": "", "line": 949 }, { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 946 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "AanvraagStatusDto", "indexKey": "", "optional": true, "description": "", "line": 948 }, { "name": "submittedAt", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 953 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 947 }, { "name": "updatedAt", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 952 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "ApplicationSummaryDto", "id": "interface-ApplicationSummaryDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "createdAt", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 961 }, { "name": "documentIds", "deprecated": false, "deprecationMessage": "", "type": "string[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 960 }, { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 957 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "AanvraagStatusDto", "indexKey": "", "optional": true, "description": "", "line": 959 }, { "name": "submittedAt", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 963 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 958 }, { "name": "updatedAt", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 962 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "BigProfile", "id": "interface-BigProfile-c363e317899ff3cd424b0033c2f57ea14e9617f52401171543b5a82d67046a894a2806afc198812808d0080b3093471e081f7e79b12f2c8c37eef68785e47a43", "file": "src/app/registratie/domain/big-profile.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Registration } from './registration';\nimport { Person } from './person';\n\n/**\n * The view the dashboard/detail render: a registration (from the BIG-register)\n * enriched with person data (from the BRP). It only exists when BOTH sources\n * have loaded — see BigProfileStore, which builds it with map2.\n */\nexport interface BigProfile {\n registration: Registration;\n person: Person;\n}\n", "properties": [ { "name": "person", "deprecated": false, "deprecationMessage": "", "type": "Person", "indexKey": "", "optional": false, "description": "", "line": 11 }, { "name": "registration", "deprecated": false, "deprecationMessage": "", "type": "Registration", "indexKey": "", "optional": false, "description": "", "line": 10 } ], "indexSignatures": [], "kind": 172, "description": "

The view the dashboard/detail render: a registration (from the BIG-register)\nenriched with person data (from the BRP). It only exists when BOTH sources\nhave loaded — see BigProfileStore, which builds it with map2.

\n", "rawdescription": "\n\nThe view the dashboard/detail render: a registration (from the BIG-register)\nenriched with person data (from the BRP). It only exists when BOTH sources\nhave loaded — see BigProfileStore, which builds it with map2.\n", "methods": [], "extends": [] }, { "name": "BreadcrumbItem", "id": "interface-BreadcrumbItem-7a679e70f2a541a876a02dd5999150ec5793ddf654bc902768c5252ea53b8996450966dfd31873d31e9d849880b3d6358b90711564a19f4c228576bc2214e19c", "file": "src/app/shared/layout/breadcrumb/breadcrumb.component.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nexport interface BreadcrumbItem {\n label: string;\n link?: string; // omit on the current (last) page\n}\n\n/** Chrome: breadcrumb navigation. Renders the RHC/Utrecht breadcrumb pattern; the\n last item is the current page (no link, aria-current). Domain-free — the caller\n supplies the trail. */\n@Component({\n selector: 'app-breadcrumb',\n imports: [RouterLink],\n styles: [`\n :host{display:block}\n .list{display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md);align-items:center;list-style:none;margin:0;padding:0;font-size:var(--rhc-text-font-size-sm)}\n .crumb{display:inline-flex;align-items:center;gap:var(--rhc-space-max-md)}\n a{color:var(--rhc-color-foreground-link);text-decoration:underline}\n a:hover{color:var(--rhc-color-foreground-link-hover)}\n .current{color:var(--rhc-color-foreground-subtle)}\n .sep{color:var(--rhc-color-foreground-subtle)}\n /* Inverse: on the blue header bar, everything is white. */\n :host(.inverse) a,\n :host(.inverse) .current,\n :host(.inverse) .sep { color: var(--rhc-color-foreground-on-primary); }\n `],\n template: `\n \n `,\n})\nexport class BreadcrumbComponent {\n items = input.required();\n}\n", "properties": [ { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 5 }, { "name": "link", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 6 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "BrpAddressDto", "id": "interface-BrpAddressDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "adres", "deprecated": false, "deprecationMessage": "", "type": "AdresDto", "indexKey": "", "optional": true, "description": "", "line": 968 }, { "name": "gevonden", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": true, "description": "", "line": 967 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "BrpAddressDto", "id": "interface-BrpAddressDto-029e98a059f908b1aab86b91327ec0c2a409efb766692f042935997cd36e685859ecf375e579b912496b2dac205dfd2c751f3a301b7486f0da9cb04cda7c704f-1", "file": "src/app/registratie/contracts/brp-address.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface BrpAddressDto {\n gevonden: boolean;\n adres?: { straat: string; postcode: string; woonplaats: string };\n}\n", "properties": [ { "name": "adres", "deprecated": false, "deprecationMessage": "", "type": "literal type", "indexKey": "", "optional": true, "description": "", "line": 14 }, { "name": "gevonden", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 13 } ], "indexSignatures": [], "kind": 172, "description": "

WIRE CONTRACT for the BRP address lookup ("BFF-lite" — one screen-shaped call).

\n

In production this is GENERATED from the OpenAPI/TypeSpec spec and served by our\nown backend, which talks to the BRP behind an adapter. The frontend never sees\nthe BRP's own wire format. See docs/architecture/0001-bff-lite-decision-dtos.md.

\n

"Geen adres bekend" is a first-class outcome (gevonden: false), not an error —\nthe wizard falls back to manual entry (PRD §7). Slice 1 ships only the happy\npath (gevonden: true).

\n", "rawdescription": "\n\nWIRE CONTRACT for the BRP address lookup (\"BFF-lite\" — one screen-shaped call).\n\nIn production this is GENERATED from the OpenAPI/TypeSpec spec and served by our\nown backend, which talks to the BRP behind an adapter. The frontend never sees\nthe BRP's own wire format. See docs/architecture/0001-bff-lite-decision-dtos.md.\n\n\"Geen adres bekend\" is a first-class outcome (`gevonden: false`), not an error —\nthe wizard falls back to manual entry (PRD §7). Slice 1 ships only the happy\npath (gevonden: true).\n", "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "BrpAddressDto-1" }, { "name": "ChangeRequestRequest", "id": "interface-ChangeRequestRequest-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 973 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 972 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 974 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "CreateApplicationRequest", "id": "interface-CreateApplicationRequest-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 978 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Crumb", "id": "interface-Crumb-88fb29ef3974e1a6599728a6d40b6bafed2354ec6dde840b2d2de49ba648633c1da50552c711f9fd85f8f0985e4ae96627c05ab2890bf0f4c1894ed28e0f0797", "file": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { BreadcrumbItem } from './breadcrumb.component';\n\n/** Route → breadcrumb label + parent. The app has a small fixed route set\n (see app.routes.ts), so a static map is enough — no per-page wiring.\n ponytail: static map, not a breadcrumb service; revisit if routes go dynamic. */\ninterface Crumb { label: string; parent?: string }\n\nconst ROUTES: Record = {\n '/dashboard': { label: $localize`:@@crumb.dashboard:Mijn overzicht` },\n '/registratie': { label: $localize`:@@crumb.registratie:Mijn gegevens`, parent: '/dashboard' },\n '/registreren': { label: $localize`:@@crumb.registreren:Inschrijven`, parent: '/dashboard' },\n '/herregistratie': { label: $localize`:@@crumb.herregistratie:Herregistratie`, parent: '/dashboard' },\n '/intake': { label: $localize`:@@crumb.intake:Herregistratie-intake`, parent: '/dashboard' },\n '/concepts': { label: $localize`:@@crumb.concepts:Functionele patronen`, parent: '/dashboard' },\n};\n\n/** Build the breadcrumb trail for a router url (query/fragment stripped).\n Returns [] for unknown routes (e.g. /login) so the bar can hide itself. */\nexport function trailFor(url: string): BreadcrumbItem[] {\n const path = url.split(/[?#]/)[0];\n const trail: BreadcrumbItem[] = [];\n let cursor: string | undefined = path;\n while (cursor) {\n const node: Crumb | undefined = ROUTES[cursor];\n if (!node) break;\n trail.unshift({ label: node.label, link: cursor });\n cursor = node.parent;\n }\n // The current (last) page is not a link.\n if (trail.length) delete trail[trail.length - 1].link;\n return trail;\n}\n", "properties": [ { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 6 }, { "name": "parent", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 6 } ], "indexSignatures": [], "kind": 172, "description": "

Route → breadcrumb label + parent. The app has a small fixed route set\n(see app.routes.ts), so a static map is enough — no per-page wiring.\nponytail: static map, not a breadcrumb service; revisit if routes go dynamic.

\n", "rawdescription": "\nRoute → breadcrumb label + parent. The app has a small fixed route set\n(see app.routes.ts), so a static map is enough — no per-page wiring.\nponytail: static map, not a breadcrumb service; revisit if routes go dynamic.", "methods": [], "extends": [] }, { "name": "DashboardView", "id": "interface-DashboardView-b39e266ec8fabdaddad87f1e15a5b1b86e45d84ac2c95028b4e676c2eb425fd675c77383c3d4f8f88f4a072f3eb88a954eb0f8755597224ebef59da18d24fda0", "file": "src/app/registratie/contracts/dashboard-view.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Registration } from '@registratie/domain/registration';\nimport { Person } from '@registratie/domain/person';\nimport { BigProfile } from '@registratie/domain/big-profile';\n\n/**\n * WIRE CONTRACT for the dashboard screen — the \"BFF-lite\" response.\n *\n * In production this type is GENERATED from the OpenAPI/TypeSpec spec (one source\n * of truth for both sides), and the `decisions` block is computed BY THE BACKEND\n * — never recomputed on the client. The frontend renders decisions; it does not\n * own the rules. See docs/architecture/0001-bff-lite-decision-dtos.md.\n *\n * One screen-shaped call replaces the previous three (BIG-register + BRP + …),\n * so the page always sees one consistent snapshot instead of three independently\n * loading/erroring resources.\n */\nexport interface DashboardViewDto {\n registration: Registration;\n person: Person;\n decisions: HerregistratieDecisions;\n}\n\n/** Server-computed decisions. The eligibility rule lives on the backend; the\n optional reason lets the UI explain itself without knowing the rule. */\nexport interface HerregistratieDecisions {\n eligibleForHerregistratie: boolean;\n herregistratieReason?: string;\n}\n\n/** The parsed, frontend-side view (DTO mapped onto our own domain model). Keeping\n this distinct from DashboardViewDto is the decoupling seam: the wire shape can\n change without the FE domain following, and vice-versa. */\nexport interface DashboardView {\n profile: BigProfile;\n decisions: HerregistratieDecisions;\n}\n", "properties": [ { "name": "decisions", "deprecated": false, "deprecationMessage": "", "type": "HerregistratieDecisions", "indexKey": "", "optional": false, "description": "", "line": 35 }, { "name": "profile", "deprecated": false, "deprecationMessage": "", "type": "BigProfile", "indexKey": "", "optional": false, "description": "", "line": 34 } ], "indexSignatures": [], "kind": 172, "description": "

The parsed, frontend-side view (DTO mapped onto our own domain model). Keeping\nthis distinct from DashboardViewDto is the decoupling seam: the wire shape can\nchange without the FE domain following, and vice-versa.

\n", "rawdescription": "\nThe parsed, frontend-side view (DTO mapped onto our own domain model). Keeping\nthis distinct from DashboardViewDto is the decoupling seam: the wire shape can\nchange without the FE domain following, and vice-versa.", "methods": [], "extends": [] }, { "name": "DashboardViewDto", "id": "interface-DashboardViewDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "decisions", "deprecated": false, "deprecationMessage": "", "type": "HerregistratieDecisionsDto", "indexKey": "", "optional": true, "description": "", "line": 984 }, { "name": "person", "deprecated": false, "deprecationMessage": "", "type": "PersonDto", "indexKey": "", "optional": true, "description": "", "line": 983 }, { "name": "registration", "deprecated": false, "deprecationMessage": "", "type": "RegistrationDto", "indexKey": "", "optional": true, "description": "", "line": 982 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "DashboardViewDto", "id": "interface-DashboardViewDto-b39e266ec8fabdaddad87f1e15a5b1b86e45d84ac2c95028b4e676c2eb425fd675c77383c3d4f8f88f4a072f3eb88a954eb0f8755597224ebef59da18d24fda0-1", "file": "src/app/registratie/contracts/dashboard-view.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Registration } from '@registratie/domain/registration';\nimport { Person } from '@registratie/domain/person';\nimport { BigProfile } from '@registratie/domain/big-profile';\n\n/**\n * WIRE CONTRACT for the dashboard screen — the \"BFF-lite\" response.\n *\n * In production this type is GENERATED from the OpenAPI/TypeSpec spec (one source\n * of truth for both sides), and the `decisions` block is computed BY THE BACKEND\n * — never recomputed on the client. The frontend renders decisions; it does not\n * own the rules. See docs/architecture/0001-bff-lite-decision-dtos.md.\n *\n * One screen-shaped call replaces the previous three (BIG-register + BRP + …),\n * so the page always sees one consistent snapshot instead of three independently\n * loading/erroring resources.\n */\nexport interface DashboardViewDto {\n registration: Registration;\n person: Person;\n decisions: HerregistratieDecisions;\n}\n\n/** Server-computed decisions. The eligibility rule lives on the backend; the\n optional reason lets the UI explain itself without knowing the rule. */\nexport interface HerregistratieDecisions {\n eligibleForHerregistratie: boolean;\n herregistratieReason?: string;\n}\n\n/** The parsed, frontend-side view (DTO mapped onto our own domain model). Keeping\n this distinct from DashboardViewDto is the decoupling seam: the wire shape can\n change without the FE domain following, and vice-versa. */\nexport interface DashboardView {\n profile: BigProfile;\n decisions: HerregistratieDecisions;\n}\n", "properties": [ { "name": "decisions", "deprecated": false, "deprecationMessage": "", "type": "HerregistratieDecisions", "indexKey": "", "optional": false, "description": "", "line": 20 }, { "name": "person", "deprecated": false, "deprecationMessage": "", "type": "Person", "indexKey": "", "optional": false, "description": "", "line": 19 }, { "name": "registration", "deprecated": false, "deprecationMessage": "", "type": "Registration", "indexKey": "", "optional": false, "description": "", "line": 18 } ], "indexSignatures": [], "kind": 172, "description": "

WIRE CONTRACT for the dashboard screen — the "BFF-lite" response.

\n

In production this type is GENERATED from the OpenAPI/TypeSpec spec (one source\nof truth for both sides), and the decisions block is computed BY THE BACKEND\n— never recomputed on the client. The frontend renders decisions; it does not\nown the rules. See docs/architecture/0001-bff-lite-decision-dtos.md.

\n

One screen-shaped call replaces the previous three (BIG-register + BRP + …),\nso the page always sees one consistent snapshot instead of three independently\nloading/erroring resources.

\n", "rawdescription": "\n\nWIRE CONTRACT for the dashboard screen — the \"BFF-lite\" response.\n\nIn production this type is GENERATED from the OpenAPI/TypeSpec spec (one source\nof truth for both sides), and the `decisions` block is computed BY THE BACKEND\n— never recomputed on the client. The frontend renders decisions; it does not\nown the rules. See docs/architecture/0001-bff-lite-decision-dtos.md.\n\nOne screen-shaped call replaces the previous three (BIG-register + BRP + …),\nso the page always sees one consistent snapshot instead of three independently\nloading/erroring resources.\n", "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "DashboardViewDto-1" }, { "name": "DocumentCategory", "id": "interface-DocumentCategory-cd384c135d0cf4c44c9dd96f8fcafc852f27015dbdd1ed429e118bb2db250d6e0782800ab04ef957e392a5bb408ce5a9a8c8184a696dc2130d513426479e88c7", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { assertNever } from '@shared/kernel/fp';\n\n/**\n * Pure upload domain (no Angular). Reusable across wizards: the host wizard folds\n * `UploadState` into its Model and delegates upload `Msg`s to `reduceUpload`.\n * Illegal states are unrepresentable by construction; the few transitions a union\n * can't express (channel↔upload exclusivity, single-file categories) are enforced\n * here in the reducer. Effects live in the shell (upload-shell.service.ts).\n */\n\nexport type UploadStatus =\n | { type: 'idle' }\n | { type: 'queued' }\n | { type: 'uploading'; progressPct: number }\n | { type: 'complete'; documentId: string }\n | { type: 'failed'; reason: string }\n | { type: 'deleting'; documentId: string } // carries the id so a failed delete can revert\n | { type: 'deleted' };\n\nexport interface Upload {\n localId: string; // client-generated UUID; the sync tag / status key\n categoryId: string;\n fileName: string;\n fileSizeMb: number;\n status: UploadStatus;\n backgroundSync: boolean;\n}\n\nexport type DeliveryChannel = 'digital' | 'post';\n\nexport interface DocumentCategory {\n categoryId: string;\n label: string;\n description: string;\n required: boolean;\n acceptedTypes: string[];\n maxSizeMb: number;\n multiple: boolean;\n allowPostDelivery: boolean;\n}\n\nexport interface UploadState {\n categories: DocumentCategory[];\n uploads: Upload[];\n deliveryChannel: Record; // categoryId → channel; default 'digital'\n rejections: Record; // categoryId → client-side validation message (transient)\n backgroundSyncAvailable: boolean;\n categoriesError?: string;\n}\n\nexport const initialUpload: UploadState = {\n categories: [],\n uploads: [],\n deliveryChannel: {},\n rejections: {},\n backgroundSyncAvailable: false,\n};\n\nexport type UploadMsg =\n | { type: 'CategoriesLoaded'; categories: DocumentCategory[] }\n | { type: 'CategoriesLoadFailed'; reason: string }\n | { type: 'BackgroundSyncAvailability'; available: boolean }\n | { type: 'FileSelected'; categoryId: string; localId: string; fileName: string; fileSizeMb: number }\n | { type: 'FileRejected'; categoryId: string; reason: 'type' | 'size' | 'multiple' }\n | { type: 'UploadQueued'; localId: string; backgroundSync: boolean }\n | { type: 'UploadProgress'; localId: string; progressPct: number }\n | { type: 'UploadComplete'; localId: string; documentId: string }\n | { type: 'UploadFailed'; localId: string; reason: string }\n | { type: 'UploadRetried'; localId: string }\n | { type: 'UploadRemoved'; localId: string }\n | { type: 'UploadDeleteRequested'; localId: string; documentId: string }\n | { type: 'UploadDeleting'; localId: string }\n | { type: 'UploadDeleteComplete'; localId: string }\n | { type: 'UploadDeleteFailed'; localId: string; reason: string }\n | { type: 'DeliveryChannelChanged'; categoryId: string; channel: DeliveryChannel }\n | {\n type: 'BackgroundUploadsReturned';\n results: Array<{ localId: string } & ({ success: true; documentId: string } | { success: false; reason: string })>;\n };\n\nconst REJECTION_MESSAGES: Record<'type' | 'size' | 'multiple', string> = {\n type: $localize`:@@upload.reject.type:Dit bestandstype is niet toegestaan voor deze categorie.`,\n size: $localize`:@@upload.reject.size:Dit bestand is te groot.`,\n multiple: $localize`:@@upload.reject.multiple:U kunt voor deze categorie maar één bestand uploaden.`,\n};\n\nconst ACTIVE: ReadonlyArray = ['queued', 'uploading', 'complete'];\n\n/** A required category is satisfied by an initiated upload OR a post-delivery choice. */\nexport function categorySatisfied(s: UploadState, categoryId: string): boolean {\n if (s.deliveryChannel[categoryId] === 'post') return true;\n return s.uploads.some((u) => u.categoryId === categoryId && ACTIVE.includes(u.status.type));\n}\n\nexport function requiredCategoriesSatisfied(s: UploadState): boolean {\n return s.categories.filter((c) => c.required).every((c) => categorySatisfied(s, c.categoryId));\n}\n\n/**\n * FE format-validation (never authority — the server re-validates). Returns the\n * rejection reason for one file, or null if it passes the category's type/size.\n */\nexport function rejectReason(cat: DocumentCategory, file: { type: string; sizeMb: number }): 'type' | 'size' | null {\n if (cat.acceptedTypes.length > 0 && !cat.acceptedTypes.includes(file.type)) return 'type';\n if (cat.maxSizeMb > 0 && file.sizeMb > cat.maxSizeMb) return 'size';\n return null;\n}\n\n/** Map one upload's status, leaving the rest of the list untouched. */\nfunction mapUpload(s: UploadState, localId: string, f: (u: Upload) => Upload): UploadState {\n return { ...s, uploads: s.uploads.map((u) => (u.localId === localId ? f(u) : u)) };\n}\n\nconst find = (s: UploadState, localId: string) => s.uploads.find((u) => u.localId === localId);\nconst categoryOf = (s: UploadState, categoryId: string) => s.categories.find((c) => c.categoryId === categoryId);\n\nexport function reduceUpload(s: UploadState, m: UploadMsg): UploadState {\n switch (m.type) {\n case 'CategoriesLoaded': {\n const deliveryChannel = { ...s.deliveryChannel };\n for (const c of m.categories) deliveryChannel[c.categoryId] ??= 'digital';\n return { ...s, categories: m.categories, deliveryChannel, categoriesError: undefined };\n }\n case 'CategoriesLoadFailed':\n return { ...s, categoriesError: m.reason };\n case 'BackgroundSyncAvailability':\n return { ...s, backgroundSyncAvailable: m.available };\n\n case 'FileSelected': {\n // Reject at dispatch: unknown category, or a category set to post-delivery.\n if (!categoryOf(s, m.categoryId) || s.deliveryChannel[m.categoryId] === 'post') return s;\n const cat = categoryOf(s, m.categoryId)!;\n // Single-file categories: a new selection replaces any existing upload.\n const uploads = cat.multiple ? s.uploads : s.uploads.filter((u) => u.categoryId !== m.categoryId);\n const next: Upload = {\n localId: m.localId,\n categoryId: m.categoryId,\n fileName: m.fileName,\n fileSizeMb: m.fileSizeMb,\n status: { type: 'queued' },\n backgroundSync: false,\n };\n const { [m.categoryId]: _cleared, ...rejections } = s.rejections;\n return { ...s, uploads: [...uploads, next], rejections };\n }\n case 'FileRejected':\n return { ...s, rejections: { ...s.rejections, [m.categoryId]: REJECTION_MESSAGES[m.reason] } };\n\n case 'UploadQueued':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'queued' }, backgroundSync: m.backgroundSync }));\n case 'UploadProgress':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'uploading', progressPct: m.progressPct } }));\n case 'UploadComplete':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'complete', documentId: m.documentId } }));\n case 'UploadFailed':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'failed', reason: m.reason } }));\n case 'UploadRetried':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'queued' } }));\n\n case 'UploadRemoved':\n return { ...s, uploads: s.uploads.filter((u) => u.localId !== m.localId) };\n\n case 'UploadDeleteRequested':\n case 'UploadDeleting':\n // Both mark the in-flight delete; keep the documentId so a failure can revert.\n return mapUpload(s, m.localId, (u) => {\n const documentId = u.status.type === 'complete' ? u.status.documentId\n : u.status.type === 'deleting' ? u.status.documentId : '';\n return { ...u, status: { type: 'deleting', documentId } };\n });\n case 'UploadDeleteComplete':\n return { ...s, uploads: s.uploads.filter((u) => u.localId !== m.localId) };\n case 'UploadDeleteFailed':\n return mapUpload(s, m.localId, (u) =>\n u.status.type === 'deleting' ? { ...u, status: { type: 'complete', documentId: u.status.documentId } } : u);\n\n case 'DeliveryChannelChanged': {\n const cat = categoryOf(s, m.categoryId);\n // Reject post for a category that doesn't permit it.\n if (m.channel === 'post' && (!cat || !cat.allowPostDelivery)) return s;\n const deliveryChannel = { ...s.deliveryChannel, [m.categoryId]: m.channel };\n // Switching to post removes that category's uploads; switching to digital starts clean.\n const uploads = s.uploads.filter((u) => u.categoryId !== m.categoryId);\n return { ...s, deliveryChannel, uploads };\n }\n\n case 'BackgroundUploadsReturned': {\n let next = s;\n for (const r of m.results) {\n next = mapUpload(next, r.localId, (u) => ({\n ...u,\n status: r.success ? { type: 'complete', documentId: r.documentId } : { type: 'failed', reason: r.reason },\n }));\n }\n return next;\n }\n\n default:\n return assertNever(m);\n }\n}\n\n/** The submit payload fragment: digital docs carry their documentId, post categories the channel. */\nexport function deliveryRefs(s: UploadState): Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }> {\n const refs: Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }> = [];\n for (const c of s.categories) {\n if (s.deliveryChannel[c.categoryId] === 'post') {\n refs.push({ categoryId: c.categoryId, channel: 'post' });\n } else {\n for (const u of s.uploads) {\n if (u.categoryId === c.categoryId && u.status.type === 'complete') {\n refs.push({ categoryId: c.categoryId, channel: 'digital', documentId: u.status.documentId });\n }\n }\n }\n }\n return refs;\n}\n\n/** Used by the shell to find what to poll on return: still-in-flight uploads. */\nexport const inFlight = (s: UploadState): Upload[] =>\n s.uploads.filter((u) => u.status.type === 'queued' || u.status.type === 'uploading');\n", "properties": [ { "name": "acceptedTypes", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": false, "description": "", "line": 36 }, { "name": "allowPostDelivery", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 39 }, { "name": "categoryId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 32 }, { "name": "description", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 34 }, { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 33 }, { "name": "maxSizeMb", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 37 }, { "name": "multiple", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 38 }, { "name": "required", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 35 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "DocumentCategoryDto", "id": "interface-DocumentCategoryDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "acceptedTypes", "deprecated": false, "deprecationMessage": "", "type": "string[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 992 }, { "name": "allowPostDelivery", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": true, "description": "", "line": 995 }, { "name": "categoryId", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 988 }, { "name": "description", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 990 }, { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 989 }, { "name": "maxSizeMb", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": true, "description": "", "line": 993 }, { "name": "multiple", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": true, "description": "", "line": 994 }, { "name": "required", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": true, "description": "", "line": 991 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "DocumentRefDto", "id": "interface-DocumentRefDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "categoryId", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 999 }, { "name": "channel", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1000 }, { "name": "documentId", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1001 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Draft", "id": "interface-Draft-d3a799f0e07d1170099acce3acff423674ca7f22594847e870e6e02647d914a5263109f13f637ef9de59ab53bd41d63d7e8b60d6d14428a693efa5576b933439", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, assertNever } from '@shared/kernel/fp';\nimport { Uren, parseUren } from '@registratie/domain/value-objects/uren';\nimport {\n UploadState,\n UploadMsg,\n initialUpload,\n reduceUpload,\n requiredCategoriesSatisfied,\n deliveryRefs,\n} from '@shared/upload/upload.machine';\n\n/** What the user is typing (raw, possibly invalid). */\nexport interface Draft {\n uren: string;\n jaren: string;\n punten: string;\n}\n\nexport type StepErrors = Partial>;\n\n/** What we have AFTER parsing — branded/typed, guaranteed valid. */\nexport interface Valid {\n uren: Uren;\n jaren: number;\n punten: number;\n documents: Array<{ categoryId: string; channel: 'digital' | 'post'; documentId?: string }>;\n}\n\n/**\n * The whole wizard as one tagged union. `step` and `errors` exist ONLY while\n * Editing; Submitting/Submitted/Failed carry a `Valid` payload and nothing else.\n * So \"submitting while a field is invalid\" or \"showing the success screen with\n * errors set\" are unrepresentable — the bug class is gone by construction.\n */\nexport type WizardState =\n | { tag: 'Editing'; step: 1 | 2 | 3; draft: Draft; errors: StepErrors; upload: UploadState }\n | { tag: 'Submitting'; data: Valid }\n | { tag: 'Submitted'; data: Valid }\n | { tag: 'Failed'; data: Valid; error: string };\n\nexport const initial: WizardState = { tag: 'Editing', step: 1, draft: { uren: '', jaren: '', punten: '' }, errors: {}, upload: initialUpload };\n\n/** Has the user meaningfully started, so it's worth persisting as a Concept? */\nexport function hasProgress(s: Extract): boolean {\n return s.step > 1 || !!s.draft.uren || !!s.draft.jaren || !!s.draft.punten || deliveryRefs(s.upload).some((r) => r.channel === 'digital' && !!r.documentId);\n}\n\n/** Parse every field; on success hand back a Valid, else the per-field errors. */\nfunction validate(draft: Draft, upload: UploadState): Result {\n const uren = parseUren(draft.uren);\n const jaren = parseUren(draft.jaren);\n const punten = parseUren(draft.punten);\n const errors: StepErrors = {};\n if (!uren.ok) errors.uren = uren.error;\n if (!jaren.ok) errors.jaren = jaren.error;\n if (!punten.ok) errors.punten = punten.error;\n if (!requiredCategoriesSatisfied(upload)) {\n errors.documenten = $localize`:@@validation.documenten:Lever de verplichte documenten aan (upload of kies \"per post nasturen\").`;\n }\n if (uren.ok && jaren.ok && punten.ok && !errors.documenten) {\n return { ok: true, value: { uren: uren.value, jaren: jaren.value, punten: punten.value, documents: deliveryRefs(upload) } };\n }\n return { ok: false, error: errors };\n}\n\n/** Advance one step, gating on that step's fields. Illegal elsewhere = no-op. */\nexport function next(s: WizardState): WizardState {\n if (s.tag !== 'Editing') return s;\n const errors: StepErrors = {};\n if (s.step === 1) {\n const uren = parseUren(s.draft.uren);\n const jaren = parseUren(s.draft.jaren);\n if (!uren.ok) errors.uren = uren.error;\n if (!jaren.ok) errors.jaren = jaren.error;\n return Object.keys(errors).length === 0 ? { ...s, step: 2, errors: {} } : { ...s, errors };\n }\n if (s.step === 2) {\n const punten = parseUren(s.draft.punten);\n if (!punten.ok) errors.punten = punten.error;\n return punten.ok ? { ...s, step: 3, errors: {} } : { ...s, errors };\n }\n return s;\n}\n\nexport function back(s: WizardState): WizardState {\n if (s.tag !== 'Editing' || s.step === 1) return s;\n return { ...s, step: (s.step - 1) as 1 | 2, errors: {} };\n}\n\n/** Step 3 submit: parse everything + require documents; Submitting only with Valid. */\nexport function submit(s: WizardState): WizardState {\n if (s.tag !== 'Editing' || s.step !== 3) return s;\n const result = validate(s.draft, s.upload);\n return result.ok ? { tag: 'Submitting', data: result.value } : { ...s, errors: result.error };\n}\n\n/** Route an upload sub-message through the pure upload reducer (Editing only). */\nexport function upload(s: WizardState, msg: UploadMsg): WizardState {\n if (s.tag !== 'Editing') return s;\n return { ...s, upload: reduceUpload(s.upload, msg) };\n}\n\n/** Resolve the async submit. Only meaningful while Submitting. */\nexport function resolve(s: WizardState, r: Result): WizardState {\n if (s.tag !== 'Submitting') return s;\n return r.ok ? { tag: 'Submitted', data: s.data } : { tag: 'Failed', data: s.data, error: r.error };\n}\n\n/** Update one draft field while editing; ignored in any other state. */\nexport function setField(s: WizardState, key: keyof Draft, value: string): WizardState {\n if (s.tag !== 'Editing') return s;\n return { ...s, draft: { ...s.draft, [key]: value } };\n}\n\n/**\n * Every event that can happen to the wizard, as one message type. The component\n * sends a WizardMsg; `reduce` decides the next state. This is the Elm\n * Model+Msg+update pattern: ONE pure function describes all state changes.\n */\nexport type WizardMsg =\n | { tag: 'SetField'; key: keyof Draft; value: string }\n | { tag: 'Next' }\n | { tag: 'Back' }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed' }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'Upload'; msg: UploadMsg }\n | { tag: 'Seed'; state: WizardState }; // mount a specific state (stories/showcase)\n\nexport function reduce(s: WizardState, m: WizardMsg): WizardState {\n switch (m.tag) {\n case 'SetField':\n return setField(s, m.key, m.value);\n case 'Next':\n return next(s);\n case 'Back':\n return back(s);\n case 'Submit':\n return submit(s);\n case 'Retry':\n return s.tag === 'Failed' ? { tag: 'Submitting', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Submitting' ? { tag: 'Submitted', data: s.data } : s;\n case 'SubmitFailed':\n return s.tag === 'Submitting' ? { tag: 'Failed', data: s.data, error: m.error } : s;\n case 'Upload':\n return upload(s, m.msg);\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "jaren", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 15 }, { "name": "punten", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 16 }, { "name": "uren", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 14 } ], "indexSignatures": [], "kind": 172, "description": "

What the user is typing (raw, possibly invalid).

\n", "rawdescription": "\nWhat the user is typing (raw, possibly invalid).", "methods": [], "extends": [] }, { "name": "Draft", "id": "interface-Draft-69e87ea9a6c36bd372087191f1524450d62f799934711812731fbbd8f034a9e92b7928082471c429b82990c34c47b84b6493735cb994ec6fdfb81b200e990467-1", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, assertNever } from '@shared/kernel/fp';\nimport { Postcode, parsePostcode } from '@registratie/domain/value-objects/postcode';\n\n/** What the user is typing (raw, possibly invalid). */\nexport interface Draft {\n straat: string;\n postcode: string;\n woonplaats: string;\n}\n\n/** After parsing — postcode is the branded type, so downstream can't get a raw one. */\nexport interface Valid {\n straat: string;\n postcode: Postcode;\n woonplaats: string;\n}\n\nexport type Errors = Partial>;\n\n/**\n * The change-request (adreswijziging) form as one tagged union — the SAME idiom\n * as the wizards, just single-step. `draft`/`errors` exist only while Editing;\n * Submitting/Submitted/Failed carry the parsed `Valid`. Illegal states (submitting\n * an invalid draft, a success screen with errors) are unrepresentable.\n */\nexport type State =\n | { tag: 'Editing'; draft: Draft; errors: Errors }\n | { tag: 'Submitting'; data: Valid }\n | { tag: 'Submitted'; data: Valid; referentie: string }\n | { tag: 'Failed'; data: Valid; error: string };\n\nexport const initial: State = {\n tag: 'Editing',\n draft: { straat: '', postcode: '', woonplaats: '' },\n errors: {},\n};\n\n/** Parse via the value objects; on success hand back a Valid, else per-field errors. */\nfunction validate(draft: Draft): Result {\n const straat = draft.straat.trim();\n const postcode = parsePostcode(draft.postcode);\n const errors: Errors = {};\n if (!straat) errors.straat = $localize`:@@validation.straat:Vul straat en huisnummer in.`;\n if (!postcode.ok) errors.postcode = postcode.error;\n if (straat && postcode.ok) {\n return { ok: true, value: { straat, postcode: postcode.value, woonplaats: draft.woonplaats.trim() } };\n }\n return { ok: false, error: errors };\n}\n\nexport type Msg =\n | { tag: 'SetField'; key: keyof Draft; value: string }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed'; referentie: string }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'Reset' }\n | { tag: 'Seed'; state: State }; // mount a specific state (stories/tests)\n\nexport function reduce(s: State, m: Msg): State {\n switch (m.tag) {\n case 'SetField':\n return s.tag === 'Editing' ? { ...s, draft: { ...s.draft, [m.key]: m.value } } : s;\n case 'Submit': {\n if (s.tag !== 'Editing') return s;\n const r = validate(s.draft);\n return r.ok ? { tag: 'Submitting', data: r.value } : { ...s, errors: r.error };\n }\n case 'Retry':\n return s.tag === 'Failed' ? { tag: 'Submitting', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Submitting' ? { tag: 'Submitted', data: s.data, referentie: m.referentie } : s;\n case 'SubmitFailed':\n return s.tag === 'Submitting' ? { tag: 'Failed', data: s.data, error: m.error } : s;\n case 'Reset':\n return initial;\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 7 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 6 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 8 } ], "indexSignatures": [], "kind": 172, "description": "

What the user is typing (raw, possibly invalid).

\n", "rawdescription": "\nWhat the user is typing (raw, possibly invalid).", "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "Draft-1" }, { "name": "Draft", "id": "interface-Draft-b7c3c5d493aa141ca68cb964e63408db7152b07336b239864d3c430b84d8eb3e650d1a3abaf3fda253444af942c45f86138a5d8229832d49bda94eec35c33546-2", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, ok, err, assertNever } from '@shared/kernel/fp';\nimport { Postcode, parsePostcode } from '@registratie/domain/value-objects/postcode';\nimport { Email, parseEmail } from '@registratie/domain/value-objects/email';\nimport {\n UploadState,\n UploadMsg,\n DeliveryChannel,\n initialUpload,\n reduceUpload,\n requiredCategoriesSatisfied,\n deliveryRefs,\n} from '@shared/upload/upload.machine';\n\n/**\n * A FIXED 3-step registration wizard. The steps never change in number (always\n * `STEPS`): (1) adres + correspondentievoorkeur, (2) beroep o.b.v. diploma,\n * (3) controle & indienen. Follow-up questions appear *inline within a step*\n * (e.g. choosing 'email' reveals the e-mail field). \"Is this field required\n * right now\" is a pure function (`validateStep`), so it is trivial to test and\n * impossible to get out of sync with the data. Invariants live here, not in the\n * UI: the wizard reaches `Indienen` only when a complete `ValidRegistratie` parses.\n */\n\nexport type StepId = 'adres' | 'beroep' | 'controle';\n\n/** The fixed step list. Number of steps never changes; questions reveal inline. */\nexport const STEPS: StepId[] = ['adres', 'beroep', 'controle'];\n\n/** Where a piece of data came from — recorded on the aggregate (PRD §5). */\nexport type AdresHerkomst = 'brp' | 'handmatig';\nexport type DiplomaHerkomst = 'duo' | 'handmatig';\nexport type Correspondentie = 'email' | 'post';\n\n/** One record carried across every step (and persisted). All optional: the user\n fills it in gradually. Adres fields are kept flat so one `SetField` message\n serves them all (mirrors the intake machine). */\nexport interface Draft {\n straat?: string;\n postcode?: string;\n woonplaats?: string;\n adresHerkomst?: AdresHerkomst;\n correspondentie?: Correspondentie;\n email?: string;\n diplomaId?: string;\n diplomaHerkomst?: DiplomaHerkomst;\n beroep?: string; // DERIVED from the chosen DUO diploma (or declared for a manual one)\n vraagIds?: string[]; // ids of the policy questions that apply to the chosen diploma\n antwoorden: Record; // geldigheidsantwoorden, keyed by question id\n}\n\n/** What we have after the controle step parses — guaranteed valid/typed. */\nexport interface ValidRegistratie {\n adres: { straat: string; postcode: Postcode; woonplaats: string };\n adresHerkomst: AdresHerkomst;\n correspondentie: Correspondentie;\n email?: Email; // only when correspondentie === 'email'\n diplomaId: string;\n diplomaHerkomst: DiplomaHerkomst;\n beroep: string;\n antwoorden: Record;\n documents: Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }>;\n}\n\n/** Text fields settable via SetField. */\nexport type DraftField = 'straat' | 'postcode' | 'woonplaats' | 'email';\n\n/** Per-field error map. `antwoorden` holds per-policy-question errors, keyed by\n question id (a step can show several questions). */\nexport interface Errors {\n straat?: string;\n postcode?: string;\n woonplaats?: string;\n email?: string;\n correspondentie?: string;\n diploma?: string;\n documenten?: string;\n antwoorden?: Record;\n}\n\nexport type RegistratieState =\n | { tag: 'Invullen'; draft: Draft; cursor: number; errors: Errors; upload: UploadState }\n | { tag: 'Indienen'; data: ValidRegistratie }\n | { tag: 'Ingediend'; data: ValidRegistratie; referentie: string }\n | { tag: 'Mislukt'; data: ValidRegistratie; error: string };\n\nconst emptyDraft: Draft = { antwoorden: {} };\nexport const initial: RegistratieState = { tag: 'Invullen', draft: emptyDraft, cursor: 0, errors: {}, upload: initialUpload };\n\n/** Which step the cursor currently points at (clamped to the fixed list). */\nexport function currentStep(s: Extract): StepId {\n return STEPS[Math.min(s.cursor, STEPS.length - 1)];\n}\n\n/** Has the user meaningfully started, so it's worth persisting as a Concept? Excludes\n the automatic BRP address prefill on step 0 — a bare page visit creates nothing.\n ponytail: an address typed at step 0 without any of these signals is not yet\n persisted (created once they advance/choose); accepted regression vs. sessionStorage. */\nexport function hasProgress(s: Extract): boolean {\n const d = s.draft;\n return (\n s.cursor > 0 ||\n !!d.correspondentie ||\n !!d.email ||\n !!d.diplomaId ||\n !!d.beroep ||\n deliveryRefs(s.upload).some((r) => r.channel === 'digital' && !!r.documentId)\n );\n}\n\n/** Validate every question currently visible in ONE step. Errors keyed per field. */\nfunction validateStep(step: StepId, d: Draft, upload: UploadState): Result {\n const errors: Errors = {};\n switch (step) {\n case 'adres': {\n if (!d.straat || d.straat.trim() === '') errors.straat = $localize`:@@validation.straat2:Vul een straat en huisnummer in.`;\n const pc = parsePostcode(d.postcode ?? '');\n if (!pc.ok) errors.postcode = pc.error;\n if (!d.woonplaats || d.woonplaats.trim() === '') errors.woonplaats = $localize`:@@validation.woonplaats:Vul een woonplaats in.`;\n if (!d.correspondentie) errors.correspondentie = $localize`:@@validation.maakKeuze:Maak een keuze.`;\n // E-mail is only required when 'email' is the chosen channel.\n if (d.correspondentie === 'email') {\n const e = parseEmail(d.email ?? '');\n if (!e.ok) errors.email = e.error;\n }\n break;\n }\n case 'beroep': {\n // A diploma must be chosen (or declared manually); its beroep is then known.\n if (!d.diplomaId || !d.beroep) {\n errors.diploma = $localize`:@@validation.diploma:Kies het diploma waarmee u zich wilt registreren, of voer het handmatig in.`;\n break;\n }\n // Every policy question the chosen diploma raised must be answered. Which\n // questions apply is server-decided (carried in `vraagIds`); we only check\n // they're answered.\n const open: Record = {};\n for (const id of d.vraagIds ?? []) {\n if (!(d.antwoorden[id] ?? '').trim()) open[id] = $localize`:@@validation.beantwoordVraag:Beantwoord deze vraag.`;\n }\n if (Object.keys(open).length > 0) errors.antwoorden = open;\n // Required documents for this wizard attach to the beroep step (inline upload).\n if (!requiredCategoriesSatisfied(upload)) {\n errors.documenten = $localize`:@@validation.documenten:Lever de verplichte documenten aan (upload of kies \"per post nasturen\").`;\n }\n break;\n }\n case 'controle':\n break; // controle shows a summary; no own fields\n default:\n return assertNever(step);\n }\n return Object.keys(errors).length > 0 ? err(errors) : ok(undefined);\n}\n\n/** Parse the whole wizard into a ValidRegistratie (called on submit). */\nfunction validateAll(d: Draft, upload: UploadState): Result {\n const errors: Errors = {};\n for (const step of STEPS) {\n const r = validateStep(step, d, upload);\n if (!r.ok) Object.assign(errors, r.error);\n }\n if (Object.keys(errors).length > 0) return err(errors);\n\n const pc = parsePostcode(d.postcode ?? '');\n // validateStep guaranteed these parse, but keep the compiler happy.\n if (!pc.ok || !d.diplomaId || !d.beroep || !d.correspondentie) return err(errors);\n const email = d.correspondentie === 'email' ? parseEmail(d.email ?? '') : undefined;\n // Keep only the answers to the questions that actually applied.\n const vraagIds = d.vraagIds ?? [];\n const antwoorden = Object.fromEntries(vraagIds.map((id) => [id, d.antwoorden[id] ?? '']));\n\n return ok({\n adres: { straat: d.straat!, postcode: pc.value, woonplaats: d.woonplaats! },\n adresHerkomst: d.adresHerkomst ?? 'handmatig',\n correspondentie: d.correspondentie,\n email: email?.ok ? email.value : undefined,\n diplomaId: d.diplomaId,\n diplomaHerkomst: d.diplomaHerkomst ?? 'handmatig',\n beroep: d.beroep,\n antwoorden,\n documents: deliveryRefs(upload),\n });\n}\n\nexport function setField(s: RegistratieState, key: DraftField, value: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const draft: Draft = { ...s.draft, [key]: value };\n // Editing an address field means the user owns it now — not the BRP copy.\n if (key === 'straat' || key === 'postcode' || key === 'woonplaats') draft.adresHerkomst = 'handmatig';\n return { ...s, draft };\n}\n\nexport function setCorrespondentie(s: RegistratieState, value: Correspondentie): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, correspondentie: value } };\n}\n\n/** Prefill the address from a BRP lookup and flag its origin (PRD §7). */\nexport function prefillAdres(s: RegistratieState, straat: string, postcode: string, woonplaats: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, straat, postcode, woonplaats, adresHerkomst: 'brp' } };\n}\n\n/** Pick a DUO diploma; the beroep is derived from it and the applicable policy\n questions (`vraagIds`) come with it (both server-computed, passed in). */\nexport function kiesDiploma(s: RegistratieState, diplomaId: string, beroep: string, vraagIds: string[]): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, diplomaId, beroep, vraagIds, diplomaHerkomst: 'duo' }, errors: {} };\n}\n\n/** Switch to manual diploma entry: the diploma isn't in DUO, so the MAXIMAL\n policy-question set applies and the entry is flagged handmatig/unverified. The\n beroep is declared separately (declareerBeroep). */\nexport function kiesHandmatig(s: RegistratieState, vraagIds: string[]): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, diplomaId: 'handmatig', beroep: undefined, vraagIds, diplomaHerkomst: 'handmatig' }, errors: {} };\n}\n\n/** Declare the beroep for a manually-entered diploma (chosen from a fixed list). */\nexport function declareerBeroep(s: RegistratieState, beroep: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, beroep } };\n}\n\nexport function setAntwoord(s: RegistratieState, vraagId: string, value: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, antwoorden: { ...s.draft.antwoorden, [vraagId]: value } } };\n}\n\nexport function next(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const r = validateStep(currentStep(s), s.draft, s.upload);\n if (!r.ok) return { ...s, errors: r.error };\n return { ...s, cursor: Math.min(s.cursor + 1, STEPS.length - 1), errors: {} };\n}\n\nexport function back(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen' || s.cursor === 0) return s;\n return { ...s, cursor: s.cursor - 1, errors: {} };\n}\n\n/** Jump back to an earlier step to correct data (controle → step N). Forward\n jumps are not allowed (would skip validation). Preserves the draft. */\nexport function gaNaarStap(s: RegistratieState, cursor: number): RegistratieState {\n if (s.tag !== 'Invullen' || cursor < 0 || cursor >= s.cursor) return s;\n return { ...s, cursor, errors: {} };\n}\n\nexport function submit(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const r = validateAll(s.draft, s.upload);\n return r.ok ? { tag: 'Indienen', data: r.value } : { ...s, errors: r.error };\n}\n\n/** Route an upload sub-message through the pure upload reducer (Invullen only). */\nexport function upload(s: RegistratieState, msg: UploadMsg): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, upload: reduceUpload(s.upload, msg) };\n}\n\nexport function resolve(s: RegistratieState, r: Result): RegistratieState {\n if (s.tag !== 'Indienen') return s;\n return r.ok ? { tag: 'Ingediend', data: s.data, referentie: r.value } : { tag: 'Mislukt', data: s.data, error: r.error };\n}\n\nexport type RegistratieMsg =\n | { tag: 'SetField'; key: DraftField; value: string }\n | { tag: 'SetCorrespondentie'; value: Correspondentie }\n | { tag: 'PrefillAdres'; straat: string; postcode: string; woonplaats: string }\n | { tag: 'KiesDiploma'; diplomaId: string; beroep: string; vraagIds: string[] }\n | { tag: 'KiesHandmatig'; vraagIds: string[] }\n | { tag: 'DeclareerBeroep'; beroep: string }\n | { tag: 'SetAntwoord'; vraagId: string; value: string }\n | { tag: 'Next' }\n | { tag: 'Back' }\n | { tag: 'GaNaarStap'; cursor: number }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed'; referentie: string }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'Upload'; msg: UploadMsg }\n | { tag: 'Seed'; state: RegistratieState };\n\nexport function reduce(s: RegistratieState, m: RegistratieMsg): RegistratieState {\n switch (m.tag) {\n case 'SetField':\n return setField(s, m.key, m.value);\n case 'SetCorrespondentie':\n return setCorrespondentie(s, m.value);\n case 'PrefillAdres':\n return prefillAdres(s, m.straat, m.postcode, m.woonplaats);\n case 'KiesDiploma':\n return kiesDiploma(s, m.diplomaId, m.beroep, m.vraagIds);\n case 'KiesHandmatig':\n return kiesHandmatig(s, m.vraagIds);\n case 'DeclareerBeroep':\n return declareerBeroep(s, m.beroep);\n case 'SetAntwoord':\n return setAntwoord(s, m.vraagId, m.value);\n case 'Next':\n return next(s);\n case 'Back':\n return back(s);\n case 'GaNaarStap':\n return gaNaarStap(s, m.cursor);\n case 'Submit':\n return submit(s);\n case 'Retry':\n return s.tag === 'Mislukt' ? { tag: 'Indienen', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Indienen' ? { tag: 'Ingediend', data: s.data, referentie: m.referentie } : s;\n case 'SubmitFailed':\n return s.tag === 'Indienen' ? { tag: 'Mislukt', data: s.data, error: m.error } : s;\n case 'Upload':\n return upload(s, m.msg);\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "adresHerkomst", "deprecated": false, "deprecationMessage": "", "type": "AdresHerkomst", "indexKey": "", "optional": true, "description": "", "line": 41 }, { "name": "antwoorden", "deprecated": false, "deprecationMessage": "", "type": "Record", "indexKey": "", "optional": false, "description": "", "line": 48 }, { "name": "beroep", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 46 }, { "name": "correspondentie", "deprecated": false, "deprecationMessage": "", "type": "Correspondentie", "indexKey": "", "optional": true, "description": "", "line": 42 }, { "name": "diplomaHerkomst", "deprecated": false, "deprecationMessage": "", "type": "DiplomaHerkomst", "indexKey": "", "optional": true, "description": "", "line": 45 }, { "name": "diplomaId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 44 }, { "name": "email", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 43 }, { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 39 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 38 }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": true, "description": "", "line": 47 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 40 } ], "indexSignatures": [], "kind": 172, "description": "

One record carried across every step (and persisted). All optional: the user\nfills it in gradually. Adres fields are kept flat so one SetField message\nserves them all (mirrors the intake machine).

\n", "rawdescription": "\nOne record carried across every step (and persisted). All optional: the user\nfills it in gradually. Adres fields are kept flat so one `SetField` message\nserves them all (mirrors the intake machine).", "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 2, "duplicateName": "Draft-2" }, { "name": "DraftSnapshot", "id": "interface-DraftSnapshot-50317a3496db98ee3a6c673faa9f2ec80371dd1003d718acbbd05c46a936a7275199ebafeabde226732b818a914d6c7410b17e8c640db4152ef530fdede44c09", "file": "src/app/registratie/application/draft-sync.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { DestroyRef, effect, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Result } from '@shared/kernel/fp';\nimport { runSubmit, SUBMIT_FAILED } from '@shared/application/submit';\nimport { SubmitApplicationRequest, SubmitApplicationResponse } from '@shared/infrastructure/api-client';\nimport { AanvraagType } from '@registratie/domain/aanvraag';\nimport { ApplicationsAdapter } from '@registratie/infrastructure/applications.adapter';\n\n/** What a wizard persists per step: the opaque machine snapshot + progress + docs. */\nexport interface DraftSnapshot {\n draft: unknown;\n stepIndex: number;\n stepCount: number;\n documentIds: string[];\n}\n\nexport interface DraftSyncDeps {\n type: AanvraagType;\n /** The machine snapshot while it's worth persisting; null when not (pristine/done). */\n snapshot: () => DraftSnapshot | null;\n /** Seed the machine from a resumed draft (null → start fresh). Called once, on init. */\n onResume: (draft: unknown | null) => void;\n /** Draft-sync only runs in the real app — false in Storybook/tests (explicit seed). */\n enabled: () => boolean;\n}\n\nconst DEBOUNCE_MS = 600; // ponytail: fixed debounce; tune if the sync feels laggy/chatty.\n\n/**\n * The effectful glue that replaces per-wizard sessionStorage with a backend-owned\n * Concept (PRD 0001, phase D). Instantiated in a field initializer (like\n * `createStore`/`createUploadController`). Responsibilities:\n *\n * - resume: if the URL carries `?aanvraag=`, load that draft and seed the machine;\n * - create-on-first-progress: the Concept is created lazily the first time the wizard\n * reports a non-null snapshot, and the id is stamped into the URL (so a reload resumes);\n * - debounced draft sync on every subsequent change.\n *\n * Inert without a Router (stories) or when `enabled()` is false — no network, no resume.\n */\nexport function createDraftSync(deps: DraftSyncDeps) {\n const adapter = inject(ApplicationsAdapter);\n const router = inject(Router, { optional: true });\n const route = inject(ActivatedRoute, { optional: true });\n const active = () => deps.enabled() && !!router && !!route;\n\n let id: string | undefined;\n let ensuring: Promise | undefined; // in-flight create, so we never create twice\n let timer: ReturnType | undefined;\n\n const ensureId = (): Promise => {\n if (id) return Promise.resolve(id);\n ensuring ??= adapter.create(deps.type).then((newId) => {\n id = newId;\n // Stamp the id into the URL (no navigation) so a reload resumes this Concept.\n void router!.navigate([], { relativeTo: route!, queryParams: { aanvraag: newId }, queryParamsHandling: 'merge', replaceUrl: true });\n return newId;\n });\n return ensuring;\n };\n\n const flush = async () => {\n const snap = deps.snapshot();\n if (!snap) return;\n const theId = await ensureId();\n await adapter.syncDraft(theId, { draft: snap.draft, stepIndex: snap.stepIndex, stepCount: snap.stepCount, documentIds: snap.documentIds });\n };\n\n // One effect watches the snapshot; each change resets a debounce timer. The timer's\n // callback only does network I/O (never dispatch), so it can't livelock the store.\n effect(() => {\n if (!active()) return;\n const snap = deps.snapshot(); // tracked: fires on every machine change\n if (!snap) return;\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => void flush(), DEBOUNCE_MS);\n });\n\n inject(DestroyRef).onDestroy(() => timer && clearTimeout(timer));\n\n return {\n /** Resolve the initial state: resume a linked Concept, or start fresh. */\n resume() {\n if (!active()) {\n deps.onResume(null);\n return;\n }\n const linked = route!.snapshot.queryParamMap.get('aanvraag');\n if (!linked) {\n deps.onResume(null);\n return;\n }\n id = linked;\n adapter\n .detail(linked)\n .then((dto) => deps.onResume(dto.draft ?? null))\n .catch(() => deps.onResume(null)); // unknown/deleted id → start fresh\n },\n\n /** Submit through the aanvraag lifecycle: ensure the Concept exists, then\n `POST /applications/{id}/submit` (server sets autoApprovable + transitions).\n Folded into a Result like the old submit-* commands. */\n submit(body: SubmitApplicationRequest): Promise> {\n return runSubmit(async () => adapter.submit(await ensureId(), body), SUBMIT_FAILED);\n },\n\n /** Detach from the current Concept (a new one is created on next progress) and\n drop the `?aanvraag` link. Used when the wizard restarts. */\n reset() {\n id = undefined;\n ensuring = undefined;\n if (active()) void router!.navigate([], { relativeTo: route!, queryParams: { aanvraag: null }, queryParamsHandling: 'merge', replaceUrl: true });\n },\n };\n}\n", "properties": [ { "name": "documentIds", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": false, "description": "", "line": 14 }, { "name": "draft", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 11 }, { "name": "stepCount", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 13 }, { "name": "stepIndex", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 12 } ], "indexSignatures": [], "kind": 172, "description": "

What a wizard persists per step: the opaque machine snapshot + progress + docs.

\n", "rawdescription": "\nWhat a wizard persists per step: the opaque machine snapshot + progress + docs.", "methods": [], "extends": [] }, { "name": "DraftSyncDeps", "id": "interface-DraftSyncDeps-50317a3496db98ee3a6c673faa9f2ec80371dd1003d718acbbd05c46a936a7275199ebafeabde226732b818a914d6c7410b17e8c640db4152ef530fdede44c09", "file": "src/app/registratie/application/draft-sync.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { DestroyRef, effect, inject } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Result } from '@shared/kernel/fp';\nimport { runSubmit, SUBMIT_FAILED } from '@shared/application/submit';\nimport { SubmitApplicationRequest, SubmitApplicationResponse } from '@shared/infrastructure/api-client';\nimport { AanvraagType } from '@registratie/domain/aanvraag';\nimport { ApplicationsAdapter } from '@registratie/infrastructure/applications.adapter';\n\n/** What a wizard persists per step: the opaque machine snapshot + progress + docs. */\nexport interface DraftSnapshot {\n draft: unknown;\n stepIndex: number;\n stepCount: number;\n documentIds: string[];\n}\n\nexport interface DraftSyncDeps {\n type: AanvraagType;\n /** The machine snapshot while it's worth persisting; null when not (pristine/done). */\n snapshot: () => DraftSnapshot | null;\n /** Seed the machine from a resumed draft (null → start fresh). Called once, on init. */\n onResume: (draft: unknown | null) => void;\n /** Draft-sync only runs in the real app — false in Storybook/tests (explicit seed). */\n enabled: () => boolean;\n}\n\nconst DEBOUNCE_MS = 600; // ponytail: fixed debounce; tune if the sync feels laggy/chatty.\n\n/**\n * The effectful glue that replaces per-wizard sessionStorage with a backend-owned\n * Concept (PRD 0001, phase D). Instantiated in a field initializer (like\n * `createStore`/`createUploadController`). Responsibilities:\n *\n * - resume: if the URL carries `?aanvraag=`, load that draft and seed the machine;\n * - create-on-first-progress: the Concept is created lazily the first time the wizard\n * reports a non-null snapshot, and the id is stamped into the URL (so a reload resumes);\n * - debounced draft sync on every subsequent change.\n *\n * Inert without a Router (stories) or when `enabled()` is false — no network, no resume.\n */\nexport function createDraftSync(deps: DraftSyncDeps) {\n const adapter = inject(ApplicationsAdapter);\n const router = inject(Router, { optional: true });\n const route = inject(ActivatedRoute, { optional: true });\n const active = () => deps.enabled() && !!router && !!route;\n\n let id: string | undefined;\n let ensuring: Promise | undefined; // in-flight create, so we never create twice\n let timer: ReturnType | undefined;\n\n const ensureId = (): Promise => {\n if (id) return Promise.resolve(id);\n ensuring ??= adapter.create(deps.type).then((newId) => {\n id = newId;\n // Stamp the id into the URL (no navigation) so a reload resumes this Concept.\n void router!.navigate([], { relativeTo: route!, queryParams: { aanvraag: newId }, queryParamsHandling: 'merge', replaceUrl: true });\n return newId;\n });\n return ensuring;\n };\n\n const flush = async () => {\n const snap = deps.snapshot();\n if (!snap) return;\n const theId = await ensureId();\n await adapter.syncDraft(theId, { draft: snap.draft, stepIndex: snap.stepIndex, stepCount: snap.stepCount, documentIds: snap.documentIds });\n };\n\n // One effect watches the snapshot; each change resets a debounce timer. The timer's\n // callback only does network I/O (never dispatch), so it can't livelock the store.\n effect(() => {\n if (!active()) return;\n const snap = deps.snapshot(); // tracked: fires on every machine change\n if (!snap) return;\n if (timer) clearTimeout(timer);\n timer = setTimeout(() => void flush(), DEBOUNCE_MS);\n });\n\n inject(DestroyRef).onDestroy(() => timer && clearTimeout(timer));\n\n return {\n /** Resolve the initial state: resume a linked Concept, or start fresh. */\n resume() {\n if (!active()) {\n deps.onResume(null);\n return;\n }\n const linked = route!.snapshot.queryParamMap.get('aanvraag');\n if (!linked) {\n deps.onResume(null);\n return;\n }\n id = linked;\n adapter\n .detail(linked)\n .then((dto) => deps.onResume(dto.draft ?? null))\n .catch(() => deps.onResume(null)); // unknown/deleted id → start fresh\n },\n\n /** Submit through the aanvraag lifecycle: ensure the Concept exists, then\n `POST /applications/{id}/submit` (server sets autoApprovable + transitions).\n Folded into a Result like the old submit-* commands. */\n submit(body: SubmitApplicationRequest): Promise> {\n return runSubmit(async () => adapter.submit(await ensureId(), body), SUBMIT_FAILED);\n },\n\n /** Detach from the current Concept (a new one is created on next progress) and\n drop the `?aanvraag` link. Used when the wizard restarts. */\n reset() {\n id = undefined;\n ensuring = undefined;\n if (active()) void router!.navigate([], { relativeTo: route!, queryParams: { aanvraag: null }, queryParamsHandling: 'merge', replaceUrl: true });\n },\n };\n}\n", "properties": [ { "name": "enabled", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "

Draft-sync only runs in the real app — false in Storybook/tests (explicit seed).

\n", "line": 24, "rawdescription": "\nDraft-sync only runs in the real app — false in Storybook/tests (explicit seed)." }, { "name": "onResume", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "

Seed the machine from a resumed draft (null → start fresh). Called once, on init.

\n", "line": 22, "rawdescription": "\nSeed the machine from a resumed draft (null → start fresh). Called once, on init." }, { "name": "snapshot", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "

The machine snapshot while it's worth persisting; null when not (pristine/done).

\n", "line": 20, "rawdescription": "\nThe machine snapshot while it's worth persisting; null when not (pristine/done)." }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "AanvraagType", "indexKey": "", "optional": false, "description": "", "line": 18 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "DraftSyncRequest", "id": "interface-DraftSyncRequest-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "documentIds", "deprecated": false, "deprecationMessage": "", "type": "string[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1008 }, { "name": "draft", "deprecated": false, "deprecationMessage": "", "type": "any", "indexKey": "", "optional": true, "description": "", "line": 1005 }, { "name": "stepCount", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": true, "description": "", "line": 1007 }, { "name": "stepIndex", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": true, "description": "", "line": 1006 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "DuoDiplomaDto", "id": "interface-DuoDiplomaDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "beroep", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1016 }, { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1012 }, { "name": "instelling", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1014 }, { "name": "jaar", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": true, "description": "", "line": 1015 }, { "name": "naam", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1013 }, { "name": "policyQuestions", "deprecated": false, "deprecationMessage": "", "type": "PolicyQuestionDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1017 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "DuoDiplomaDto", "id": "interface-DuoDiplomaDto-03b724eabc3fb95affe36abb0bef921275f0c9eeefd35fab64dd906d4d76e5a38fe849098232c0aaeaf7dd32fa6c0a7b7f2a1bfbbf4c03de4a440f860b3c46e1-1", "file": "src/app/registratie/contracts/duo-diplomas.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface DuoLookupDto {\n diplomas: DuoDiplomaDto[];\n handmatig: ManualDiplomaPolicyDto;\n}\n\nexport interface DuoDiplomaDto {\n id: string;\n naam: string;\n instelling: string;\n jaar: number;\n beroep: string; // server-derived profession\n policyQuestions: PolicyQuestionDto[]; // server-decided geldigheidsvragen\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen: string[]; // professions the user may declare for a manual diploma\n policyQuestions: PolicyQuestionDto[]; // maximal set applied to a manual diploma\n}\n\nexport interface PolicyQuestionDto {\n id: string;\n vraag: string;\n type: 'ja-nee' | 'tekst';\n}\n", "properties": [ { "name": "beroep", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 25 }, { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 21 }, { "name": "instelling", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 23 }, { "name": "jaar", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 24 }, { "name": "naam", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 22 }, { "name": "policyQuestions", "deprecated": false, "deprecationMessage": "", "type": "PolicyQuestionDto[]", "indexKey": "", "optional": false, "description": "", "line": 26 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "DuoDiplomaDto-1" }, { "name": "DuoLookupDto", "id": "interface-DuoLookupDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "diplomas", "deprecated": false, "deprecationMessage": "", "type": "DuoDiplomaDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1021 }, { "name": "handmatig", "deprecated": false, "deprecationMessage": "", "type": "ManualDiplomaPolicyDto", "indexKey": "", "optional": true, "description": "", "line": 1022 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "DuoLookupDto", "id": "interface-DuoLookupDto-03b724eabc3fb95affe36abb0bef921275f0c9eeefd35fab64dd906d4d76e5a38fe849098232c0aaeaf7dd32fa6c0a7b7f2a1bfbbf4c03de4a440f860b3c46e1-1", "file": "src/app/registratie/contracts/duo-diplomas.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface DuoLookupDto {\n diplomas: DuoDiplomaDto[];\n handmatig: ManualDiplomaPolicyDto;\n}\n\nexport interface DuoDiplomaDto {\n id: string;\n naam: string;\n instelling: string;\n jaar: number;\n beroep: string; // server-derived profession\n policyQuestions: PolicyQuestionDto[]; // server-decided geldigheidsvragen\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen: string[]; // professions the user may declare for a manual diploma\n policyQuestions: PolicyQuestionDto[]; // maximal set applied to a manual diploma\n}\n\nexport interface PolicyQuestionDto {\n id: string;\n vraag: string;\n type: 'ja-nee' | 'tekst';\n}\n", "properties": [ { "name": "diplomas", "deprecated": false, "deprecationMessage": "", "type": "DuoDiplomaDto[]", "indexKey": "", "optional": false, "description": "", "line": 16 }, { "name": "handmatig", "deprecated": false, "deprecationMessage": "", "type": "ManualDiplomaPolicyDto", "indexKey": "", "optional": false, "description": "", "line": 17 } ], "indexSignatures": [], "kind": 172, "description": "

WIRE CONTRACT for the DUO diploma lookup ("BFF-lite" — one screen-shaped call\nreturning everything the beroep step needs).

\n

Each diploma carries its server-computed beroep (the profession it maps to)\nand the policyQuestions (geldigheidsvragen) that apply to it. These are\nDECISIONS computed by the backend from the diploma's attributes — the frontend\nrenders them, it does not derive them (decision-DTO pattern, ADR-0001). E.g. an\nEnglish-language diploma carries the Dutch-proficiency question.

\n

handmatig is the fallback when the diploma is not in the DUO list: the\nprofessions the user may declare and the MAXIMAL policy-question set that then\napplies (a manual diploma is unverified, so the strictest set is used).

\n", "rawdescription": "\n\nWIRE CONTRACT for the DUO diploma lookup (\"BFF-lite\" — one screen-shaped call\nreturning everything the beroep step needs).\n\nEach diploma carries its server-computed `beroep` (the profession it maps to)\nand the `policyQuestions` (geldigheidsvragen) that apply to it. These are\nDECISIONS computed by the backend from the diploma's attributes — the frontend\nrenders them, it does not derive them (decision-DTO pattern, ADR-0001). E.g. an\nEnglish-language diploma carries the Dutch-proficiency question.\n\n`handmatig` is the fallback when the diploma is not in the DUO list: the\nprofessions the user may declare and the MAXIMAL policy-question set that then\napplies (a manual diploma is unverified, so the strictest set is used).\n", "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "DuoLookupDto-1" }, { "name": "Errors", "id": "interface-Errors-b7c3c5d493aa141ca68cb964e63408db7152b07336b239864d3c430b84d8eb3e650d1a3abaf3fda253444af942c45f86138a5d8229832d49bda94eec35c33546", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, ok, err, assertNever } from '@shared/kernel/fp';\nimport { Postcode, parsePostcode } from '@registratie/domain/value-objects/postcode';\nimport { Email, parseEmail } from '@registratie/domain/value-objects/email';\nimport {\n UploadState,\n UploadMsg,\n DeliveryChannel,\n initialUpload,\n reduceUpload,\n requiredCategoriesSatisfied,\n deliveryRefs,\n} from '@shared/upload/upload.machine';\n\n/**\n * A FIXED 3-step registration wizard. The steps never change in number (always\n * `STEPS`): (1) adres + correspondentievoorkeur, (2) beroep o.b.v. diploma,\n * (3) controle & indienen. Follow-up questions appear *inline within a step*\n * (e.g. choosing 'email' reveals the e-mail field). \"Is this field required\n * right now\" is a pure function (`validateStep`), so it is trivial to test and\n * impossible to get out of sync with the data. Invariants live here, not in the\n * UI: the wizard reaches `Indienen` only when a complete `ValidRegistratie` parses.\n */\n\nexport type StepId = 'adres' | 'beroep' | 'controle';\n\n/** The fixed step list. Number of steps never changes; questions reveal inline. */\nexport const STEPS: StepId[] = ['adres', 'beroep', 'controle'];\n\n/** Where a piece of data came from — recorded on the aggregate (PRD §5). */\nexport type AdresHerkomst = 'brp' | 'handmatig';\nexport type DiplomaHerkomst = 'duo' | 'handmatig';\nexport type Correspondentie = 'email' | 'post';\n\n/** One record carried across every step (and persisted). All optional: the user\n fills it in gradually. Adres fields are kept flat so one `SetField` message\n serves them all (mirrors the intake machine). */\nexport interface Draft {\n straat?: string;\n postcode?: string;\n woonplaats?: string;\n adresHerkomst?: AdresHerkomst;\n correspondentie?: Correspondentie;\n email?: string;\n diplomaId?: string;\n diplomaHerkomst?: DiplomaHerkomst;\n beroep?: string; // DERIVED from the chosen DUO diploma (or declared for a manual one)\n vraagIds?: string[]; // ids of the policy questions that apply to the chosen diploma\n antwoorden: Record; // geldigheidsantwoorden, keyed by question id\n}\n\n/** What we have after the controle step parses — guaranteed valid/typed. */\nexport interface ValidRegistratie {\n adres: { straat: string; postcode: Postcode; woonplaats: string };\n adresHerkomst: AdresHerkomst;\n correspondentie: Correspondentie;\n email?: Email; // only when correspondentie === 'email'\n diplomaId: string;\n diplomaHerkomst: DiplomaHerkomst;\n beroep: string;\n antwoorden: Record;\n documents: Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }>;\n}\n\n/** Text fields settable via SetField. */\nexport type DraftField = 'straat' | 'postcode' | 'woonplaats' | 'email';\n\n/** Per-field error map. `antwoorden` holds per-policy-question errors, keyed by\n question id (a step can show several questions). */\nexport interface Errors {\n straat?: string;\n postcode?: string;\n woonplaats?: string;\n email?: string;\n correspondentie?: string;\n diploma?: string;\n documenten?: string;\n antwoorden?: Record;\n}\n\nexport type RegistratieState =\n | { tag: 'Invullen'; draft: Draft; cursor: number; errors: Errors; upload: UploadState }\n | { tag: 'Indienen'; data: ValidRegistratie }\n | { tag: 'Ingediend'; data: ValidRegistratie; referentie: string }\n | { tag: 'Mislukt'; data: ValidRegistratie; error: string };\n\nconst emptyDraft: Draft = { antwoorden: {} };\nexport const initial: RegistratieState = { tag: 'Invullen', draft: emptyDraft, cursor: 0, errors: {}, upload: initialUpload };\n\n/** Which step the cursor currently points at (clamped to the fixed list). */\nexport function currentStep(s: Extract): StepId {\n return STEPS[Math.min(s.cursor, STEPS.length - 1)];\n}\n\n/** Has the user meaningfully started, so it's worth persisting as a Concept? Excludes\n the automatic BRP address prefill on step 0 — a bare page visit creates nothing.\n ponytail: an address typed at step 0 without any of these signals is not yet\n persisted (created once they advance/choose); accepted regression vs. sessionStorage. */\nexport function hasProgress(s: Extract): boolean {\n const d = s.draft;\n return (\n s.cursor > 0 ||\n !!d.correspondentie ||\n !!d.email ||\n !!d.diplomaId ||\n !!d.beroep ||\n deliveryRefs(s.upload).some((r) => r.channel === 'digital' && !!r.documentId)\n );\n}\n\n/** Validate every question currently visible in ONE step. Errors keyed per field. */\nfunction validateStep(step: StepId, d: Draft, upload: UploadState): Result {\n const errors: Errors = {};\n switch (step) {\n case 'adres': {\n if (!d.straat || d.straat.trim() === '') errors.straat = $localize`:@@validation.straat2:Vul een straat en huisnummer in.`;\n const pc = parsePostcode(d.postcode ?? '');\n if (!pc.ok) errors.postcode = pc.error;\n if (!d.woonplaats || d.woonplaats.trim() === '') errors.woonplaats = $localize`:@@validation.woonplaats:Vul een woonplaats in.`;\n if (!d.correspondentie) errors.correspondentie = $localize`:@@validation.maakKeuze:Maak een keuze.`;\n // E-mail is only required when 'email' is the chosen channel.\n if (d.correspondentie === 'email') {\n const e = parseEmail(d.email ?? '');\n if (!e.ok) errors.email = e.error;\n }\n break;\n }\n case 'beroep': {\n // A diploma must be chosen (or declared manually); its beroep is then known.\n if (!d.diplomaId || !d.beroep) {\n errors.diploma = $localize`:@@validation.diploma:Kies het diploma waarmee u zich wilt registreren, of voer het handmatig in.`;\n break;\n }\n // Every policy question the chosen diploma raised must be answered. Which\n // questions apply is server-decided (carried in `vraagIds`); we only check\n // they're answered.\n const open: Record = {};\n for (const id of d.vraagIds ?? []) {\n if (!(d.antwoorden[id] ?? '').trim()) open[id] = $localize`:@@validation.beantwoordVraag:Beantwoord deze vraag.`;\n }\n if (Object.keys(open).length > 0) errors.antwoorden = open;\n // Required documents for this wizard attach to the beroep step (inline upload).\n if (!requiredCategoriesSatisfied(upload)) {\n errors.documenten = $localize`:@@validation.documenten:Lever de verplichte documenten aan (upload of kies \"per post nasturen\").`;\n }\n break;\n }\n case 'controle':\n break; // controle shows a summary; no own fields\n default:\n return assertNever(step);\n }\n return Object.keys(errors).length > 0 ? err(errors) : ok(undefined);\n}\n\n/** Parse the whole wizard into a ValidRegistratie (called on submit). */\nfunction validateAll(d: Draft, upload: UploadState): Result {\n const errors: Errors = {};\n for (const step of STEPS) {\n const r = validateStep(step, d, upload);\n if (!r.ok) Object.assign(errors, r.error);\n }\n if (Object.keys(errors).length > 0) return err(errors);\n\n const pc = parsePostcode(d.postcode ?? '');\n // validateStep guaranteed these parse, but keep the compiler happy.\n if (!pc.ok || !d.diplomaId || !d.beroep || !d.correspondentie) return err(errors);\n const email = d.correspondentie === 'email' ? parseEmail(d.email ?? '') : undefined;\n // Keep only the answers to the questions that actually applied.\n const vraagIds = d.vraagIds ?? [];\n const antwoorden = Object.fromEntries(vraagIds.map((id) => [id, d.antwoorden[id] ?? '']));\n\n return ok({\n adres: { straat: d.straat!, postcode: pc.value, woonplaats: d.woonplaats! },\n adresHerkomst: d.adresHerkomst ?? 'handmatig',\n correspondentie: d.correspondentie,\n email: email?.ok ? email.value : undefined,\n diplomaId: d.diplomaId,\n diplomaHerkomst: d.diplomaHerkomst ?? 'handmatig',\n beroep: d.beroep,\n antwoorden,\n documents: deliveryRefs(upload),\n });\n}\n\nexport function setField(s: RegistratieState, key: DraftField, value: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const draft: Draft = { ...s.draft, [key]: value };\n // Editing an address field means the user owns it now — not the BRP copy.\n if (key === 'straat' || key === 'postcode' || key === 'woonplaats') draft.adresHerkomst = 'handmatig';\n return { ...s, draft };\n}\n\nexport function setCorrespondentie(s: RegistratieState, value: Correspondentie): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, correspondentie: value } };\n}\n\n/** Prefill the address from a BRP lookup and flag its origin (PRD §7). */\nexport function prefillAdres(s: RegistratieState, straat: string, postcode: string, woonplaats: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, straat, postcode, woonplaats, adresHerkomst: 'brp' } };\n}\n\n/** Pick a DUO diploma; the beroep is derived from it and the applicable policy\n questions (`vraagIds`) come with it (both server-computed, passed in). */\nexport function kiesDiploma(s: RegistratieState, diplomaId: string, beroep: string, vraagIds: string[]): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, diplomaId, beroep, vraagIds, diplomaHerkomst: 'duo' }, errors: {} };\n}\n\n/** Switch to manual diploma entry: the diploma isn't in DUO, so the MAXIMAL\n policy-question set applies and the entry is flagged handmatig/unverified. The\n beroep is declared separately (declareerBeroep). */\nexport function kiesHandmatig(s: RegistratieState, vraagIds: string[]): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, diplomaId: 'handmatig', beroep: undefined, vraagIds, diplomaHerkomst: 'handmatig' }, errors: {} };\n}\n\n/** Declare the beroep for a manually-entered diploma (chosen from a fixed list). */\nexport function declareerBeroep(s: RegistratieState, beroep: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, beroep } };\n}\n\nexport function setAntwoord(s: RegistratieState, vraagId: string, value: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, antwoorden: { ...s.draft.antwoorden, [vraagId]: value } } };\n}\n\nexport function next(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const r = validateStep(currentStep(s), s.draft, s.upload);\n if (!r.ok) return { ...s, errors: r.error };\n return { ...s, cursor: Math.min(s.cursor + 1, STEPS.length - 1), errors: {} };\n}\n\nexport function back(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen' || s.cursor === 0) return s;\n return { ...s, cursor: s.cursor - 1, errors: {} };\n}\n\n/** Jump back to an earlier step to correct data (controle → step N). Forward\n jumps are not allowed (would skip validation). Preserves the draft. */\nexport function gaNaarStap(s: RegistratieState, cursor: number): RegistratieState {\n if (s.tag !== 'Invullen' || cursor < 0 || cursor >= s.cursor) return s;\n return { ...s, cursor, errors: {} };\n}\n\nexport function submit(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const r = validateAll(s.draft, s.upload);\n return r.ok ? { tag: 'Indienen', data: r.value } : { ...s, errors: r.error };\n}\n\n/** Route an upload sub-message through the pure upload reducer (Invullen only). */\nexport function upload(s: RegistratieState, msg: UploadMsg): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, upload: reduceUpload(s.upload, msg) };\n}\n\nexport function resolve(s: RegistratieState, r: Result): RegistratieState {\n if (s.tag !== 'Indienen') return s;\n return r.ok ? { tag: 'Ingediend', data: s.data, referentie: r.value } : { tag: 'Mislukt', data: s.data, error: r.error };\n}\n\nexport type RegistratieMsg =\n | { tag: 'SetField'; key: DraftField; value: string }\n | { tag: 'SetCorrespondentie'; value: Correspondentie }\n | { tag: 'PrefillAdres'; straat: string; postcode: string; woonplaats: string }\n | { tag: 'KiesDiploma'; diplomaId: string; beroep: string; vraagIds: string[] }\n | { tag: 'KiesHandmatig'; vraagIds: string[] }\n | { tag: 'DeclareerBeroep'; beroep: string }\n | { tag: 'SetAntwoord'; vraagId: string; value: string }\n | { tag: 'Next' }\n | { tag: 'Back' }\n | { tag: 'GaNaarStap'; cursor: number }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed'; referentie: string }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'Upload'; msg: UploadMsg }\n | { tag: 'Seed'; state: RegistratieState };\n\nexport function reduce(s: RegistratieState, m: RegistratieMsg): RegistratieState {\n switch (m.tag) {\n case 'SetField':\n return setField(s, m.key, m.value);\n case 'SetCorrespondentie':\n return setCorrespondentie(s, m.value);\n case 'PrefillAdres':\n return prefillAdres(s, m.straat, m.postcode, m.woonplaats);\n case 'KiesDiploma':\n return kiesDiploma(s, m.diplomaId, m.beroep, m.vraagIds);\n case 'KiesHandmatig':\n return kiesHandmatig(s, m.vraagIds);\n case 'DeclareerBeroep':\n return declareerBeroep(s, m.beroep);\n case 'SetAntwoord':\n return setAntwoord(s, m.vraagId, m.value);\n case 'Next':\n return next(s);\n case 'Back':\n return back(s);\n case 'GaNaarStap':\n return gaNaarStap(s, m.cursor);\n case 'Submit':\n return submit(s);\n case 'Retry':\n return s.tag === 'Mislukt' ? { tag: 'Indienen', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Indienen' ? { tag: 'Ingediend', data: s.data, referentie: m.referentie } : s;\n case 'SubmitFailed':\n return s.tag === 'Indienen' ? { tag: 'Mislukt', data: s.data, error: m.error } : s;\n case 'Upload':\n return upload(s, m.msg);\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "antwoorden", "deprecated": false, "deprecationMessage": "", "type": "Record", "indexKey": "", "optional": true, "description": "", "line": 77 }, { "name": "correspondentie", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 74 }, { "name": "diploma", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 75 }, { "name": "documenten", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 76 }, { "name": "email", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 73 }, { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 71 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 70 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 72 } ], "indexSignatures": [], "kind": 172, "description": "

Per-field error map. antwoorden holds per-policy-question errors, keyed by\nquestion id (a step can show several questions).

\n", "rawdescription": "\nPer-field error map. `antwoorden` holds per-policy-question errors, keyed by\nquestion id (a step can show several questions).", "methods": [], "extends": [] }, { "name": "Glyph", "id": "interface-Glyph-bc824192fb4b5b1e5ca46093e18a138c2c643d35be29ea257636d0b96b1867c3aa6d37f84437e9315f4e8157cdd99351b9bb1fe0f58adadd7cafca9c69d46185", "file": "src/app/shared/ui/upload/upload-status-icon/upload-status-icon.component.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Component, computed, input } from '@angular/core';\nimport type { UploadStatus } from '@shared/upload/upload.machine';\n\ninterface Glyph {\n char: string;\n label: string;\n color: string;\n}\n\n/** Atom: a small status glyph for one upload. Pure UI — glyph, colour and a11y\n label derive purely from the status type. */\n@Component({\n selector: 'app-upload-status-icon',\n styles: [`\n .glyph { font-weight: var(--rhc-text-font-weight-semi-bold); }\n `],\n template: `\n @if (glyph()) {\n \n {{ glyph()!.char }}\n \n }\n `,\n})\nexport class UploadStatusIconComponent {\n status = input.required();\n\n protected readonly glyph = computed(() => {\n switch (this.status()) {\n case 'queued':\n return { char: '…', label: $localize`:@@upload.status.queued:In wachtrij`, color: 'var(--rhc-color-foreground-subtle)' };\n case 'uploading':\n return { char: '↑', label: $localize`:@@upload.status.uploading:Bezig met uploaden`, color: 'var(--rhc-color-lintblauw-600)' };\n case 'complete':\n return { char: '✓', label: $localize`:@@upload.status.complete:Geüpload`, color: 'var(--rhc-color-groen-500)' };\n case 'failed':\n return { char: '✕', label: $localize`:@@upload.status.failed:Mislukt`, color: 'var(--rhc-color-rood-500)' };\n case 'deleting':\n return { char: '⟳', label: $localize`:@@upload.status.deleting:Bezig met verwijderen`, color: 'var(--rhc-color-foreground-subtle)' };\n case 'idle':\n case 'deleted':\n return null;\n }\n });\n}\n", "properties": [ { "name": "char", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 5 }, { "name": "color", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 7 }, { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 6 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "HerregistratieDecisions", "id": "interface-HerregistratieDecisions-b39e266ec8fabdaddad87f1e15a5b1b86e45d84ac2c95028b4e676c2eb425fd675c77383c3d4f8f88f4a072f3eb88a954eb0f8755597224ebef59da18d24fda0", "file": "src/app/registratie/contracts/dashboard-view.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Registration } from '@registratie/domain/registration';\nimport { Person } from '@registratie/domain/person';\nimport { BigProfile } from '@registratie/domain/big-profile';\n\n/**\n * WIRE CONTRACT for the dashboard screen — the \"BFF-lite\" response.\n *\n * In production this type is GENERATED from the OpenAPI/TypeSpec spec (one source\n * of truth for both sides), and the `decisions` block is computed BY THE BACKEND\n * — never recomputed on the client. The frontend renders decisions; it does not\n * own the rules. See docs/architecture/0001-bff-lite-decision-dtos.md.\n *\n * One screen-shaped call replaces the previous three (BIG-register + BRP + …),\n * so the page always sees one consistent snapshot instead of three independently\n * loading/erroring resources.\n */\nexport interface DashboardViewDto {\n registration: Registration;\n person: Person;\n decisions: HerregistratieDecisions;\n}\n\n/** Server-computed decisions. The eligibility rule lives on the backend; the\n optional reason lets the UI explain itself without knowing the rule. */\nexport interface HerregistratieDecisions {\n eligibleForHerregistratie: boolean;\n herregistratieReason?: string;\n}\n\n/** The parsed, frontend-side view (DTO mapped onto our own domain model). Keeping\n this distinct from DashboardViewDto is the decoupling seam: the wire shape can\n change without the FE domain following, and vice-versa. */\nexport interface DashboardView {\n profile: BigProfile;\n decisions: HerregistratieDecisions;\n}\n", "properties": [ { "name": "eligibleForHerregistratie", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 26 }, { "name": "herregistratieReason", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 27 } ], "indexSignatures": [], "kind": 172, "description": "

Server-computed decisions. The eligibility rule lives on the backend; the\noptional reason lets the UI explain itself without knowing the rule.

\n", "rawdescription": "\nServer-computed decisions. The eligibility rule lives on the backend; the\noptional reason lets the UI explain itself without knowing the rule.", "methods": [], "extends": [] }, { "name": "HerregistratieDecisionsDto", "id": "interface-HerregistratieDecisionsDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "eligibleForHerregistratie", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": true, "description": "", "line": 1026 }, { "name": "herregistratieReason", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1027 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "HerregistratieRequest", "id": "interface-HerregistratieRequest-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "documents", "deprecated": false, "deprecationMessage": "", "type": "DocumentRefDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1032 }, { "name": "uren", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": true, "description": "", "line": 1031 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "IntakePolicyDto", "id": "interface-IntakePolicyDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "scholingThreshold", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": true, "description": "", "line": 1036 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "IntakeRequest", "id": "interface-IntakeRequest-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "uren", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": true, "description": "", "line": 1040 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "ManualDiplomaPolicyDto", "id": "interface-ManualDiplomaPolicyDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "beroepen", "deprecated": false, "deprecationMessage": "", "type": "string[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1044 }, { "name": "policyQuestions", "deprecated": false, "deprecationMessage": "", "type": "PolicyQuestionDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1045 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "ManualDiplomaPolicyDto", "id": "interface-ManualDiplomaPolicyDto-03b724eabc3fb95affe36abb0bef921275f0c9eeefd35fab64dd906d4d76e5a38fe849098232c0aaeaf7dd32fa6c0a7b7f2a1bfbbf4c03de4a440f860b3c46e1-1", "file": "src/app/registratie/contracts/duo-diplomas.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface DuoLookupDto {\n diplomas: DuoDiplomaDto[];\n handmatig: ManualDiplomaPolicyDto;\n}\n\nexport interface DuoDiplomaDto {\n id: string;\n naam: string;\n instelling: string;\n jaar: number;\n beroep: string; // server-derived profession\n policyQuestions: PolicyQuestionDto[]; // server-decided geldigheidsvragen\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen: string[]; // professions the user may declare for a manual diploma\n policyQuestions: PolicyQuestionDto[]; // maximal set applied to a manual diploma\n}\n\nexport interface PolicyQuestionDto {\n id: string;\n vraag: string;\n type: 'ja-nee' | 'tekst';\n}\n", "properties": [ { "name": "beroepen", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": false, "description": "", "line": 30 }, { "name": "policyQuestions", "deprecated": false, "deprecationMessage": "", "type": "PolicyQuestionDto[]", "indexKey": "", "optional": false, "description": "", "line": 31 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "ManualDiplomaPolicyDto-1" }, { "name": "NavItem", "id": "interface-NavItem-9a0c974f175932b74bac6b9499d52109b91e008e20aad37498229296c31027ce1e8d9451f5e195926b0514ff3961eb9c0632cdf710292f5b143d4233c1358e45", "file": "src/app/shared/layout/side-nav/side-nav.component.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Component, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nexport interface NavItem {\n readonly label: string;\n readonly to: string;\n}\n\n/** Organism: vertical side navigation for the \"Mijn omgeving\" portal. The active\n route is marked with `routerLinkActive`. Domain-free — the caller supplies the\n items (English-named shared chrome). */\n@Component({\n selector: 'app-side-nav',\n imports: [RouterLink, RouterLinkActive],\n styles: [`\n :host{display:block}\n .list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-xs)}\n .item{\n display:block;\n padding:var(--rhc-space-max-md) var(--rhc-space-max-lg);\n color:var(--rhc-color-foreground-default);\n text-decoration:none;\n border-radius:var(--rhc-border-radius-sm);\n border-inline-start:var(--rhc-border-width-md) solid transparent;\n }\n .item:hover{background:var(--rhc-color-cool-grey-100)}\n .item.active{\n background:var(--rhc-color-lintblauw-100);\n border-inline-start-color:var(--rhc-color-lintblauw-700);\n color:var(--rhc-color-lintblauw-700);\n font-weight:var(--rhc-text-font-weight-semi-bold);\n }\n `],\n template: `\n \n `,\n})\nexport class SideNavComponent {\n items = input.required();\n ariaLabel = input($localize`:@@sideNav.aria:Mijn omgeving`);\n}\n", "properties": [ { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 5, "modifierKind": [ 148 ] }, { "name": "to", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 6, "modifierKind": [ 148 ] } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Person", "id": "interface-Person-07cec46d80a41919e40d0bcb002981627d1a30edb363d64a0a140a8af2c38ad85be5603d88030d0704870800694c5bed9c709ae6891fe83e646e90c1a67cf548", "file": "src/app/registratie/domain/person.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface Adres {\n straat: string;\n postcode: string;\n woonplaats: string;\n}\n\nexport interface Person {\n naam: string;\n geboortedatum: string; // ISO date\n adres: Adres;\n}\n", "properties": [ { "name": "adres", "deprecated": false, "deprecationMessage": "", "type": "Adres", "indexKey": "", "optional": false, "description": "", "line": 11 }, { "name": "geboortedatum", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 10 }, { "name": "naam", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 9 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "PersonDto", "id": "interface-PersonDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "adres", "deprecated": false, "deprecationMessage": "", "type": "AdresDto", "indexKey": "", "optional": true, "description": "", "line": 1051 }, { "name": "geboortedatum", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1050 }, { "name": "naam", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1049 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "PolicyQuestionDto", "id": "interface-PolicyQuestionDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1055 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1057 }, { "name": "vraag", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1056 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "PolicyQuestionDto", "id": "interface-PolicyQuestionDto-03b724eabc3fb95affe36abb0bef921275f0c9eeefd35fab64dd906d4d76e5a38fe849098232c0aaeaf7dd32fa6c0a7b7f2a1bfbbf4c03de4a440f860b3c46e1-1", "file": "src/app/registratie/contracts/duo-diplomas.dto.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface DuoLookupDto {\n diplomas: DuoDiplomaDto[];\n handmatig: ManualDiplomaPolicyDto;\n}\n\nexport interface DuoDiplomaDto {\n id: string;\n naam: string;\n instelling: string;\n jaar: number;\n beroep: string; // server-derived profession\n policyQuestions: PolicyQuestionDto[]; // server-decided geldigheidsvragen\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen: string[]; // professions the user may declare for a manual diploma\n policyQuestions: PolicyQuestionDto[]; // maximal set applied to a manual diploma\n}\n\nexport interface PolicyQuestionDto {\n id: string;\n vraag: string;\n type: 'ja-nee' | 'tekst';\n}\n", "properties": [ { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 35 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "\"ja-nee\" | \"tekst\"", "indexKey": "", "optional": false, "description": "", "line": 37 }, { "name": "vraag", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 36 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "PolicyQuestionDto-1" }, { "name": "PortalTask", "id": "interface-PortalTask-e2ec47648b64280fa4fd94b4eaee89246ecffd3a61445af27da0ceabf3d15e930edde33ead2e70732bb9fc2a42be434d45e188deb4d62b6d39553c8d8cca458e", "file": "src/app/registratie/domain/tasks.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Registration } from './registration';\nimport { herregistratieDeadline } from './registration.policy';\n\n/**\n * What the dashboard's \"Wat moet ik regelen\" list needs. Pure presentation data\n * derived from the registration — no Angular. Mirrors the shared TaskItem shape.\n */\nexport interface PortalTask {\n title: string;\n description: string;\n to: string;\n actionLabel: string;\n}\n\nfunction formatNL(d: Date): string {\n return d.toLocaleDateString('nl-NL', { day: 'numeric', month: 'long', year: 'numeric' });\n}\n\n/**\n * Derive the open tasks for a professional (pure). Eligibility is the server's\n * decision (`decisions.eligibleForHerregistratie`), passed in — the FE renders it,\n * it does not recompute the rule (ADR-0001). The deadline is still formatted\n * client-side for the task copy (presentation, not a rule).\n */\nexport function tasksFromProfile(reg: Registration, eligibleForHerregistratie: boolean): PortalTask[] {\n const tasks: PortalTask[] = [];\n\n if (eligibleForHerregistratie) {\n const deadline = herregistratieDeadline(reg);\n tasks.push({\n title: $localize`:@@task.herregistratie.title:Vraag uw herregistratie aan`,\n description: deadline\n ? $localize`:@@task.herregistratie.deadline:Verleng uw registratie vóór ${formatNL(deadline)}:deadline:.`\n : $localize`:@@task.herregistratie.nodeadline:U kunt nu uw herregistratie aanvragen.`,\n to: '/herregistratie',\n actionLabel: $localize`:@@task.herregistratie.action:Herregistratie aanvragen`,\n });\n }\n\n if (reg.status.tag === 'Geschorst') {\n tasks.push({\n title: $localize`:@@task.geschorst.title:Uw registratie is geschorst`,\n description: reg.status.reden,\n to: '/registratie',\n actionLabel: $localize`:@@task.bekijkGegevens.action:Bekijk uw gegevens`,\n });\n }\n\n if (reg.status.tag === 'Doorgehaald') {\n tasks.push({\n title: $localize`:@@task.doorgehaald.title:Uw registratie is doorgehaald`,\n description: reg.status.reden,\n to: '/registratie',\n actionLabel: $localize`:@@task.bekijkGegevens.action:Bekijk uw gegevens`,\n });\n }\n\n return tasks;\n}\n", "properties": [ { "name": "actionLabel", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 12 }, { "name": "description", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 10 }, { "name": "title", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 9 }, { "name": "to", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 11 } ], "indexSignatures": [], "kind": 172, "description": "

What the dashboard's "Wat moet ik regelen" list needs. Pure presentation data\nderived from the registration — no Angular. Mirrors the shared TaskItem shape.

\n", "rawdescription": "\n\nWhat the dashboard's \"Wat moet ik regelen\" list needs. Pure presentation data\nderived from the registration — no Angular. Mirrors the shared TaskItem shape.\n", "methods": [], "extends": [] }, { "name": "ProblemDetails", "id": "interface-ProblemDetails-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "detail", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1064 }, { "name": "instance", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1065 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "number | undefined", "indexKey": "", "optional": true, "description": "", "line": 1063 }, { "name": "title", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1062 }, { "name": "type", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1061 } ], "indexSignatures": [ { "id": "index-declaration-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "args": [ { "name": "key", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "returnType": "any", "line": 1065, "deprecated": false, "deprecationMessage": "" } ], "kind": 182, "methods": [], "extends": [] }, { "name": "RadioOption", "id": "interface-RadioOption-6203162055a34b4133e76690b148d45884cd1f41bf3d478fb1a54123a7aeb725b01d619611cf73b9807dd8144cc9d276b36a7e8f90d0b3191e1948a4452929fd", "file": "src/app/shared/ui/radio-group/radio-group.component.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Component, forwardRef, input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface RadioOption {\n value: string;\n label: string;\n}\n\n/** The ubiquitous yes/no option pair. Language-agnostic now the labels are\n localized, so it lives next to RadioOption and both wizards import it. */\nexport const JA_NEE: RadioOption[] = [\n { value: 'ja', label: $localize`:@@common.ja:Ja` },\n { value: 'nee', label: $localize`:@@common.nee:Nee` },\n];\n\n/** Atom: a radio group. Thin wrapper over the Utrecht/RHC radio CSS, wired as a\n form control so it works with ngModel just like the text-input atom. */\n@Component({\n selector: 'app-radio-group',\n styles: [`\n .rhc-radio-option {\n display: flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n }\n `],\n template: `\n \n @for (opt of options(); track opt.value) {\n \n }\n \n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true }],\n})\nexport class RadioGroupComponent implements ControlValueAccessor {\n options = input.required();\n name = input.required();\n invalid = input(false);\n\n value = '';\n disabled = false;\n onChange: (v: string) => void = () => {};\n onTouched: () => void = () => {};\n\n select(v: string) {\n this.value = v;\n this.onChange(v);\n }\n writeValue(v: string) { this.value = v ?? ''; }\n registerOnChange(fn: (v: string) => void) { this.onChange = fn; }\n registerOnTouched(fn: () => void) { this.onTouched = fn; }\n setDisabledState(d: boolean) { this.disabled = d; }\n}\n", "properties": [ { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 6 }, { "name": "value", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 5 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "ReferentieResponse", "id": "interface-ReferentieResponse-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "referentie", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1071 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "RegistratieRequest", "id": "interface-RegistratieRequest-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "diplomaHerkomst", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1075 }, { "name": "documents", "deprecated": false, "deprecationMessage": "", "type": "DocumentRefDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1076 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Registration", "id": "interface-Registration-8e28c6bf4ec154e4db100e2ec1ee19fe9c2d50bc429733f8288f32277ce91963f67ec0363028632e71cfb7e05ce25001908c8dd8ee66d732632d67b993c0645b", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export type RegistrationStatus =\n | { tag: 'Geregistreerd'; herregistratieDatum: string } // ISO date\n | { tag: 'Geschorst'; geschorstTot: string; reden: string }\n | { tag: 'Doorgehaald'; doorgehaaldOp: string; reden: string };\n\n/** Just the discriminant — for atoms that only need the label/color. */\nexport type StatusTag = RegistrationStatus['tag'];\n\nexport interface Registration {\n bigNummer: string;\n naam: string;\n beroep: string; // arts, verpleegkundige, apotheker, ...\n registratiedatum: string; // ISO date\n geboortedatum: string;\n status: RegistrationStatus;\n}\n\n/** A note is either a recognised specialism or a plain annotation — a closed set,\n not an open string, so a typo can't slip through. */\nexport type AantekeningType = 'Specialisme' | 'Aantekening';\n\nexport interface Aantekening {\n type: AantekeningType;\n omschrijving: string;\n datum: string;\n}\n", "properties": [ { "name": "beroep", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 19 }, { "name": "bigNummer", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 17 }, { "name": "geboortedatum", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 21 }, { "name": "naam", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 18 }, { "name": "registratiedatum", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 20 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "RegistrationStatus", "indexKey": "", "optional": false, "description": "", "line": 22 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "RegistrationDto", "id": "interface-RegistrationDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "beroep", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1082 }, { "name": "bigNummer", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1080 }, { "name": "geboortedatum", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1084 }, { "name": "naam", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1081 }, { "name": "registratiedatum", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1083 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "RegistrationStatusDto", "indexKey": "", "optional": true, "description": "", "line": 1085 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "RegistrationStatusDto", "id": "interface-RegistrationStatusDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "doorgehaaldOp", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1093 }, { "name": "geschorstTot", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1091 }, { "name": "herregistratieDatum", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1090 }, { "name": "reden", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1092 }, { "name": "tag", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1089 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "Session", "id": "interface-Session-4f483129ecb1f3747a600d06904b954a4950b10c4da782d9635896d2c39feaa7777d0e9ed018efa5d4252fd44a29035a431e7dcc15ec19c903f710b163e162f2", "file": "src/app/auth/domain/session.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export interface Session {\n readonly bsn: string;\n readonly naam: string;\n}\n\nexport function isAuthenticated(s: Session | null): s is Session {\n return s !== null;\n}\n", "properties": [ { "name": "bsn", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 3, "modifierKind": [ 148 ] }, { "name": "naam", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 4, "modifierKind": [ 148 ] } ], "indexSignatures": [], "kind": 172, "description": "

Who is logged in. Framework-free domain type.

\n", "rawdescription": "\nWho is logged in. Framework-free domain type.", "methods": [], "extends": [] }, { "name": "SessionPort", "id": "interface-SessionPort-b7e5164e08b624cba74c620b09293f05c3bbaa75eeed03e9cc66f5ea5d87f1d9e4e51a4a7f43d648f5bb2a5a51f58b8f5880929eab6cc03156cef468fdda90dc", "file": "src/app/shared/application/session.port.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * A shared seam for the chrome to show \"who is logged in\" + log out, WITHOUT\n * shared/ depending on the auth context (the import-direction rule forbids that).\n * Auth provides this token at the app root (see app.config.ts); the shared header\n * injects it. SessionStore satisfies this shape structurally.\n */\nexport interface SessionPort {\n readonly session: Signal<{ naam: string } | null>;\n logout(): void;\n}\n\nexport const SESSION_PORT = new InjectionToken('SESSION_PORT');\n", "properties": [ { "name": "session", "deprecated": false, "deprecationMessage": "", "type": "Signal", "indexKey": "", "optional": false, "description": "", "line": 10, "modifierKind": [ 148 ] } ], "indexSignatures": [], "kind": 174, "description": "

A shared seam for the chrome to show "who is logged in" + log out, WITHOUT\nshared/ depending on the auth context (the import-direction rule forbids that).\nAuth provides this token at the app root (see app.config.ts); the shared header\ninjects it. SessionStore satisfies this shape structurally.

\n", "rawdescription": "\n\nA shared seam for the chrome to show \"who is logged in\" + log out, WITHOUT\nshared/ depending on the auth context (the import-direction rule forbids that).\nAuth provides this token at the app root (see app.config.ts); the shared header\ninjects it. SessionStore satisfies this shape structurally.\n", "methods": [ { "name": "logout", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 11, "deprecated": false, "deprecationMessage": "" } ], "extends": [] }, { "name": "StatusItem", "id": "interface-StatusItem-bb80b81784601579976fed392f1c4e638f6945087adb775183c617fc8b015821f1a9ce89762fe24adcdab49c8761256a98fd3e6fe0251d3a6f250ef0aed7b62b", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport {\n ApiClient,\n DocumentCategoryDto,\n UploadStatusItemDto,\n} from '@shared/infrastructure/api-client';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { currentScenario } from '@shared/infrastructure/scenario';\nimport { environment } from '../../../environments/environment';\nimport { DocumentCategory } from './upload.machine';\n\n/** One arrived/known status item from poll-on-return. */\nexport interface StatusItem {\n localId: string;\n status: string; // 'complete' | 'unknown'\n documentId?: string;\n}\n\nexport interface XhrUploadRequest {\n localId: string;\n categoryId: string;\n wizardId: string;\n file: File;\n}\n\n/** A live upload: progress is reported via the callback; cancel aborts the XHR. */\nexport interface XhrUploadHandle {\n done: Promise<{ documentId: string }>;\n cancel: () => void;\n}\n\n/** Sentinel rejection so the caller can tell a user-cancel from a real failure. */\nexport const UPLOAD_ABORTED = Symbol('upload-aborted');\n\n/**\n * Infrastructure: the only place upload HTTP lives. Reads (categories, status,\n * delete) go through the NSwag client; the multipart POST is hand-written XHR\n * because the generated client is JSON-only (the endpoint is ExcludeFromDescription)\n * and we need upload-progress events + cancellation, which fetch can't give us.\n */\n@Injectable({ providedIn: 'root' })\nexport class UploadAdapter {\n private client = inject(ApiClient);\n\n categoriesResource(wizardId: string) {\n return resource({ loader: () => this.client.categories(wizardId).then((r) => (r.categories ?? []).map(toCategory)) });\n }\n\n /** Poll-on-return: which client localIds have arrived at the BFF. */\n status(localIds: string[]): Promise {\n if (localIds.length === 0) return Promise.resolve([]);\n return this.client.status(localIds.join(',')).then((r) => (r.results ?? []).map(toStatusItem));\n }\n\n /** User delete; throws a ProblemDetails (e.g. 409 once linked) the caller maps. */\n deleteDocument(documentId: string): Promise {\n return this.client.uploads(documentId);\n }\n\n /**\n * Direct URL to the stored bytes, for a preview/download link (``) — the\n * server serves it inline for pdf/image, attachment otherwise. Not a fetch: the\n * browser opens it. demo-* ids (dev simulation) have no bytes and 404 here.\n */\n contentUrl(documentId: string): string {\n return `${environment.apiBaseUrl}/api/v1/uploads/${documentId}/content`;\n }\n\n /**\n * Multipart upload with progress + cancel. ponytail: XHR (not fetch keepalive) —\n * progress events need XHR; the keepalive/background gap is covered by\n * poll-on-return (UploadShellService.pollReturning). Swap in a Service Worker\n * transport behind UploadTransport for true background sync.\n */\n xhrUpload(req: XhrUploadRequest, onProgress: (pct: number) => void): XhrUploadHandle {\n const scenario = currentScenario();\n if (scenario === 'upload-slow' || scenario === 'upload-fail') return simulateUpload(scenario, onProgress);\n\n const xhr = new XMLHttpRequest();\n const form = new FormData();\n form.append('file', req.file);\n form.append('categoryId', req.categoryId);\n form.append('localId', req.localId);\n form.append('wizardId', req.wizardId);\n\n let aborted = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n xhr.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) onProgress(Math.round((e.loaded / e.total) * 100));\n });\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n resolve({ documentId: JSON.parse(xhr.responseText).documentId });\n } catch {\n reject(genericError());\n }\n } else {\n reject(parseError(xhr.responseText));\n }\n });\n xhr.addEventListener('error', () => reject(genericError()));\n xhr.addEventListener('abort', () => (aborted ? reject(UPLOAD_ABORTED) : reject(genericError())));\n });\n\n xhr.open('POST', `${environment.apiBaseUrl}/api/v1/uploads`);\n xhr.send(form);\n return { done, cancel: () => ((aborted = true), xhr.abort()) };\n }\n}\n\nconst UPLOAD_FAILED = $localize`:@@upload.failed:Uploaden is niet gelukt. Probeer het opnieuw.`;\nconst genericError = (): string => UPLOAD_FAILED;\n\n/**\n * Demo-only (dev): the real XHR POST finishes instantly for metadata, so progress\n * and failure can't otherwise be shown. Drives the progress bar over ~2.5s, then\n * succeeds (`upload-slow`) or fails (`upload-fail`). ponytail: timer-based, cancel\n * via the returned handle; no network.\n */\nfunction simulateUpload(scenario: 'upload-slow' | 'upload-fail', onProgress: (pct: number) => void): XhrUploadHandle {\n let pct = 0;\n let cancelled = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n const tick = () => {\n if (cancelled) {\n reject(UPLOAD_ABORTED);\n } else if (pct < 100) {\n pct += 10;\n onProgress(Math.min(pct, 100));\n setTimeout(tick, 250);\n } else if (scenario === 'upload-fail') {\n reject(UPLOAD_FAILED);\n } else {\n resolve({ documentId: `demo-${crypto.randomUUID()}` });\n }\n };\n setTimeout(tick, 250);\n });\n return { done, cancel: () => void (cancelled = true) };\n}\nconst parseError = (body: string): string => {\n try {\n return problemDetail(JSON.parse(body), UPLOAD_FAILED);\n } catch {\n return genericError();\n }\n};\n\n/** Wire DTO (all fields optional) → domain. */\nfunction toCategory(c: DocumentCategoryDto): DocumentCategory {\n return {\n categoryId: c.categoryId ?? '',\n label: c.label ?? '',\n description: c.description ?? '',\n required: c.required ?? false,\n acceptedTypes: c.acceptedTypes ?? [],\n maxSizeMb: c.maxSizeMb ?? 0,\n multiple: c.multiple ?? false,\n allowPostDelivery: c.allowPostDelivery ?? false,\n };\n}\n\nfunction toStatusItem(s: UploadStatusItemDto): StatusItem {\n return { localId: s.localId ?? '', status: s.status ?? 'unknown', documentId: s.documentId ?? undefined };\n}\n", "properties": [ { "name": "documentId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 16 }, { "name": "localId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 14 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 15 } ], "indexSignatures": [], "kind": 172, "description": "

One arrived/known status item from poll-on-return.

\n", "rawdescription": "\nOne arrived/known status item from poll-on-return.", "methods": [], "extends": [] }, { "name": "Store", "id": "interface-Store-a37705502ee39f3c0f29e4d6e9d75da640c8cbb0fcb82100a1baddfda3a85596b08019b398ef1a18152e1de16af4828538d42a8d93886e0509d7a17caaaa4233", "file": "src/app/shared/application/store.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Signal, signal } from '@angular/core';\n\n/**\n * A tiny \"Elm-style\" store. The whole idea: all state lives in ONE value\n * (the Model). The only way to change it is to send a message (Msg) to a PURE\n * function `update(model, msg)` that returns the next Model. Nothing else\n * mutates state, so to understand the app you only read the update function.\n *\n * Side effects (HTTP, timers) do NOT go in `update` — that stays pure and easy\n * to test. Instead, effectful \"command\" functions call the network and then\n * `dispatch` a message describing what happened (e.g. Loaded / Failed).\n */\nexport interface Store {\n /** The current state, as a read-only Angular signal. */\n readonly model: Signal;\n /** Send a message; the model becomes update(model, msg). */\n dispatch(msg: Msg): void;\n}\n\nexport function createStore(\n init: Model,\n update: (model: Model, msg: Msg) => Model,\n): Store {\n const model = signal(init);\n return {\n model: model.asReadonly(),\n // Use `.update` (raw current value, no tracked read) not `set(update(model(), …))`:\n // dispatch is a command and must never subscribe its caller to `model`. Reading\n // `model()` here inside an effect that also dispatches makes the effect depend on\n // its own write and livelock the main thread (crashed the upload wizards).\n dispatch: (msg) => model.update((m) => update(m, msg)),\n };\n}\n", "properties": [ { "name": "model", "deprecated": false, "deprecationMessage": "", "type": "Signal", "indexKey": "", "optional": false, "description": "

The current state, as a read-only Angular signal.

\n", "line": 15, "rawdescription": "\nThe current state, as a read-only Angular signal.", "modifierKind": [ 148 ] } ], "indexSignatures": [], "kind": 174, "description": "

A tiny "Elm-style" store. The whole idea: all state lives in ONE value\n(the Model). The only way to change it is to send a message (Msg) to a PURE\nfunction update(model, msg) that returns the next Model. Nothing else\nmutates state, so to understand the app you only read the update function.

\n

Side effects (HTTP, timers) do NOT go in update — that stays pure and easy\nto test. Instead, effectful "command" functions call the network and then\ndispatch a message describing what happened (e.g. Loaded / Failed).

\n", "rawdescription": "\n\nA tiny \"Elm-style\" store. The whole idea: all state lives in ONE value\n(the Model). The only way to change it is to send a message (Msg) to a PURE\nfunction `update(model, msg)` that returns the next Model. Nothing else\nmutates state, so to understand the app you only read the update function.\n\nSide effects (HTTP, timers) do NOT go in `update` — that stays pure and easy\nto test. Instead, effectful \"command\" functions call the network and then\n`dispatch` a message describing what happened (e.g. Loaded / Failed).\n", "methods": [ { "name": "dispatch", "args": [ { "name": "msg", "type": "Msg", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 17, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nSend a message; the model becomes update(model, msg).", "description": "

Send a message; the model becomes update(model, msg).

\n", "jsdoctags": [ { "name": "msg", "type": "Msg", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "extends": [] }, { "name": "SubmitApplicationRequest", "id": "interface-SubmitApplicationRequest-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "diplomaHerkomst", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1097 }, { "name": "documents", "deprecated": false, "deprecationMessage": "", "type": "DocumentRefDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1099 }, { "name": "uren", "deprecated": false, "deprecationMessage": "", "type": "number | undefined", "indexKey": "", "optional": true, "description": "", "line": 1098 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "SubmitApplicationResponse", "id": "interface-SubmitApplicationResponse-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "referentie", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1103 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "AanvraagStatusDto", "indexKey": "", "optional": true, "description": "", "line": 1104 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "TaskItem", "id": "interface-TaskItem-0de17745750573b2f302d6355409064bc5a2cd3835cbb67b5935992409efa3154c91acd23eea7fe469c1837582f24c0d8b14aa8bad0761bd63e1231b2cd427a4", "file": "src/app/shared/ui/task-list/task-list.component.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Component, input } from '@angular/core';\nimport { LinkComponent } from '@shared/ui/link/link.component';\n\n/** Presentational task shape — what \"Wat moet ik regelen\" renders. Domain-free so\n shared/ stays independent of any context (a context's task type that has these\n fields is structurally assignable). */\nexport interface TaskItem {\n readonly title: string;\n readonly description: string;\n readonly to: string;\n readonly actionLabel: string;\n}\n\n/** Molecule: the \"Wat moet ik regelen\" action list (NL Design System \"Mijn\n omgeving\" pattern). Each task is a titled row with a call to action. */\n@Component({\n selector: 'app-task-list',\n imports: [LinkComponent],\n styles: [`\n :host{display:block}\n .tasks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-md)}\n .task{\n display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md) var(--rhc-space-max-xl);\n align-items:center;justify-content:space-between;\n background:var(--rhc-color-wit);\n border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-inline-start:var(--rhc-border-width-md) solid var(--rhc-color-lintblauw-700);\n border-radius:var(--rhc-border-radius-md);\n padding:var(--rhc-space-max-lg) var(--rhc-space-max-xl);\n }\n .title{margin:0 0 var(--rhc-space-max-xs);font-weight:var(--rhc-text-font-weight-semi-bold)}\n .desc{margin:0;color:var(--rhc-color-foreground-subtle);font-size:var(--rhc-text-font-size-sm)}\n .cta{flex:0 0 auto}\n `],\n template: `\n
    \n @for (t of tasks(); track t.title) {\n
  • \n
    \n

    {{ t.title }}

    \n

    {{ t.description }}

    \n
    \n {{ t.actionLabel }} →\n
  • \n }\n
\n `,\n})\nexport class TaskListComponent {\n tasks = input.required();\n}\n", "properties": [ { "name": "actionLabel", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 11, "modifierKind": [ 148 ] }, { "name": "description", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 9, "modifierKind": [ 148 ] }, { "name": "title", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 8, "modifierKind": [ 148 ] }, { "name": "to", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 10, "modifierKind": [ 148 ] } ], "indexSignatures": [], "kind": 172, "description": "

Presentational task shape — what "Wat moet ik regelen" renders. Domain-free so\nshared/ stays independent of any context (a context's task type that has these\nfields is structurally assignable).

\n", "rawdescription": "\nPresentational task shape — what \"Wat moet ik regelen\" renders. Domain-free so\nshared/ stays independent of any context (a context's task type that has these\nfields is structurally assignable).", "methods": [], "extends": [] }, { "name": "Upload", "id": "interface-Upload-cd384c135d0cf4c44c9dd96f8fcafc852f27015dbdd1ed429e118bb2db250d6e0782800ab04ef957e392a5bb408ce5a9a8c8184a696dc2130d513426479e88c7", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { assertNever } from '@shared/kernel/fp';\n\n/**\n * Pure upload domain (no Angular). Reusable across wizards: the host wizard folds\n * `UploadState` into its Model and delegates upload `Msg`s to `reduceUpload`.\n * Illegal states are unrepresentable by construction; the few transitions a union\n * can't express (channel↔upload exclusivity, single-file categories) are enforced\n * here in the reducer. Effects live in the shell (upload-shell.service.ts).\n */\n\nexport type UploadStatus =\n | { type: 'idle' }\n | { type: 'queued' }\n | { type: 'uploading'; progressPct: number }\n | { type: 'complete'; documentId: string }\n | { type: 'failed'; reason: string }\n | { type: 'deleting'; documentId: string } // carries the id so a failed delete can revert\n | { type: 'deleted' };\n\nexport interface Upload {\n localId: string; // client-generated UUID; the sync tag / status key\n categoryId: string;\n fileName: string;\n fileSizeMb: number;\n status: UploadStatus;\n backgroundSync: boolean;\n}\n\nexport type DeliveryChannel = 'digital' | 'post';\n\nexport interface DocumentCategory {\n categoryId: string;\n label: string;\n description: string;\n required: boolean;\n acceptedTypes: string[];\n maxSizeMb: number;\n multiple: boolean;\n allowPostDelivery: boolean;\n}\n\nexport interface UploadState {\n categories: DocumentCategory[];\n uploads: Upload[];\n deliveryChannel: Record; // categoryId → channel; default 'digital'\n rejections: Record; // categoryId → client-side validation message (transient)\n backgroundSyncAvailable: boolean;\n categoriesError?: string;\n}\n\nexport const initialUpload: UploadState = {\n categories: [],\n uploads: [],\n deliveryChannel: {},\n rejections: {},\n backgroundSyncAvailable: false,\n};\n\nexport type UploadMsg =\n | { type: 'CategoriesLoaded'; categories: DocumentCategory[] }\n | { type: 'CategoriesLoadFailed'; reason: string }\n | { type: 'BackgroundSyncAvailability'; available: boolean }\n | { type: 'FileSelected'; categoryId: string; localId: string; fileName: string; fileSizeMb: number }\n | { type: 'FileRejected'; categoryId: string; reason: 'type' | 'size' | 'multiple' }\n | { type: 'UploadQueued'; localId: string; backgroundSync: boolean }\n | { type: 'UploadProgress'; localId: string; progressPct: number }\n | { type: 'UploadComplete'; localId: string; documentId: string }\n | { type: 'UploadFailed'; localId: string; reason: string }\n | { type: 'UploadRetried'; localId: string }\n | { type: 'UploadRemoved'; localId: string }\n | { type: 'UploadDeleteRequested'; localId: string; documentId: string }\n | { type: 'UploadDeleting'; localId: string }\n | { type: 'UploadDeleteComplete'; localId: string }\n | { type: 'UploadDeleteFailed'; localId: string; reason: string }\n | { type: 'DeliveryChannelChanged'; categoryId: string; channel: DeliveryChannel }\n | {\n type: 'BackgroundUploadsReturned';\n results: Array<{ localId: string } & ({ success: true; documentId: string } | { success: false; reason: string })>;\n };\n\nconst REJECTION_MESSAGES: Record<'type' | 'size' | 'multiple', string> = {\n type: $localize`:@@upload.reject.type:Dit bestandstype is niet toegestaan voor deze categorie.`,\n size: $localize`:@@upload.reject.size:Dit bestand is te groot.`,\n multiple: $localize`:@@upload.reject.multiple:U kunt voor deze categorie maar één bestand uploaden.`,\n};\n\nconst ACTIVE: ReadonlyArray = ['queued', 'uploading', 'complete'];\n\n/** A required category is satisfied by an initiated upload OR a post-delivery choice. */\nexport function categorySatisfied(s: UploadState, categoryId: string): boolean {\n if (s.deliveryChannel[categoryId] === 'post') return true;\n return s.uploads.some((u) => u.categoryId === categoryId && ACTIVE.includes(u.status.type));\n}\n\nexport function requiredCategoriesSatisfied(s: UploadState): boolean {\n return s.categories.filter((c) => c.required).every((c) => categorySatisfied(s, c.categoryId));\n}\n\n/**\n * FE format-validation (never authority — the server re-validates). Returns the\n * rejection reason for one file, or null if it passes the category's type/size.\n */\nexport function rejectReason(cat: DocumentCategory, file: { type: string; sizeMb: number }): 'type' | 'size' | null {\n if (cat.acceptedTypes.length > 0 && !cat.acceptedTypes.includes(file.type)) return 'type';\n if (cat.maxSizeMb > 0 && file.sizeMb > cat.maxSizeMb) return 'size';\n return null;\n}\n\n/** Map one upload's status, leaving the rest of the list untouched. */\nfunction mapUpload(s: UploadState, localId: string, f: (u: Upload) => Upload): UploadState {\n return { ...s, uploads: s.uploads.map((u) => (u.localId === localId ? f(u) : u)) };\n}\n\nconst find = (s: UploadState, localId: string) => s.uploads.find((u) => u.localId === localId);\nconst categoryOf = (s: UploadState, categoryId: string) => s.categories.find((c) => c.categoryId === categoryId);\n\nexport function reduceUpload(s: UploadState, m: UploadMsg): UploadState {\n switch (m.type) {\n case 'CategoriesLoaded': {\n const deliveryChannel = { ...s.deliveryChannel };\n for (const c of m.categories) deliveryChannel[c.categoryId] ??= 'digital';\n return { ...s, categories: m.categories, deliveryChannel, categoriesError: undefined };\n }\n case 'CategoriesLoadFailed':\n return { ...s, categoriesError: m.reason };\n case 'BackgroundSyncAvailability':\n return { ...s, backgroundSyncAvailable: m.available };\n\n case 'FileSelected': {\n // Reject at dispatch: unknown category, or a category set to post-delivery.\n if (!categoryOf(s, m.categoryId) || s.deliveryChannel[m.categoryId] === 'post') return s;\n const cat = categoryOf(s, m.categoryId)!;\n // Single-file categories: a new selection replaces any existing upload.\n const uploads = cat.multiple ? s.uploads : s.uploads.filter((u) => u.categoryId !== m.categoryId);\n const next: Upload = {\n localId: m.localId,\n categoryId: m.categoryId,\n fileName: m.fileName,\n fileSizeMb: m.fileSizeMb,\n status: { type: 'queued' },\n backgroundSync: false,\n };\n const { [m.categoryId]: _cleared, ...rejections } = s.rejections;\n return { ...s, uploads: [...uploads, next], rejections };\n }\n case 'FileRejected':\n return { ...s, rejections: { ...s.rejections, [m.categoryId]: REJECTION_MESSAGES[m.reason] } };\n\n case 'UploadQueued':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'queued' }, backgroundSync: m.backgroundSync }));\n case 'UploadProgress':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'uploading', progressPct: m.progressPct } }));\n case 'UploadComplete':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'complete', documentId: m.documentId } }));\n case 'UploadFailed':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'failed', reason: m.reason } }));\n case 'UploadRetried':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'queued' } }));\n\n case 'UploadRemoved':\n return { ...s, uploads: s.uploads.filter((u) => u.localId !== m.localId) };\n\n case 'UploadDeleteRequested':\n case 'UploadDeleting':\n // Both mark the in-flight delete; keep the documentId so a failure can revert.\n return mapUpload(s, m.localId, (u) => {\n const documentId = u.status.type === 'complete' ? u.status.documentId\n : u.status.type === 'deleting' ? u.status.documentId : '';\n return { ...u, status: { type: 'deleting', documentId } };\n });\n case 'UploadDeleteComplete':\n return { ...s, uploads: s.uploads.filter((u) => u.localId !== m.localId) };\n case 'UploadDeleteFailed':\n return mapUpload(s, m.localId, (u) =>\n u.status.type === 'deleting' ? { ...u, status: { type: 'complete', documentId: u.status.documentId } } : u);\n\n case 'DeliveryChannelChanged': {\n const cat = categoryOf(s, m.categoryId);\n // Reject post for a category that doesn't permit it.\n if (m.channel === 'post' && (!cat || !cat.allowPostDelivery)) return s;\n const deliveryChannel = { ...s.deliveryChannel, [m.categoryId]: m.channel };\n // Switching to post removes that category's uploads; switching to digital starts clean.\n const uploads = s.uploads.filter((u) => u.categoryId !== m.categoryId);\n return { ...s, deliveryChannel, uploads };\n }\n\n case 'BackgroundUploadsReturned': {\n let next = s;\n for (const r of m.results) {\n next = mapUpload(next, r.localId, (u) => ({\n ...u,\n status: r.success ? { type: 'complete', documentId: r.documentId } : { type: 'failed', reason: r.reason },\n }));\n }\n return next;\n }\n\n default:\n return assertNever(m);\n }\n}\n\n/** The submit payload fragment: digital docs carry their documentId, post categories the channel. */\nexport function deliveryRefs(s: UploadState): Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }> {\n const refs: Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }> = [];\n for (const c of s.categories) {\n if (s.deliveryChannel[c.categoryId] === 'post') {\n refs.push({ categoryId: c.categoryId, channel: 'post' });\n } else {\n for (const u of s.uploads) {\n if (u.categoryId === c.categoryId && u.status.type === 'complete') {\n refs.push({ categoryId: c.categoryId, channel: 'digital', documentId: u.status.documentId });\n }\n }\n }\n }\n return refs;\n}\n\n/** Used by the shell to find what to poll on return: still-in-flight uploads. */\nexport const inFlight = (s: UploadState): Upload[] =>\n s.uploads.filter((u) => u.status.type === 'queued' || u.status.type === 'uploading');\n", "properties": [ { "name": "backgroundSync", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 26 }, { "name": "categoryId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 22 }, { "name": "fileName", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 23 }, { "name": "fileSizeMb", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 24 }, { "name": "localId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 21 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "UploadStatus", "indexKey": "", "optional": false, "description": "", "line": 25 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "UploadCategoriesDto", "id": "interface-UploadCategoriesDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "categories", "deprecated": false, "deprecationMessage": "", "type": "DocumentCategoryDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1108 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "UploadControllerDeps", "id": "interface-UploadControllerDeps-81b65fb5f3fbf3b67a7e8c0d4d69b877c0ff7fff7d3fcc875f55833131e04d33b23a00311586c67570ad69f3c7d89b115460c746d5968dd6302281cb04c8a371", "file": "src/app/shared/upload/upload-controller.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { DestroyRef, effect, inject } from '@angular/core';\nimport { UploadAdapter } from './upload.adapter';\nimport { UploadShellService } from './upload-shell.service';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { SUBMIT_FAILED } from '@shared/application/submit';\nimport { DeliveryChannel, UploadMsg, UploadState, inFlight, rejectReason } from './upload.machine';\n\nexport interface UploadControllerDeps {\n wizardId: string;\n getUpload: () => UploadState;\n dispatch: (m: UploadMsg) => void;\n}\n\n/**\n * The effectful glue between the `` organism's events and the\n * pure upload reducer + transport. Both wizards instantiate one (in a field\n * initializer, like `createStore`). Holds the only state a reducer can't: the live\n * `File` blobs keyed by localId (needed to retry an upload). Loads categories,\n * reports background-sync availability, and polls on tab refocus.\n */\nexport function createUploadController(deps: UploadControllerDeps) {\n const adapter = inject(UploadAdapter);\n const shell = inject(UploadShellService);\n const files = new Map();\n const categoriesRes = adapter.categoriesResource(deps.wizardId);\n\n // Runs after the host's `Seed`/restore microtask (effects fire in CD, not field\n // init), so these dispatches aren't wiped by a state reseed.\n effect(() => {\n deps.dispatch({ type: 'BackgroundSyncAvailability', available: shell.backgroundSyncAvailable });\n const status = categoriesRes.status();\n if (status === 'resolved' || status === 'local') {\n deps.dispatch({ type: 'CategoriesLoaded', categories: categoriesRes.value() ?? [] });\n } else if (status === 'error') {\n deps.dispatch({ type: 'CategoriesLoadFailed', reason: problemDetail(categoriesRes.error(), SUBMIT_FAILED) });\n }\n });\n\n const onFocus = () => void shell.pollReturning(inFlight(deps.getUpload()), deps.dispatch);\n window.addEventListener('focus', onFocus);\n inject(DestroyRef).onDestroy(() => window.removeEventListener('focus', onFocus));\n\n function start(categoryId: string, file: File) {\n const localId = crypto.randomUUID();\n files.set(localId, file);\n deps.dispatch({ type: 'FileSelected', categoryId, localId, fileName: file.name, fileSizeMb: file.size / 1e6 });\n shell.upload({ localId, categoryId, wizardId: deps.wizardId, file }, deps.dispatch);\n }\n\n return {\n onFileSelected(categoryId: string, selected: File[]) {\n const cat = deps.getUpload().categories.find((c) => c.categoryId === categoryId);\n if (!cat) return;\n if (!cat.multiple && selected.length > 1) {\n deps.dispatch({ type: 'FileRejected', categoryId, reason: 'multiple' });\n return;\n }\n for (const file of selected) {\n const reason = rejectReason(cat, { type: file.type, sizeMb: file.size / 1e6 });\n if (reason) deps.dispatch({ type: 'FileRejected', categoryId, reason });\n else start(categoryId, file);\n }\n },\n onRemove(localId: string) {\n shell.cancel([localId]);\n files.delete(localId);\n deps.dispatch({ type: 'UploadRemoved', localId });\n },\n onRetry(localId: string) {\n const file = files.get(localId);\n const up = deps.getUpload().uploads.find((u) => u.localId === localId);\n if (!file || !up) return;\n deps.dispatch({ type: 'UploadRetried', localId });\n shell.upload({ localId, categoryId: up.categoryId, wizardId: deps.wizardId, file }, deps.dispatch);\n },\n onDelete(e: { localId: string; documentId: string }) {\n shell.delete(e.localId, e.documentId, deps.dispatch);\n },\n onChannelChange(categoryId: string, channel: DeliveryChannel) {\n const ids = deps\n .getUpload()\n .uploads.filter((u) => u.categoryId === categoryId)\n .map((u) => u.localId);\n shell.cancel(ids);\n deps.dispatch({ type: 'DeliveryChannelChanged', categoryId, channel });\n },\n };\n}\n", "properties": [ { "name": "dispatch", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "", "line": 11 }, { "name": "getUpload", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "", "line": 10 }, { "name": "wizardId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 9 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "UploadState", "id": "interface-UploadState-cd384c135d0cf4c44c9dd96f8fcafc852f27015dbdd1ed429e118bb2db250d6e0782800ab04ef957e392a5bb408ce5a9a8c8184a696dc2130d513426479e88c7", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { assertNever } from '@shared/kernel/fp';\n\n/**\n * Pure upload domain (no Angular). Reusable across wizards: the host wizard folds\n * `UploadState` into its Model and delegates upload `Msg`s to `reduceUpload`.\n * Illegal states are unrepresentable by construction; the few transitions a union\n * can't express (channel↔upload exclusivity, single-file categories) are enforced\n * here in the reducer. Effects live in the shell (upload-shell.service.ts).\n */\n\nexport type UploadStatus =\n | { type: 'idle' }\n | { type: 'queued' }\n | { type: 'uploading'; progressPct: number }\n | { type: 'complete'; documentId: string }\n | { type: 'failed'; reason: string }\n | { type: 'deleting'; documentId: string } // carries the id so a failed delete can revert\n | { type: 'deleted' };\n\nexport interface Upload {\n localId: string; // client-generated UUID; the sync tag / status key\n categoryId: string;\n fileName: string;\n fileSizeMb: number;\n status: UploadStatus;\n backgroundSync: boolean;\n}\n\nexport type DeliveryChannel = 'digital' | 'post';\n\nexport interface DocumentCategory {\n categoryId: string;\n label: string;\n description: string;\n required: boolean;\n acceptedTypes: string[];\n maxSizeMb: number;\n multiple: boolean;\n allowPostDelivery: boolean;\n}\n\nexport interface UploadState {\n categories: DocumentCategory[];\n uploads: Upload[];\n deliveryChannel: Record; // categoryId → channel; default 'digital'\n rejections: Record; // categoryId → client-side validation message (transient)\n backgroundSyncAvailable: boolean;\n categoriesError?: string;\n}\n\nexport const initialUpload: UploadState = {\n categories: [],\n uploads: [],\n deliveryChannel: {},\n rejections: {},\n backgroundSyncAvailable: false,\n};\n\nexport type UploadMsg =\n | { type: 'CategoriesLoaded'; categories: DocumentCategory[] }\n | { type: 'CategoriesLoadFailed'; reason: string }\n | { type: 'BackgroundSyncAvailability'; available: boolean }\n | { type: 'FileSelected'; categoryId: string; localId: string; fileName: string; fileSizeMb: number }\n | { type: 'FileRejected'; categoryId: string; reason: 'type' | 'size' | 'multiple' }\n | { type: 'UploadQueued'; localId: string; backgroundSync: boolean }\n | { type: 'UploadProgress'; localId: string; progressPct: number }\n | { type: 'UploadComplete'; localId: string; documentId: string }\n | { type: 'UploadFailed'; localId: string; reason: string }\n | { type: 'UploadRetried'; localId: string }\n | { type: 'UploadRemoved'; localId: string }\n | { type: 'UploadDeleteRequested'; localId: string; documentId: string }\n | { type: 'UploadDeleting'; localId: string }\n | { type: 'UploadDeleteComplete'; localId: string }\n | { type: 'UploadDeleteFailed'; localId: string; reason: string }\n | { type: 'DeliveryChannelChanged'; categoryId: string; channel: DeliveryChannel }\n | {\n type: 'BackgroundUploadsReturned';\n results: Array<{ localId: string } & ({ success: true; documentId: string } | { success: false; reason: string })>;\n };\n\nconst REJECTION_MESSAGES: Record<'type' | 'size' | 'multiple', string> = {\n type: $localize`:@@upload.reject.type:Dit bestandstype is niet toegestaan voor deze categorie.`,\n size: $localize`:@@upload.reject.size:Dit bestand is te groot.`,\n multiple: $localize`:@@upload.reject.multiple:U kunt voor deze categorie maar één bestand uploaden.`,\n};\n\nconst ACTIVE: ReadonlyArray = ['queued', 'uploading', 'complete'];\n\n/** A required category is satisfied by an initiated upload OR a post-delivery choice. */\nexport function categorySatisfied(s: UploadState, categoryId: string): boolean {\n if (s.deliveryChannel[categoryId] === 'post') return true;\n return s.uploads.some((u) => u.categoryId === categoryId && ACTIVE.includes(u.status.type));\n}\n\nexport function requiredCategoriesSatisfied(s: UploadState): boolean {\n return s.categories.filter((c) => c.required).every((c) => categorySatisfied(s, c.categoryId));\n}\n\n/**\n * FE format-validation (never authority — the server re-validates). Returns the\n * rejection reason for one file, or null if it passes the category's type/size.\n */\nexport function rejectReason(cat: DocumentCategory, file: { type: string; sizeMb: number }): 'type' | 'size' | null {\n if (cat.acceptedTypes.length > 0 && !cat.acceptedTypes.includes(file.type)) return 'type';\n if (cat.maxSizeMb > 0 && file.sizeMb > cat.maxSizeMb) return 'size';\n return null;\n}\n\n/** Map one upload's status, leaving the rest of the list untouched. */\nfunction mapUpload(s: UploadState, localId: string, f: (u: Upload) => Upload): UploadState {\n return { ...s, uploads: s.uploads.map((u) => (u.localId === localId ? f(u) : u)) };\n}\n\nconst find = (s: UploadState, localId: string) => s.uploads.find((u) => u.localId === localId);\nconst categoryOf = (s: UploadState, categoryId: string) => s.categories.find((c) => c.categoryId === categoryId);\n\nexport function reduceUpload(s: UploadState, m: UploadMsg): UploadState {\n switch (m.type) {\n case 'CategoriesLoaded': {\n const deliveryChannel = { ...s.deliveryChannel };\n for (const c of m.categories) deliveryChannel[c.categoryId] ??= 'digital';\n return { ...s, categories: m.categories, deliveryChannel, categoriesError: undefined };\n }\n case 'CategoriesLoadFailed':\n return { ...s, categoriesError: m.reason };\n case 'BackgroundSyncAvailability':\n return { ...s, backgroundSyncAvailable: m.available };\n\n case 'FileSelected': {\n // Reject at dispatch: unknown category, or a category set to post-delivery.\n if (!categoryOf(s, m.categoryId) || s.deliveryChannel[m.categoryId] === 'post') return s;\n const cat = categoryOf(s, m.categoryId)!;\n // Single-file categories: a new selection replaces any existing upload.\n const uploads = cat.multiple ? s.uploads : s.uploads.filter((u) => u.categoryId !== m.categoryId);\n const next: Upload = {\n localId: m.localId,\n categoryId: m.categoryId,\n fileName: m.fileName,\n fileSizeMb: m.fileSizeMb,\n status: { type: 'queued' },\n backgroundSync: false,\n };\n const { [m.categoryId]: _cleared, ...rejections } = s.rejections;\n return { ...s, uploads: [...uploads, next], rejections };\n }\n case 'FileRejected':\n return { ...s, rejections: { ...s.rejections, [m.categoryId]: REJECTION_MESSAGES[m.reason] } };\n\n case 'UploadQueued':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'queued' }, backgroundSync: m.backgroundSync }));\n case 'UploadProgress':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'uploading', progressPct: m.progressPct } }));\n case 'UploadComplete':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'complete', documentId: m.documentId } }));\n case 'UploadFailed':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'failed', reason: m.reason } }));\n case 'UploadRetried':\n return mapUpload(s, m.localId, (u) => ({ ...u, status: { type: 'queued' } }));\n\n case 'UploadRemoved':\n return { ...s, uploads: s.uploads.filter((u) => u.localId !== m.localId) };\n\n case 'UploadDeleteRequested':\n case 'UploadDeleting':\n // Both mark the in-flight delete; keep the documentId so a failure can revert.\n return mapUpload(s, m.localId, (u) => {\n const documentId = u.status.type === 'complete' ? u.status.documentId\n : u.status.type === 'deleting' ? u.status.documentId : '';\n return { ...u, status: { type: 'deleting', documentId } };\n });\n case 'UploadDeleteComplete':\n return { ...s, uploads: s.uploads.filter((u) => u.localId !== m.localId) };\n case 'UploadDeleteFailed':\n return mapUpload(s, m.localId, (u) =>\n u.status.type === 'deleting' ? { ...u, status: { type: 'complete', documentId: u.status.documentId } } : u);\n\n case 'DeliveryChannelChanged': {\n const cat = categoryOf(s, m.categoryId);\n // Reject post for a category that doesn't permit it.\n if (m.channel === 'post' && (!cat || !cat.allowPostDelivery)) return s;\n const deliveryChannel = { ...s.deliveryChannel, [m.categoryId]: m.channel };\n // Switching to post removes that category's uploads; switching to digital starts clean.\n const uploads = s.uploads.filter((u) => u.categoryId !== m.categoryId);\n return { ...s, deliveryChannel, uploads };\n }\n\n case 'BackgroundUploadsReturned': {\n let next = s;\n for (const r of m.results) {\n next = mapUpload(next, r.localId, (u) => ({\n ...u,\n status: r.success ? { type: 'complete', documentId: r.documentId } : { type: 'failed', reason: r.reason },\n }));\n }\n return next;\n }\n\n default:\n return assertNever(m);\n }\n}\n\n/** The submit payload fragment: digital docs carry their documentId, post categories the channel. */\nexport function deliveryRefs(s: UploadState): Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }> {\n const refs: Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }> = [];\n for (const c of s.categories) {\n if (s.deliveryChannel[c.categoryId] === 'post') {\n refs.push({ categoryId: c.categoryId, channel: 'post' });\n } else {\n for (const u of s.uploads) {\n if (u.categoryId === c.categoryId && u.status.type === 'complete') {\n refs.push({ categoryId: c.categoryId, channel: 'digital', documentId: u.status.documentId });\n }\n }\n }\n }\n return refs;\n}\n\n/** Used by the shell to find what to poll on return: still-in-flight uploads. */\nexport const inFlight = (s: UploadState): Upload[] =>\n s.uploads.filter((u) => u.status.type === 'queued' || u.status.type === 'uploading');\n", "properties": [ { "name": "backgroundSyncAvailable", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 47 }, { "name": "categories", "deprecated": false, "deprecationMessage": "", "type": "DocumentCategory[]", "indexKey": "", "optional": false, "description": "", "line": 43 }, { "name": "categoriesError", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 48 }, { "name": "deliveryChannel", "deprecated": false, "deprecationMessage": "", "type": "Record", "indexKey": "", "optional": false, "description": "", "line": 45 }, { "name": "rejections", "deprecated": false, "deprecationMessage": "", "type": "Record", "indexKey": "", "optional": false, "description": "", "line": 46 }, { "name": "uploads", "deprecated": false, "deprecationMessage": "", "type": "Upload[]", "indexKey": "", "optional": false, "description": "", "line": 44 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "UploadStatusDto", "id": "interface-UploadStatusDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "results", "deprecated": false, "deprecationMessage": "", "type": "UploadStatusItemDto[] | undefined", "indexKey": "", "optional": true, "description": "", "line": 1112 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "UploadStatusItemDto", "id": "interface-UploadStatusItemDto-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "properties": [ { "name": "documentId", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1118 }, { "name": "localId", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1116 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "string | undefined", "indexKey": "", "optional": true, "description": "", "line": 1117 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] }, { "name": "UploadTransport", "id": "interface-UploadTransport-ec4f738d45fc556f5419cef06bad97f2f12a90de63211f79059088a2827ea9ee851b1544ec2110033a7797b65eaeb7caf0d4508fd122384394eaf9a145ffa7f6", "file": "src/app/shared/upload/upload-shell.service.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Injectable, inject } from '@angular/core';\nimport { UploadAdapter, XhrUploadRequest, XhrUploadHandle, UPLOAD_ABORTED } from './upload.adapter';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { UploadMsg, Upload } from './upload.machine';\n\n/**\n * Transport seam (PRD §6): how upload bytes leave the browser. The shipped impl is\n * KeepaliveTransport (XHR for progress; poll-on-return covers the background gap).\n * A ServiceWorkerTransport would set `backgroundSyncAvailable = true` and survive a\n * closed tab — swapping it in touches only this interface.\n */\nexport interface UploadTransport {\n readonly backgroundSyncAvailable: boolean;\n send(req: XhrUploadRequest, onProgress: (pct: number) => void): XhrUploadHandle;\n}\n\n@Injectable({ providedIn: 'root' })\nclass KeepaliveTransport implements UploadTransport {\n private adapter = inject(UploadAdapter);\n readonly backgroundSyncAvailable = false; // no Service Worker registered in this POC\n send(req: XhrUploadRequest, onProgress: (pct: number) => void) {\n return this.adapter.xhrUpload(req, onProgress);\n }\n}\n\ntype Dispatch = (m: UploadMsg) => void;\n\n/**\n * Orchestrates upload effects: drives the transport and translates outcomes into\n * domain messages. Holds no UI state itself — the host wizard's reducer owns it.\n * Effects only; the reducer stays pure.\n */\n@Injectable({ providedIn: 'root' })\nexport class UploadShellService {\n private transport: UploadTransport = inject(KeepaliveTransport);\n private adapter = inject(UploadAdapter);\n private inflight = new Map void>(); // localId → cancel\n\n get backgroundSyncAvailable(): boolean {\n return this.transport.backgroundSyncAvailable;\n }\n\n /** Start (or retry) an upload: queue → progress → complete/failed. */\n upload(req: XhrUploadRequest, dispatch: Dispatch): void {\n dispatch({ type: 'UploadQueued', localId: req.localId, backgroundSync: this.backgroundSyncAvailable });\n const { done, cancel } = this.transport.send(req, (pct) =>\n dispatch({ type: 'UploadProgress', localId: req.localId, progressPct: pct }),\n );\n this.inflight.set(req.localId, cancel);\n done\n .then(({ documentId }) => dispatch({ type: 'UploadComplete', localId: req.localId, documentId }))\n .catch((e) => {\n if (e !== UPLOAD_ABORTED) {\n dispatch({ type: 'UploadFailed', localId: req.localId, reason: typeof e === 'string' ? e : '' });\n }\n })\n .finally(() => this.inflight.delete(req.localId));\n }\n\n /** Optimistic delete: mark deleting → complete (removed) / failed (reverted). */\n delete(localId: string, documentId: string, dispatch: Dispatch): void {\n dispatch({ type: 'UploadDeleting', localId });\n this.adapter\n .deleteDocument(documentId)\n .then(() => dispatch({ type: 'UploadDeleteComplete', localId }))\n .catch((e) => dispatch({ type: 'UploadDeleteFailed', localId, reason: problemDetail(e, '') }));\n }\n\n /** Cancel any in-flight XHRs (e.g. when a category switches to post-delivery). */\n cancel(localIds: string[]): void {\n for (const id of localIds) {\n this.inflight.get(id)?.();\n this.inflight.delete(id);\n }\n }\n\n /** Poll-on-return: ask the BFF which still-in-flight uploads have arrived. */\n async pollReturning(uploads: Upload[], dispatch: Dispatch): Promise {\n const ids = uploads.map((u) => u.localId);\n if (ids.length === 0) return;\n const items = await this.adapter.status(ids);\n const results = items\n .filter((i) => i.status === 'complete' && i.documentId)\n .map((i) => ({ localId: i.localId, success: true as const, documentId: i.documentId! }));\n if (results.length > 0) dispatch({ type: 'BackgroundUploadsReturned', results });\n }\n}\n", "properties": [ { "name": "backgroundSyncAvailable", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 13, "modifierKind": [ 148 ] } ], "indexSignatures": [], "kind": 174, "description": "

Transport seam (PRD §6): how upload bytes leave the browser. The shipped impl is\nKeepaliveTransport (XHR for progress; poll-on-return covers the background gap).\nA ServiceWorkerTransport would set backgroundSyncAvailable = true and survive a\nclosed tab — swapping it in touches only this interface.

\n", "rawdescription": "\n\nTransport seam (PRD §6): how upload bytes leave the browser. The shipped impl is\nKeepaliveTransport (XHR for progress; poll-on-return covers the background gap).\nA ServiceWorkerTransport would set `backgroundSyncAvailable = true` and survive a\nclosed tab — swapping it in touches only this interface.\n", "methods": [ { "name": "send", "args": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "onProgress", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "pct", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ] } ], "optional": false, "returnType": "XhrUploadHandle", "typeParameters": [], "line": 14, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "onProgress", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "pct", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "tagName": { "text": "param" } } ] } ], "extends": [] }, { "name": "Valid", "id": "interface-Valid-d3a799f0e07d1170099acce3acff423674ca7f22594847e870e6e02647d914a5263109f13f637ef9de59ab53bd41d63d7e8b60d6d14428a693efa5576b933439", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, assertNever } from '@shared/kernel/fp';\nimport { Uren, parseUren } from '@registratie/domain/value-objects/uren';\nimport {\n UploadState,\n UploadMsg,\n initialUpload,\n reduceUpload,\n requiredCategoriesSatisfied,\n deliveryRefs,\n} from '@shared/upload/upload.machine';\n\n/** What the user is typing (raw, possibly invalid). */\nexport interface Draft {\n uren: string;\n jaren: string;\n punten: string;\n}\n\nexport type StepErrors = Partial>;\n\n/** What we have AFTER parsing — branded/typed, guaranteed valid. */\nexport interface Valid {\n uren: Uren;\n jaren: number;\n punten: number;\n documents: Array<{ categoryId: string; channel: 'digital' | 'post'; documentId?: string }>;\n}\n\n/**\n * The whole wizard as one tagged union. `step` and `errors` exist ONLY while\n * Editing; Submitting/Submitted/Failed carry a `Valid` payload and nothing else.\n * So \"submitting while a field is invalid\" or \"showing the success screen with\n * errors set\" are unrepresentable — the bug class is gone by construction.\n */\nexport type WizardState =\n | { tag: 'Editing'; step: 1 | 2 | 3; draft: Draft; errors: StepErrors; upload: UploadState }\n | { tag: 'Submitting'; data: Valid }\n | { tag: 'Submitted'; data: Valid }\n | { tag: 'Failed'; data: Valid; error: string };\n\nexport const initial: WizardState = { tag: 'Editing', step: 1, draft: { uren: '', jaren: '', punten: '' }, errors: {}, upload: initialUpload };\n\n/** Has the user meaningfully started, so it's worth persisting as a Concept? */\nexport function hasProgress(s: Extract): boolean {\n return s.step > 1 || !!s.draft.uren || !!s.draft.jaren || !!s.draft.punten || deliveryRefs(s.upload).some((r) => r.channel === 'digital' && !!r.documentId);\n}\n\n/** Parse every field; on success hand back a Valid, else the per-field errors. */\nfunction validate(draft: Draft, upload: UploadState): Result {\n const uren = parseUren(draft.uren);\n const jaren = parseUren(draft.jaren);\n const punten = parseUren(draft.punten);\n const errors: StepErrors = {};\n if (!uren.ok) errors.uren = uren.error;\n if (!jaren.ok) errors.jaren = jaren.error;\n if (!punten.ok) errors.punten = punten.error;\n if (!requiredCategoriesSatisfied(upload)) {\n errors.documenten = $localize`:@@validation.documenten:Lever de verplichte documenten aan (upload of kies \"per post nasturen\").`;\n }\n if (uren.ok && jaren.ok && punten.ok && !errors.documenten) {\n return { ok: true, value: { uren: uren.value, jaren: jaren.value, punten: punten.value, documents: deliveryRefs(upload) } };\n }\n return { ok: false, error: errors };\n}\n\n/** Advance one step, gating on that step's fields. Illegal elsewhere = no-op. */\nexport function next(s: WizardState): WizardState {\n if (s.tag !== 'Editing') return s;\n const errors: StepErrors = {};\n if (s.step === 1) {\n const uren = parseUren(s.draft.uren);\n const jaren = parseUren(s.draft.jaren);\n if (!uren.ok) errors.uren = uren.error;\n if (!jaren.ok) errors.jaren = jaren.error;\n return Object.keys(errors).length === 0 ? { ...s, step: 2, errors: {} } : { ...s, errors };\n }\n if (s.step === 2) {\n const punten = parseUren(s.draft.punten);\n if (!punten.ok) errors.punten = punten.error;\n return punten.ok ? { ...s, step: 3, errors: {} } : { ...s, errors };\n }\n return s;\n}\n\nexport function back(s: WizardState): WizardState {\n if (s.tag !== 'Editing' || s.step === 1) return s;\n return { ...s, step: (s.step - 1) as 1 | 2, errors: {} };\n}\n\n/** Step 3 submit: parse everything + require documents; Submitting only with Valid. */\nexport function submit(s: WizardState): WizardState {\n if (s.tag !== 'Editing' || s.step !== 3) return s;\n const result = validate(s.draft, s.upload);\n return result.ok ? { tag: 'Submitting', data: result.value } : { ...s, errors: result.error };\n}\n\n/** Route an upload sub-message through the pure upload reducer (Editing only). */\nexport function upload(s: WizardState, msg: UploadMsg): WizardState {\n if (s.tag !== 'Editing') return s;\n return { ...s, upload: reduceUpload(s.upload, msg) };\n}\n\n/** Resolve the async submit. Only meaningful while Submitting. */\nexport function resolve(s: WizardState, r: Result): WizardState {\n if (s.tag !== 'Submitting') return s;\n return r.ok ? { tag: 'Submitted', data: s.data } : { tag: 'Failed', data: s.data, error: r.error };\n}\n\n/** Update one draft field while editing; ignored in any other state. */\nexport function setField(s: WizardState, key: keyof Draft, value: string): WizardState {\n if (s.tag !== 'Editing') return s;\n return { ...s, draft: { ...s.draft, [key]: value } };\n}\n\n/**\n * Every event that can happen to the wizard, as one message type. The component\n * sends a WizardMsg; `reduce` decides the next state. This is the Elm\n * Model+Msg+update pattern: ONE pure function describes all state changes.\n */\nexport type WizardMsg =\n | { tag: 'SetField'; key: keyof Draft; value: string }\n | { tag: 'Next' }\n | { tag: 'Back' }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed' }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'Upload'; msg: UploadMsg }\n | { tag: 'Seed'; state: WizardState }; // mount a specific state (stories/showcase)\n\nexport function reduce(s: WizardState, m: WizardMsg): WizardState {\n switch (m.tag) {\n case 'SetField':\n return setField(s, m.key, m.value);\n case 'Next':\n return next(s);\n case 'Back':\n return back(s);\n case 'Submit':\n return submit(s);\n case 'Retry':\n return s.tag === 'Failed' ? { tag: 'Submitting', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Submitting' ? { tag: 'Submitted', data: s.data } : s;\n case 'SubmitFailed':\n return s.tag === 'Submitting' ? { tag: 'Failed', data: s.data, error: m.error } : s;\n case 'Upload':\n return upload(s, m.msg);\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "documents", "deprecated": false, "deprecationMessage": "", "type": "Array", "indexKey": "", "optional": false, "description": "", "line": 26 }, { "name": "jaren", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 24 }, { "name": "punten", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 25 }, { "name": "uren", "deprecated": false, "deprecationMessage": "", "type": "Uren", "indexKey": "", "optional": false, "description": "", "line": 23 } ], "indexSignatures": [], "kind": 172, "description": "

What we have AFTER parsing — branded/typed, guaranteed valid.

\n", "rawdescription": "\nWhat we have AFTER parsing — branded/typed, guaranteed valid.", "methods": [], "extends": [] }, { "name": "Valid", "id": "interface-Valid-69e87ea9a6c36bd372087191f1524450d62f799934711812731fbbd8f034a9e92b7928082471c429b82990c34c47b84b6493735cb994ec6fdfb81b200e990467-1", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, assertNever } from '@shared/kernel/fp';\nimport { Postcode, parsePostcode } from '@registratie/domain/value-objects/postcode';\n\n/** What the user is typing (raw, possibly invalid). */\nexport interface Draft {\n straat: string;\n postcode: string;\n woonplaats: string;\n}\n\n/** After parsing — postcode is the branded type, so downstream can't get a raw one. */\nexport interface Valid {\n straat: string;\n postcode: Postcode;\n woonplaats: string;\n}\n\nexport type Errors = Partial>;\n\n/**\n * The change-request (adreswijziging) form as one tagged union — the SAME idiom\n * as the wizards, just single-step. `draft`/`errors` exist only while Editing;\n * Submitting/Submitted/Failed carry the parsed `Valid`. Illegal states (submitting\n * an invalid draft, a success screen with errors) are unrepresentable.\n */\nexport type State =\n | { tag: 'Editing'; draft: Draft; errors: Errors }\n | { tag: 'Submitting'; data: Valid }\n | { tag: 'Submitted'; data: Valid; referentie: string }\n | { tag: 'Failed'; data: Valid; error: string };\n\nexport const initial: State = {\n tag: 'Editing',\n draft: { straat: '', postcode: '', woonplaats: '' },\n errors: {},\n};\n\n/** Parse via the value objects; on success hand back a Valid, else per-field errors. */\nfunction validate(draft: Draft): Result {\n const straat = draft.straat.trim();\n const postcode = parsePostcode(draft.postcode);\n const errors: Errors = {};\n if (!straat) errors.straat = $localize`:@@validation.straat:Vul straat en huisnummer in.`;\n if (!postcode.ok) errors.postcode = postcode.error;\n if (straat && postcode.ok) {\n return { ok: true, value: { straat, postcode: postcode.value, woonplaats: draft.woonplaats.trim() } };\n }\n return { ok: false, error: errors };\n}\n\nexport type Msg =\n | { tag: 'SetField'; key: keyof Draft; value: string }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed'; referentie: string }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'Reset' }\n | { tag: 'Seed'; state: State }; // mount a specific state (stories/tests)\n\nexport function reduce(s: State, m: Msg): State {\n switch (m.tag) {\n case 'SetField':\n return s.tag === 'Editing' ? { ...s, draft: { ...s.draft, [m.key]: m.value } } : s;\n case 'Submit': {\n if (s.tag !== 'Editing') return s;\n const r = validate(s.draft);\n return r.ok ? { tag: 'Submitting', data: r.value } : { ...s, errors: r.error };\n }\n case 'Retry':\n return s.tag === 'Failed' ? { tag: 'Submitting', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Submitting' ? { tag: 'Submitted', data: s.data, referentie: m.referentie } : s;\n case 'SubmitFailed':\n return s.tag === 'Submitting' ? { tag: 'Failed', data: s.data, error: m.error } : s;\n case 'Reset':\n return initial;\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "postcode", "deprecated": false, "deprecationMessage": "", "type": "Postcode", "indexKey": "", "optional": false, "description": "", "line": 14 }, { "name": "straat", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 13 }, { "name": "woonplaats", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 15 } ], "indexSignatures": [], "kind": 172, "description": "

After parsing — postcode is the branded type, so downstream can't get a raw one.

\n", "rawdescription": "\nAfter parsing — postcode is the branded type, so downstream can't get a raw one.", "methods": [], "extends": [], "isDuplicate": true, "duplicateId": 1, "duplicateName": "Valid-1" }, { "name": "ValidIntake", "id": "interface-ValidIntake-609d18870aac1c3c8425f67e97c964d0503c535eea13c6c7e39c96904be318eb571893c8dc545b7005f66f09f7e19bcf73b4f880459bdb63fce0aa7291c838a5", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, ok, err, assertNever } from '@shared/kernel/fp';\nimport { Uren, parseUren } from '@registratie/domain/value-objects/uren';\n\n/**\n * A FIXED 3-step wizard with progressive disclosure. The steps never change in\n * number (always `STEPS`); instead, follow-up questions appear *inline within a\n * step* depending on earlier answers — answer \"buiten Nederland gewerkt? → ja\"\n * and the country/hours questions reveal in the same step; report few hours and\n * the scholing-question reveals inside the 'werk' step. \"Is this field required\n * right now\" is a pure function (`validateStep`/`lageUren`), so it's trivial to\n * test and impossible to get out of sync with the data.\n */\n\nexport type JaNee = 'ja' | 'nee';\n\n/** The three fixed steps. Each step groups one or more questions. */\nexport type StepId = 'buitenland' | 'werk' | 'review';\n\n/** One record carried across every step (and persisted). All optional: the user\n fills it in gradually, and branches may never ask some fields. */\nexport interface Answers {\n buitenlandGewerkt?: JaNee; // Q1\n land?: string; // Q1a — only when buitenlandGewerkt === 'ja'\n buitenlandseUren?: string; // Q1b — only when buitenlandGewerkt === 'ja'\n uren?: string; // Q2 — uren in NL\n scholingGevolgd?: JaNee; // Q3 — only when total hours are below the threshold\n punten?: string; // Q4\n}\n\n/** What we have after the review step parses — guaranteed valid/typed. */\nexport interface ValidIntake {\n werktBuitenland: boolean;\n land?: string;\n buitenlandseUren?: Uren;\n uren: Uren;\n aanvullendeScholing?: boolean;\n punten?: Uren; // only collected when aanvullende scholing is gevolgd (scholingGevolgd === 'ja')\n}\n\n/** Demo fallback only — the real threshold is a SERVER-OWNED policy value fetched\n at runtime (see IntakePolicyDto / SetPolicy). ponytail: default is the offline\n fallback; the server value wins. */\nexport const SCHOLING_THRESHOLD_DEFAULT = 1000;\n\n/** True when NL-hours are low enough that the scholing question must be answered.\n The threshold is passed in (server-owned), not hardcoded. */\nexport function lageUren(a: Answers, scholingThreshold = SCHOLING_THRESHOLD_DEFAULT): boolean {\n const r = parseUren(a.uren ?? '');\n return r.ok && r.value < scholingThreshold;\n}\n\n/** The fixed step list. Number of steps never changes; questions reveal inline. */\nexport const STEPS: StepId[] = ['buitenland', 'werk', 'review'];\n\n/** Per-field error map: one message per question, since a step holds several. */\ntype Errors = Partial>;\n\nexport type IntakeState =\n | { tag: 'Answering'; answers: Answers; cursor: number; errors: Errors; scholingThreshold: number }\n | { tag: 'Submitting'; data: ValidIntake }\n | { tag: 'Submitted'; data: ValidIntake }\n | { tag: 'Failed'; data: ValidIntake; error: string };\n\nexport const initial: IntakeState = { tag: 'Answering', answers: {}, cursor: 0, errors: {}, scholingThreshold: SCHOLING_THRESHOLD_DEFAULT };\n\n/** Which step the cursor currently points at (clamped to the fixed list). */\nexport function currentStep(s: Extract): StepId {\n return STEPS[Math.min(s.cursor, STEPS.length - 1)];\n}\n\n/** Has the user meaningfully started, so it's worth persisting as a Concept?\n (No auto-prefill here — pristine means truly untouched.) */\nexport function hasProgress(s: Extract): boolean {\n return s.cursor > 0 || Object.keys(s.answers).length > 0;\n}\n\n/** Validate every question currently visible in ONE step. Errors keyed per field. */\nfunction validateStep(step: StepId, a: Answers, scholingThreshold: number): Result {\n const errors: Errors = {};\n switch (step) {\n case 'buitenland':\n if (!a.buitenlandGewerkt) errors.buitenlandGewerkt = $localize`:@@validation.maakKeuze:Maak een keuze.`;\n else if (a.buitenlandGewerkt === 'ja') {\n if (!a.land || a.land.trim() === '') errors.land = $localize`:@@validation.land:Vul een land in.`;\n const u = parseUren(a.buitenlandseUren ?? '');\n if (!u.ok) errors.buitenlandseUren = u.error;\n }\n break;\n case 'werk': {\n const u = parseUren(a.uren ?? '');\n if (!u.ok) errors.uren = u.error;\n if (lageUren(a, scholingThreshold) && !a.scholingGevolgd) errors.scholingGevolgd = $localize`:@@validation.maakKeuze:Maak een keuze.`;\n // Nascholingspunten are only asked (and required) when scholing was followed.\n if (a.scholingGevolgd === 'ja') {\n const p = parseUren(a.punten ?? '');\n if (!p.ok) errors.punten = p.error;\n }\n break;\n }\n case 'review':\n break; // review shows a summary; no own fields\n default:\n return assertNever(step);\n }\n return Object.keys(errors).length > 0 ? err(errors) : ok(undefined);\n}\n\n/** Parse the whole questionnaire into a ValidIntake (called on submit). */\nfunction validateAll(a: Answers, scholingThreshold: number): Result {\n const errors: Errors = {};\n for (const step of STEPS) {\n const r = validateStep(step, a, scholingThreshold);\n if (!r.ok) Object.assign(errors, r.error);\n }\n if (Object.keys(errors).length > 0) return err(errors);\n\n const uren = parseUren(a.uren ?? '');\n // validateStep guaranteed uren parses, but keep the compiler happy.\n if (!uren.ok) return err(errors);\n\n const werktBuitenland = a.buitenlandGewerkt === 'ja';\n const buitenland = parseUren(a.buitenlandseUren ?? '');\n // Punten are only collected when aanvullende scholing was gevolgd.\n const punten = a.scholingGevolgd === 'ja' ? parseUren(a.punten ?? '') : undefined;\n return ok({\n werktBuitenland,\n land: werktBuitenland ? a.land : undefined,\n buitenlandseUren: werktBuitenland && buitenland.ok ? buitenland.value : undefined,\n uren: uren.value,\n aanvullendeScholing: lageUren(a, scholingThreshold) ? a.scholingGevolgd === 'ja' : undefined,\n punten: punten?.ok ? punten.value : undefined,\n });\n}\n\nexport function setAnswer(s: IntakeState, key: keyof Answers, value: string): IntakeState {\n if (s.tag !== 'Answering') return s;\n // Steps are fixed, so editing an answer never moves the cursor — it only\n // reveals/hides inline questions within the current step.\n return { ...s, answers: { ...s.answers, [key]: value } };\n}\n\nexport function next(s: IntakeState): IntakeState {\n if (s.tag !== 'Answering') return s;\n const r = validateStep(currentStep(s), s.answers, s.scholingThreshold);\n if (!r.ok) return { ...s, errors: r.error };\n return { ...s, cursor: Math.min(s.cursor + 1, STEPS.length - 1), errors: {} };\n}\n\n/** Apply a server-owned policy value (e.g. the scholing threshold). */\nexport function setPolicy(s: IntakeState, scholingThreshold: number): IntakeState {\n return s.tag === 'Answering' ? { ...s, scholingThreshold } : s;\n}\n\nexport function back(s: IntakeState): IntakeState {\n if (s.tag !== 'Answering' || s.cursor === 0) return s;\n return { ...s, cursor: s.cursor - 1, errors: {} };\n}\n\nexport function submit(s: IntakeState): IntakeState {\n if (s.tag !== 'Answering') return s;\n const r = validateAll(s.answers, s.scholingThreshold);\n return r.ok ? { tag: 'Submitting', data: r.value } : { ...s, errors: r.error };\n}\n\nexport function resolve(s: IntakeState, r: Result): IntakeState {\n if (s.tag !== 'Submitting') return s;\n return r.ok ? { tag: 'Submitted', data: s.data } : { tag: 'Failed', data: s.data, error: r.error };\n}\n\nexport type IntakeMsg =\n | { tag: 'SetAnswer'; key: keyof Answers; value: string }\n | { tag: 'Next' }\n | { tag: 'Back' }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed' }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'SetPolicy'; scholingThreshold: number }\n | { tag: 'Seed'; state: IntakeState };\n\nexport function reduce(s: IntakeState, m: IntakeMsg): IntakeState {\n switch (m.tag) {\n case 'SetAnswer':\n return setAnswer(s, m.key, m.value);\n case 'Next':\n return next(s);\n case 'Back':\n return back(s);\n case 'Submit':\n return submit(s);\n case 'Retry':\n return s.tag === 'Failed' ? { tag: 'Submitting', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Submitting' ? { tag: 'Submitted', data: s.data } : s;\n case 'SubmitFailed':\n return s.tag === 'Submitting' ? { tag: 'Failed', data: s.data, error: m.error } : s;\n case 'SetPolicy':\n return setPolicy(s, m.scholingThreshold);\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "aanvullendeScholing", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": true, "description": "", "line": 36 }, { "name": "buitenlandseUren", "deprecated": false, "deprecationMessage": "", "type": "Uren", "indexKey": "", "optional": true, "description": "", "line": 34 }, { "name": "land", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": true, "description": "", "line": 33 }, { "name": "punten", "deprecated": false, "deprecationMessage": "", "type": "Uren", "indexKey": "", "optional": true, "description": "", "line": 37 }, { "name": "uren", "deprecated": false, "deprecationMessage": "", "type": "Uren", "indexKey": "", "optional": false, "description": "", "line": 35 }, { "name": "werktBuitenland", "deprecated": false, "deprecationMessage": "", "type": "boolean", "indexKey": "", "optional": false, "description": "", "line": 32 } ], "indexSignatures": [], "kind": 172, "description": "

What we have after the review step parses — guaranteed valid/typed.

\n", "rawdescription": "\nWhat we have after the review step parses — guaranteed valid/typed.", "methods": [], "extends": [] }, { "name": "ValidRegistratie", "id": "interface-ValidRegistratie-b7c3c5d493aa141ca68cb964e63408db7152b07336b239864d3c430b84d8eb3e650d1a3abaf3fda253444af942c45f86138a5d8229832d49bda94eec35c33546", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Result, ok, err, assertNever } from '@shared/kernel/fp';\nimport { Postcode, parsePostcode } from '@registratie/domain/value-objects/postcode';\nimport { Email, parseEmail } from '@registratie/domain/value-objects/email';\nimport {\n UploadState,\n UploadMsg,\n DeliveryChannel,\n initialUpload,\n reduceUpload,\n requiredCategoriesSatisfied,\n deliveryRefs,\n} from '@shared/upload/upload.machine';\n\n/**\n * A FIXED 3-step registration wizard. The steps never change in number (always\n * `STEPS`): (1) adres + correspondentievoorkeur, (2) beroep o.b.v. diploma,\n * (3) controle & indienen. Follow-up questions appear *inline within a step*\n * (e.g. choosing 'email' reveals the e-mail field). \"Is this field required\n * right now\" is a pure function (`validateStep`), so it is trivial to test and\n * impossible to get out of sync with the data. Invariants live here, not in the\n * UI: the wizard reaches `Indienen` only when a complete `ValidRegistratie` parses.\n */\n\nexport type StepId = 'adres' | 'beroep' | 'controle';\n\n/** The fixed step list. Number of steps never changes; questions reveal inline. */\nexport const STEPS: StepId[] = ['adres', 'beroep', 'controle'];\n\n/** Where a piece of data came from — recorded on the aggregate (PRD §5). */\nexport type AdresHerkomst = 'brp' | 'handmatig';\nexport type DiplomaHerkomst = 'duo' | 'handmatig';\nexport type Correspondentie = 'email' | 'post';\n\n/** One record carried across every step (and persisted). All optional: the user\n fills it in gradually. Adres fields are kept flat so one `SetField` message\n serves them all (mirrors the intake machine). */\nexport interface Draft {\n straat?: string;\n postcode?: string;\n woonplaats?: string;\n adresHerkomst?: AdresHerkomst;\n correspondentie?: Correspondentie;\n email?: string;\n diplomaId?: string;\n diplomaHerkomst?: DiplomaHerkomst;\n beroep?: string; // DERIVED from the chosen DUO diploma (or declared for a manual one)\n vraagIds?: string[]; // ids of the policy questions that apply to the chosen diploma\n antwoorden: Record; // geldigheidsantwoorden, keyed by question id\n}\n\n/** What we have after the controle step parses — guaranteed valid/typed. */\nexport interface ValidRegistratie {\n adres: { straat: string; postcode: Postcode; woonplaats: string };\n adresHerkomst: AdresHerkomst;\n correspondentie: Correspondentie;\n email?: Email; // only when correspondentie === 'email'\n diplomaId: string;\n diplomaHerkomst: DiplomaHerkomst;\n beroep: string;\n antwoorden: Record;\n documents: Array<{ categoryId: string; channel: DeliveryChannel; documentId?: string }>;\n}\n\n/** Text fields settable via SetField. */\nexport type DraftField = 'straat' | 'postcode' | 'woonplaats' | 'email';\n\n/** Per-field error map. `antwoorden` holds per-policy-question errors, keyed by\n question id (a step can show several questions). */\nexport interface Errors {\n straat?: string;\n postcode?: string;\n woonplaats?: string;\n email?: string;\n correspondentie?: string;\n diploma?: string;\n documenten?: string;\n antwoorden?: Record;\n}\n\nexport type RegistratieState =\n | { tag: 'Invullen'; draft: Draft; cursor: number; errors: Errors; upload: UploadState }\n | { tag: 'Indienen'; data: ValidRegistratie }\n | { tag: 'Ingediend'; data: ValidRegistratie; referentie: string }\n | { tag: 'Mislukt'; data: ValidRegistratie; error: string };\n\nconst emptyDraft: Draft = { antwoorden: {} };\nexport const initial: RegistratieState = { tag: 'Invullen', draft: emptyDraft, cursor: 0, errors: {}, upload: initialUpload };\n\n/** Which step the cursor currently points at (clamped to the fixed list). */\nexport function currentStep(s: Extract): StepId {\n return STEPS[Math.min(s.cursor, STEPS.length - 1)];\n}\n\n/** Has the user meaningfully started, so it's worth persisting as a Concept? Excludes\n the automatic BRP address prefill on step 0 — a bare page visit creates nothing.\n ponytail: an address typed at step 0 without any of these signals is not yet\n persisted (created once they advance/choose); accepted regression vs. sessionStorage. */\nexport function hasProgress(s: Extract): boolean {\n const d = s.draft;\n return (\n s.cursor > 0 ||\n !!d.correspondentie ||\n !!d.email ||\n !!d.diplomaId ||\n !!d.beroep ||\n deliveryRefs(s.upload).some((r) => r.channel === 'digital' && !!r.documentId)\n );\n}\n\n/** Validate every question currently visible in ONE step. Errors keyed per field. */\nfunction validateStep(step: StepId, d: Draft, upload: UploadState): Result {\n const errors: Errors = {};\n switch (step) {\n case 'adres': {\n if (!d.straat || d.straat.trim() === '') errors.straat = $localize`:@@validation.straat2:Vul een straat en huisnummer in.`;\n const pc = parsePostcode(d.postcode ?? '');\n if (!pc.ok) errors.postcode = pc.error;\n if (!d.woonplaats || d.woonplaats.trim() === '') errors.woonplaats = $localize`:@@validation.woonplaats:Vul een woonplaats in.`;\n if (!d.correspondentie) errors.correspondentie = $localize`:@@validation.maakKeuze:Maak een keuze.`;\n // E-mail is only required when 'email' is the chosen channel.\n if (d.correspondentie === 'email') {\n const e = parseEmail(d.email ?? '');\n if (!e.ok) errors.email = e.error;\n }\n break;\n }\n case 'beroep': {\n // A diploma must be chosen (or declared manually); its beroep is then known.\n if (!d.diplomaId || !d.beroep) {\n errors.diploma = $localize`:@@validation.diploma:Kies het diploma waarmee u zich wilt registreren, of voer het handmatig in.`;\n break;\n }\n // Every policy question the chosen diploma raised must be answered. Which\n // questions apply is server-decided (carried in `vraagIds`); we only check\n // they're answered.\n const open: Record = {};\n for (const id of d.vraagIds ?? []) {\n if (!(d.antwoorden[id] ?? '').trim()) open[id] = $localize`:@@validation.beantwoordVraag:Beantwoord deze vraag.`;\n }\n if (Object.keys(open).length > 0) errors.antwoorden = open;\n // Required documents for this wizard attach to the beroep step (inline upload).\n if (!requiredCategoriesSatisfied(upload)) {\n errors.documenten = $localize`:@@validation.documenten:Lever de verplichte documenten aan (upload of kies \"per post nasturen\").`;\n }\n break;\n }\n case 'controle':\n break; // controle shows a summary; no own fields\n default:\n return assertNever(step);\n }\n return Object.keys(errors).length > 0 ? err(errors) : ok(undefined);\n}\n\n/** Parse the whole wizard into a ValidRegistratie (called on submit). */\nfunction validateAll(d: Draft, upload: UploadState): Result {\n const errors: Errors = {};\n for (const step of STEPS) {\n const r = validateStep(step, d, upload);\n if (!r.ok) Object.assign(errors, r.error);\n }\n if (Object.keys(errors).length > 0) return err(errors);\n\n const pc = parsePostcode(d.postcode ?? '');\n // validateStep guaranteed these parse, but keep the compiler happy.\n if (!pc.ok || !d.diplomaId || !d.beroep || !d.correspondentie) return err(errors);\n const email = d.correspondentie === 'email' ? parseEmail(d.email ?? '') : undefined;\n // Keep only the answers to the questions that actually applied.\n const vraagIds = d.vraagIds ?? [];\n const antwoorden = Object.fromEntries(vraagIds.map((id) => [id, d.antwoorden[id] ?? '']));\n\n return ok({\n adres: { straat: d.straat!, postcode: pc.value, woonplaats: d.woonplaats! },\n adresHerkomst: d.adresHerkomst ?? 'handmatig',\n correspondentie: d.correspondentie,\n email: email?.ok ? email.value : undefined,\n diplomaId: d.diplomaId,\n diplomaHerkomst: d.diplomaHerkomst ?? 'handmatig',\n beroep: d.beroep,\n antwoorden,\n documents: deliveryRefs(upload),\n });\n}\n\nexport function setField(s: RegistratieState, key: DraftField, value: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const draft: Draft = { ...s.draft, [key]: value };\n // Editing an address field means the user owns it now — not the BRP copy.\n if (key === 'straat' || key === 'postcode' || key === 'woonplaats') draft.adresHerkomst = 'handmatig';\n return { ...s, draft };\n}\n\nexport function setCorrespondentie(s: RegistratieState, value: Correspondentie): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, correspondentie: value } };\n}\n\n/** Prefill the address from a BRP lookup and flag its origin (PRD §7). */\nexport function prefillAdres(s: RegistratieState, straat: string, postcode: string, woonplaats: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, straat, postcode, woonplaats, adresHerkomst: 'brp' } };\n}\n\n/** Pick a DUO diploma; the beroep is derived from it and the applicable policy\n questions (`vraagIds`) come with it (both server-computed, passed in). */\nexport function kiesDiploma(s: RegistratieState, diplomaId: string, beroep: string, vraagIds: string[]): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, diplomaId, beroep, vraagIds, diplomaHerkomst: 'duo' }, errors: {} };\n}\n\n/** Switch to manual diploma entry: the diploma isn't in DUO, so the MAXIMAL\n policy-question set applies and the entry is flagged handmatig/unverified. The\n beroep is declared separately (declareerBeroep). */\nexport function kiesHandmatig(s: RegistratieState, vraagIds: string[]): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, diplomaId: 'handmatig', beroep: undefined, vraagIds, diplomaHerkomst: 'handmatig' }, errors: {} };\n}\n\n/** Declare the beroep for a manually-entered diploma (chosen from a fixed list). */\nexport function declareerBeroep(s: RegistratieState, beroep: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, beroep } };\n}\n\nexport function setAntwoord(s: RegistratieState, vraagId: string, value: string): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, draft: { ...s.draft, antwoorden: { ...s.draft.antwoorden, [vraagId]: value } } };\n}\n\nexport function next(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const r = validateStep(currentStep(s), s.draft, s.upload);\n if (!r.ok) return { ...s, errors: r.error };\n return { ...s, cursor: Math.min(s.cursor + 1, STEPS.length - 1), errors: {} };\n}\n\nexport function back(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen' || s.cursor === 0) return s;\n return { ...s, cursor: s.cursor - 1, errors: {} };\n}\n\n/** Jump back to an earlier step to correct data (controle → step N). Forward\n jumps are not allowed (would skip validation). Preserves the draft. */\nexport function gaNaarStap(s: RegistratieState, cursor: number): RegistratieState {\n if (s.tag !== 'Invullen' || cursor < 0 || cursor >= s.cursor) return s;\n return { ...s, cursor, errors: {} };\n}\n\nexport function submit(s: RegistratieState): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n const r = validateAll(s.draft, s.upload);\n return r.ok ? { tag: 'Indienen', data: r.value } : { ...s, errors: r.error };\n}\n\n/** Route an upload sub-message through the pure upload reducer (Invullen only). */\nexport function upload(s: RegistratieState, msg: UploadMsg): RegistratieState {\n if (s.tag !== 'Invullen') return s;\n return { ...s, upload: reduceUpload(s.upload, msg) };\n}\n\nexport function resolve(s: RegistratieState, r: Result): RegistratieState {\n if (s.tag !== 'Indienen') return s;\n return r.ok ? { tag: 'Ingediend', data: s.data, referentie: r.value } : { tag: 'Mislukt', data: s.data, error: r.error };\n}\n\nexport type RegistratieMsg =\n | { tag: 'SetField'; key: DraftField; value: string }\n | { tag: 'SetCorrespondentie'; value: Correspondentie }\n | { tag: 'PrefillAdres'; straat: string; postcode: string; woonplaats: string }\n | { tag: 'KiesDiploma'; diplomaId: string; beroep: string; vraagIds: string[] }\n | { tag: 'KiesHandmatig'; vraagIds: string[] }\n | { tag: 'DeclareerBeroep'; beroep: string }\n | { tag: 'SetAntwoord'; vraagId: string; value: string }\n | { tag: 'Next' }\n | { tag: 'Back' }\n | { tag: 'GaNaarStap'; cursor: number }\n | { tag: 'Submit' }\n | { tag: 'Retry' }\n | { tag: 'SubmitConfirmed'; referentie: string }\n | { tag: 'SubmitFailed'; error: string }\n | { tag: 'Upload'; msg: UploadMsg }\n | { tag: 'Seed'; state: RegistratieState };\n\nexport function reduce(s: RegistratieState, m: RegistratieMsg): RegistratieState {\n switch (m.tag) {\n case 'SetField':\n return setField(s, m.key, m.value);\n case 'SetCorrespondentie':\n return setCorrespondentie(s, m.value);\n case 'PrefillAdres':\n return prefillAdres(s, m.straat, m.postcode, m.woonplaats);\n case 'KiesDiploma':\n return kiesDiploma(s, m.diplomaId, m.beroep, m.vraagIds);\n case 'KiesHandmatig':\n return kiesHandmatig(s, m.vraagIds);\n case 'DeclareerBeroep':\n return declareerBeroep(s, m.beroep);\n case 'SetAntwoord':\n return setAntwoord(s, m.vraagId, m.value);\n case 'Next':\n return next(s);\n case 'Back':\n return back(s);\n case 'GaNaarStap':\n return gaNaarStap(s, m.cursor);\n case 'Submit':\n return submit(s);\n case 'Retry':\n return s.tag === 'Mislukt' ? { tag: 'Indienen', data: s.data } : s;\n case 'SubmitConfirmed':\n return s.tag === 'Indienen' ? { tag: 'Ingediend', data: s.data, referentie: m.referentie } : s;\n case 'SubmitFailed':\n return s.tag === 'Indienen' ? { tag: 'Mislukt', data: s.data, error: m.error } : s;\n case 'Upload':\n return upload(s, m.msg);\n case 'Seed':\n return m.state;\n default:\n return assertNever(m);\n }\n}\n", "properties": [ { "name": "adres", "deprecated": false, "deprecationMessage": "", "type": "literal type", "indexKey": "", "optional": false, "description": "", "line": 53 }, { "name": "adresHerkomst", "deprecated": false, "deprecationMessage": "", "type": "AdresHerkomst", "indexKey": "", "optional": false, "description": "", "line": 54 }, { "name": "antwoorden", "deprecated": false, "deprecationMessage": "", "type": "Record", "indexKey": "", "optional": false, "description": "", "line": 60 }, { "name": "beroep", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 59 }, { "name": "correspondentie", "deprecated": false, "deprecationMessage": "", "type": "Correspondentie", "indexKey": "", "optional": false, "description": "", "line": 55 }, { "name": "diplomaHerkomst", "deprecated": false, "deprecationMessage": "", "type": "DiplomaHerkomst", "indexKey": "", "optional": false, "description": "", "line": 58 }, { "name": "diplomaId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 57 }, { "name": "documents", "deprecated": false, "deprecationMessage": "", "type": "Array", "indexKey": "", "optional": false, "description": "", "line": 61 }, { "name": "email", "deprecated": false, "deprecationMessage": "", "type": "Email", "indexKey": "", "optional": true, "description": "", "line": 56 } ], "indexSignatures": [], "kind": 172, "description": "

What we have after the controle step parses — guaranteed valid/typed.

\n", "rawdescription": "\nWhat we have after the controle step parses — guaranteed valid/typed.", "methods": [], "extends": [] }, { "name": "WizardError", "id": "interface-WizardError-83776d36ee9e352e1f6e9d6be8422e18099e626c0cd999197ad35df7d5ce1e58ef6639ab1973e1840b2a727eb9cd7ccf71626ca7f6e31a4c887969ad9d9d435f", "file": "src/app/shared/layout/wizard-shell/wizard-shell.component.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Component, ElementRef, effect, input, output, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { SpinnerComponent } from '@shared/ui/spinner/spinner.component';\nimport { StepperComponent } from '@shared/ui/stepper/stepper.component';\n\n/** A flat validation error pointing at a field: `id` matches the field's anchor. */\nexport interface WizardError {\n readonly id: string;\n readonly message: string;\n}\n\nexport type WizardStatus = 'editing' | 'submitting' | 'submitted' | 'failed';\n\n/**\n * Template: the canonical shell every wizard renders into, so they cannot drift.\n * It owns the consistent outline — stepper + focusable step heading + error\n * summary + the
+ the Back/Next/Cancel action bar + the submitting/\n * submitted/failed states — and the a11y focus management.\n *\n * Presentational and unidirectional: all state stays in the wizard container\n * (the Elm-style store). Inputs flow down; the container reacts to the outputs\n * and dispatches messages. The step's own fields are projected as the default\n * slot; the success screen is projected via [wizardSuccess].\n */\n@Component({\n selector: 'app-wizard-shell',\n imports: [FormsModule, ButtonComponent, AlertComponent, SpinnerComponent, StepperComponent],\n styles: [`\n .es-title{margin:0 0 var(--rhc-space-max-sm)}\n .es-list{margin:0;padding-inline-start:var(--rhc-space-max-xl)}\n `],\n template: `\n @switch (status()) {\n @case ('editing') {\n \n

{{ stepTitle() }}

\n @if (errors().length) {\n
\n }\n \n \n
\n @if (canGoBack()) {\n Vorige\n }\n {{ primaryLabel() }}\n Annuleren\n
\n \n }\n @case ('submitting') {\n {{ submittingLabel() }}\n }\n @case ('submitted') {\n \n }\n @case ('failed') {\n {{ errorMessage() }}\n
\n Opnieuw proberen\n
\n }\n }\n `,\n})\nexport class WizardShellComponent {\n steps = input.required();\n current = input.required();\n stepTitle = input.required();\n status = input.required();\n primaryLabel = input.required();\n canGoBack = input(false);\n errors = input([]);\n errorMessage = input('');\n submittingLabel = input($localize`:@@wizard.submitting:Aanvraag wordt verwerkt…`);\n\n primary = output();\n back = output();\n cancel = output();\n retry = output();\n\n /** Error-summary link: focus the field instead of letting the browser navigate.\n A fragment href resolves against , not the current route, so\n a real navigation would reload to \"/\" and bounce to login. */\n protected goToField(ev: Event, id: string) {\n ev.preventDefault();\n document.getElementById(id)?.focus(); // focus() scrolls the input into view\n }\n\n private stepHeading = viewChild>('stepHeading');\n private errorSummary = viewChild>('errorSummary');\n\n constructor() {\n // A11y: move focus to the step heading when the step changes (skip first run\n // so we don't grab focus on initial load). Tracks current(), which is value-\n // stable across keystrokes, so typing never steals focus.\n let firstStep = true;\n effect(() => {\n this.current();\n if (firstStep) { firstStep = false; return; }\n untracked(() => queueMicrotask(() => this.stepHeading()?.nativeElement.focus()));\n });\n // A11y: when validation errors first appear (after a failed submit), move\n // focus to the error summary so it's announced. Only on the rising edge\n // (none → some): typing rebuilds the errors array each keystroke, and\n // re-focusing then would scroll the page up mid-edit. The summary keeps\n // role=\"alert\", so content changes are still announced without the jump.\n let firstErr = true;\n let hadErrors = false;\n effect(() => {\n const has = this.errors().length > 0;\n if (firstErr) { firstErr = false; hadErrors = has; return; }\n if (has && !hadErrors) untracked(() => queueMicrotask(() => this.errorSummary()?.nativeElement.focus()));\n hadErrors = has;\n });\n }\n}\n", "properties": [ { "name": "id", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 10, "modifierKind": [ 148 ] }, { "name": "message", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 11, "modifierKind": [ 148 ] } ], "indexSignatures": [], "kind": 172, "description": "

A flat validation error pointing at a field: id matches the field's anchor.

\n", "rawdescription": "\nA flat validation error pointing at a field: `id` matches the field's anchor.", "methods": [], "extends": [] }, { "name": "XhrUploadHandle", "id": "interface-XhrUploadHandle-bb80b81784601579976fed392f1c4e638f6945087adb775183c617fc8b015821f1a9ce89762fe24adcdab49c8761256a98fd3e6fe0251d3a6f250ef0aed7b62b", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport {\n ApiClient,\n DocumentCategoryDto,\n UploadStatusItemDto,\n} from '@shared/infrastructure/api-client';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { currentScenario } from '@shared/infrastructure/scenario';\nimport { environment } from '../../../environments/environment';\nimport { DocumentCategory } from './upload.machine';\n\n/** One arrived/known status item from poll-on-return. */\nexport interface StatusItem {\n localId: string;\n status: string; // 'complete' | 'unknown'\n documentId?: string;\n}\n\nexport interface XhrUploadRequest {\n localId: string;\n categoryId: string;\n wizardId: string;\n file: File;\n}\n\n/** A live upload: progress is reported via the callback; cancel aborts the XHR. */\nexport interface XhrUploadHandle {\n done: Promise<{ documentId: string }>;\n cancel: () => void;\n}\n\n/** Sentinel rejection so the caller can tell a user-cancel from a real failure. */\nexport const UPLOAD_ABORTED = Symbol('upload-aborted');\n\n/**\n * Infrastructure: the only place upload HTTP lives. Reads (categories, status,\n * delete) go through the NSwag client; the multipart POST is hand-written XHR\n * because the generated client is JSON-only (the endpoint is ExcludeFromDescription)\n * and we need upload-progress events + cancellation, which fetch can't give us.\n */\n@Injectable({ providedIn: 'root' })\nexport class UploadAdapter {\n private client = inject(ApiClient);\n\n categoriesResource(wizardId: string) {\n return resource({ loader: () => this.client.categories(wizardId).then((r) => (r.categories ?? []).map(toCategory)) });\n }\n\n /** Poll-on-return: which client localIds have arrived at the BFF. */\n status(localIds: string[]): Promise {\n if (localIds.length === 0) return Promise.resolve([]);\n return this.client.status(localIds.join(',')).then((r) => (r.results ?? []).map(toStatusItem));\n }\n\n /** User delete; throws a ProblemDetails (e.g. 409 once linked) the caller maps. */\n deleteDocument(documentId: string): Promise {\n return this.client.uploads(documentId);\n }\n\n /**\n * Direct URL to the stored bytes, for a preview/download link (``) — the\n * server serves it inline for pdf/image, attachment otherwise. Not a fetch: the\n * browser opens it. demo-* ids (dev simulation) have no bytes and 404 here.\n */\n contentUrl(documentId: string): string {\n return `${environment.apiBaseUrl}/api/v1/uploads/${documentId}/content`;\n }\n\n /**\n * Multipart upload with progress + cancel. ponytail: XHR (not fetch keepalive) —\n * progress events need XHR; the keepalive/background gap is covered by\n * poll-on-return (UploadShellService.pollReturning). Swap in a Service Worker\n * transport behind UploadTransport for true background sync.\n */\n xhrUpload(req: XhrUploadRequest, onProgress: (pct: number) => void): XhrUploadHandle {\n const scenario = currentScenario();\n if (scenario === 'upload-slow' || scenario === 'upload-fail') return simulateUpload(scenario, onProgress);\n\n const xhr = new XMLHttpRequest();\n const form = new FormData();\n form.append('file', req.file);\n form.append('categoryId', req.categoryId);\n form.append('localId', req.localId);\n form.append('wizardId', req.wizardId);\n\n let aborted = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n xhr.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) onProgress(Math.round((e.loaded / e.total) * 100));\n });\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n resolve({ documentId: JSON.parse(xhr.responseText).documentId });\n } catch {\n reject(genericError());\n }\n } else {\n reject(parseError(xhr.responseText));\n }\n });\n xhr.addEventListener('error', () => reject(genericError()));\n xhr.addEventListener('abort', () => (aborted ? reject(UPLOAD_ABORTED) : reject(genericError())));\n });\n\n xhr.open('POST', `${environment.apiBaseUrl}/api/v1/uploads`);\n xhr.send(form);\n return { done, cancel: () => ((aborted = true), xhr.abort()) };\n }\n}\n\nconst UPLOAD_FAILED = $localize`:@@upload.failed:Uploaden is niet gelukt. Probeer het opnieuw.`;\nconst genericError = (): string => UPLOAD_FAILED;\n\n/**\n * Demo-only (dev): the real XHR POST finishes instantly for metadata, so progress\n * and failure can't otherwise be shown. Drives the progress bar over ~2.5s, then\n * succeeds (`upload-slow`) or fails (`upload-fail`). ponytail: timer-based, cancel\n * via the returned handle; no network.\n */\nfunction simulateUpload(scenario: 'upload-slow' | 'upload-fail', onProgress: (pct: number) => void): XhrUploadHandle {\n let pct = 0;\n let cancelled = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n const tick = () => {\n if (cancelled) {\n reject(UPLOAD_ABORTED);\n } else if (pct < 100) {\n pct += 10;\n onProgress(Math.min(pct, 100));\n setTimeout(tick, 250);\n } else if (scenario === 'upload-fail') {\n reject(UPLOAD_FAILED);\n } else {\n resolve({ documentId: `demo-${crypto.randomUUID()}` });\n }\n };\n setTimeout(tick, 250);\n });\n return { done, cancel: () => void (cancelled = true) };\n}\nconst parseError = (body: string): string => {\n try {\n return problemDetail(JSON.parse(body), UPLOAD_FAILED);\n } catch {\n return genericError();\n }\n};\n\n/** Wire DTO (all fields optional) → domain. */\nfunction toCategory(c: DocumentCategoryDto): DocumentCategory {\n return {\n categoryId: c.categoryId ?? '',\n label: c.label ?? '',\n description: c.description ?? '',\n required: c.required ?? false,\n acceptedTypes: c.acceptedTypes ?? [],\n maxSizeMb: c.maxSizeMb ?? 0,\n multiple: c.multiple ?? false,\n allowPostDelivery: c.allowPostDelivery ?? false,\n };\n}\n\nfunction toStatusItem(s: UploadStatusItemDto): StatusItem {\n return { localId: s.localId ?? '', status: s.status ?? 'unknown', documentId: s.documentId ?? undefined };\n}\n", "properties": [ { "name": "cancel", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "", "line": 29 }, { "name": "done", "deprecated": false, "deprecationMessage": "", "type": "Promise", "indexKey": "", "optional": false, "description": "", "line": 28 } ], "indexSignatures": [], "kind": 172, "description": "

A live upload: progress is reported via the callback; cancel aborts the XHR.

\n", "rawdescription": "\nA live upload: progress is reported via the callback; cancel aborts the XHR.", "methods": [], "extends": [] }, { "name": "XhrUploadRequest", "id": "interface-XhrUploadRequest-bb80b81784601579976fed392f1c4e638f6945087adb775183c617fc8b015821f1a9ce89762fe24adcdab49c8761256a98fd3e6fe0251d3a6f250ef0aed7b62b", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "interface", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport {\n ApiClient,\n DocumentCategoryDto,\n UploadStatusItemDto,\n} from '@shared/infrastructure/api-client';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { currentScenario } from '@shared/infrastructure/scenario';\nimport { environment } from '../../../environments/environment';\nimport { DocumentCategory } from './upload.machine';\n\n/** One arrived/known status item from poll-on-return. */\nexport interface StatusItem {\n localId: string;\n status: string; // 'complete' | 'unknown'\n documentId?: string;\n}\n\nexport interface XhrUploadRequest {\n localId: string;\n categoryId: string;\n wizardId: string;\n file: File;\n}\n\n/** A live upload: progress is reported via the callback; cancel aborts the XHR. */\nexport interface XhrUploadHandle {\n done: Promise<{ documentId: string }>;\n cancel: () => void;\n}\n\n/** Sentinel rejection so the caller can tell a user-cancel from a real failure. */\nexport const UPLOAD_ABORTED = Symbol('upload-aborted');\n\n/**\n * Infrastructure: the only place upload HTTP lives. Reads (categories, status,\n * delete) go through the NSwag client; the multipart POST is hand-written XHR\n * because the generated client is JSON-only (the endpoint is ExcludeFromDescription)\n * and we need upload-progress events + cancellation, which fetch can't give us.\n */\n@Injectable({ providedIn: 'root' })\nexport class UploadAdapter {\n private client = inject(ApiClient);\n\n categoriesResource(wizardId: string) {\n return resource({ loader: () => this.client.categories(wizardId).then((r) => (r.categories ?? []).map(toCategory)) });\n }\n\n /** Poll-on-return: which client localIds have arrived at the BFF. */\n status(localIds: string[]): Promise {\n if (localIds.length === 0) return Promise.resolve([]);\n return this.client.status(localIds.join(',')).then((r) => (r.results ?? []).map(toStatusItem));\n }\n\n /** User delete; throws a ProblemDetails (e.g. 409 once linked) the caller maps. */\n deleteDocument(documentId: string): Promise {\n return this.client.uploads(documentId);\n }\n\n /**\n * Direct URL to the stored bytes, for a preview/download link (`
`) — the\n * server serves it inline for pdf/image, attachment otherwise. Not a fetch: the\n * browser opens it. demo-* ids (dev simulation) have no bytes and 404 here.\n */\n contentUrl(documentId: string): string {\n return `${environment.apiBaseUrl}/api/v1/uploads/${documentId}/content`;\n }\n\n /**\n * Multipart upload with progress + cancel. ponytail: XHR (not fetch keepalive) —\n * progress events need XHR; the keepalive/background gap is covered by\n * poll-on-return (UploadShellService.pollReturning). Swap in a Service Worker\n * transport behind UploadTransport for true background sync.\n */\n xhrUpload(req: XhrUploadRequest, onProgress: (pct: number) => void): XhrUploadHandle {\n const scenario = currentScenario();\n if (scenario === 'upload-slow' || scenario === 'upload-fail') return simulateUpload(scenario, onProgress);\n\n const xhr = new XMLHttpRequest();\n const form = new FormData();\n form.append('file', req.file);\n form.append('categoryId', req.categoryId);\n form.append('localId', req.localId);\n form.append('wizardId', req.wizardId);\n\n let aborted = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n xhr.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) onProgress(Math.round((e.loaded / e.total) * 100));\n });\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n resolve({ documentId: JSON.parse(xhr.responseText).documentId });\n } catch {\n reject(genericError());\n }\n } else {\n reject(parseError(xhr.responseText));\n }\n });\n xhr.addEventListener('error', () => reject(genericError()));\n xhr.addEventListener('abort', () => (aborted ? reject(UPLOAD_ABORTED) : reject(genericError())));\n });\n\n xhr.open('POST', `${environment.apiBaseUrl}/api/v1/uploads`);\n xhr.send(form);\n return { done, cancel: () => ((aborted = true), xhr.abort()) };\n }\n}\n\nconst UPLOAD_FAILED = $localize`:@@upload.failed:Uploaden is niet gelukt. Probeer het opnieuw.`;\nconst genericError = (): string => UPLOAD_FAILED;\n\n/**\n * Demo-only (dev): the real XHR POST finishes instantly for metadata, so progress\n * and failure can't otherwise be shown. Drives the progress bar over ~2.5s, then\n * succeeds (`upload-slow`) or fails (`upload-fail`). ponytail: timer-based, cancel\n * via the returned handle; no network.\n */\nfunction simulateUpload(scenario: 'upload-slow' | 'upload-fail', onProgress: (pct: number) => void): XhrUploadHandle {\n let pct = 0;\n let cancelled = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n const tick = () => {\n if (cancelled) {\n reject(UPLOAD_ABORTED);\n } else if (pct < 100) {\n pct += 10;\n onProgress(Math.min(pct, 100));\n setTimeout(tick, 250);\n } else if (scenario === 'upload-fail') {\n reject(UPLOAD_FAILED);\n } else {\n resolve({ documentId: `demo-${crypto.randomUUID()}` });\n }\n };\n setTimeout(tick, 250);\n });\n return { done, cancel: () => void (cancelled = true) };\n}\nconst parseError = (body: string): string => {\n try {\n return problemDetail(JSON.parse(body), UPLOAD_FAILED);\n } catch {\n return genericError();\n }\n};\n\n/** Wire DTO (all fields optional) → domain. */\nfunction toCategory(c: DocumentCategoryDto): DocumentCategory {\n return {\n categoryId: c.categoryId ?? '',\n label: c.label ?? '',\n description: c.description ?? '',\n required: c.required ?? false,\n acceptedTypes: c.acceptedTypes ?? [],\n maxSizeMb: c.maxSizeMb ?? 0,\n multiple: c.multiple ?? false,\n allowPostDelivery: c.allowPostDelivery ?? false,\n };\n}\n\nfunction toStatusItem(s: UploadStatusItemDto): StatusItem {\n return { localId: s.localId ?? '', status: s.status ?? 'unknown', documentId: s.documentId ?? undefined };\n}\n", "properties": [ { "name": "categoryId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 21 }, { "name": "file", "deprecated": false, "deprecationMessage": "", "type": "File", "indexKey": "", "optional": false, "description": "", "line": 23 }, { "name": "localId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 20 }, { "name": "wizardId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 22 } ], "indexSignatures": [], "kind": 172, "methods": [], "extends": [] } ], "injectables": [ { "name": "ApplicationsAdapter", "id": "injectable-ApplicationsAdapter-624e2fb5221f3d13360cb59d28bb973a460a9d5ce6cce8d88012d8e6bb936fe2391f4f0554ea8aea92f298816762c4ec453cbb56e822c611fb854af168557073", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "properties": [ { "name": "client", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 23, "modifierKind": [ 123 ] } ], "methods": [ { "name": "applicationsResource", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 26, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nThe dashboard's application list (raw DTOs; the store parses at the boundary).", "description": "

The dashboard's application list (raw DTOs; the store parses at the boundary).

\n" }, { "name": "cancel", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 45, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nCancel a Concept (cascades to its unlinked documents server-side).", "description": "

Cancel a Concept (cascades to its unlinked documents server-side).

\n", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "create", "args": [ { "name": "type", "type": "AanvraagType", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 35, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nCreate a Concept for a wizard type; resolves to the new aanvraag id.", "description": "

Create a Concept for a wizard type; resolves to the new aanvraag id.

\n", "jsdoctags": [ { "name": "type", "type": "AanvraagType", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "detail", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 30, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submit", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "body", "type": "SubmitApplicationRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 49, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "body", "type": "SubmitApplicationRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "syncDraft", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "body", "type": "DraftSyncRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 40, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nDraft sync per step (idempotent). Keep it debounced at the call site — it is chatty.", "description": "

Draft sync per step (idempotent). Keep it debounced at the call site — it is chatty.

\n", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "body", "type": "DraftSyncRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure adapter for the backend-owned Aanvraag aggregate — the only place\nits HTTP lives (ADR-0001 anti-corruption boundary). The list is a resource; the\nmutations (create/sync/cancel/submit) are thin commands the ApplicationsStore\norchestrates optimistically. The untrusted response is validated + mapped to\ndomain by the hand-written parse* boundary below.

\n", "rawdescription": "\n\nInfrastructure adapter for the backend-owned Aanvraag aggregate — the only place\nits HTTP lives (ADR-0001 anti-corruption boundary). The list is a resource; the\nmutations (create/sync/cancel/submit) are thin commands the ApplicationsStore\norchestrates optimistically. The untrusted response is validated + mapped to\ndomain by the hand-written parse* boundary below.\n", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport { Result, ok, err } from '@shared/kernel/fp';\nimport {\n ApiClient,\n AanvraagStatusDto,\n ApplicationSummaryDto,\n ApplicationDetailDto,\n DraftSyncRequest,\n SubmitApplicationRequest,\n SubmitApplicationResponse,\n} from '@shared/infrastructure/api-client';\nimport { Aanvraag, AanvraagDetail, AanvraagStatus, AanvraagType } from '@registratie/domain/aanvraag';\n\n/**\n * Infrastructure adapter for the backend-owned Aanvraag aggregate — the only place\n * its HTTP lives (ADR-0001 anti-corruption boundary). The list is a resource; the\n * mutations (create/sync/cancel/submit) are thin commands the ApplicationsStore\n * orchestrates optimistically. The untrusted response is validated + mapped to\n * domain by the hand-written parse* boundary below.\n */\n@Injectable({ providedIn: 'root' })\nexport class ApplicationsAdapter {\n private client = inject(ApiClient);\n\n /** The dashboard's application list (raw DTOs; the store parses at the boundary). */\n applicationsResource() {\n return resource({ loader: () => this.client.applicationsAll() });\n }\n\n detail(id: string): Promise {\n return this.client.applicationsGET(id);\n }\n\n /** Create a Concept for a wizard type; resolves to the new aanvraag id. */\n create(type: AanvraagType): Promise {\n return this.client.applicationsPOST({ type }).then((d) => d.id ?? '');\n }\n\n /** Draft sync per step (idempotent). Keep it debounced at the call site — it is chatty. */\n syncDraft(id: string, body: DraftSyncRequest): Promise {\n return this.client.applicationsPUT(id, body);\n }\n\n /** Cancel a Concept (cascades to its unlinked documents server-side). */\n cancel(id: string): Promise {\n return this.client.applicationsDELETE(id);\n }\n\n submit(id: string, body: SubmitApplicationRequest): Promise {\n return this.client.submit(id, body);\n }\n}\n\nconst AANVRAAG_TYPES: readonly string[] = ['registratie', 'herregistratie', 'intake'];\n\n/** Trust-boundary parse of the status union — the tag drives which fields must exist. */\nexport function parseAanvraagStatus(s: AanvraagStatusDto | undefined): Result {\n if (!s || typeof s.tag !== 'string') return err('aanvraag: missing status');\n switch (s.tag) {\n case 'Concept':\n if (typeof s.stepIndex !== 'number' || typeof s.stepCount !== 'number') return err('aanvraag: bad Concept status');\n return ok({ tag: 'Concept', stepIndex: s.stepIndex, stepCount: s.stepCount });\n case 'InBehandeling':\n if (typeof s.referentie !== 'string' || typeof s.manual !== 'boolean') return err('aanvraag: bad InBehandeling status');\n return ok({ tag: 'InBehandeling', referentie: s.referentie, manual: s.manual });\n case 'Goedgekeurd':\n if (typeof s.referentie !== 'string') return err('aanvraag: bad Goedgekeurd status');\n return ok({ tag: 'Goedgekeurd', referentie: s.referentie });\n case 'Afgewezen':\n if (typeof s.referentie !== 'string' || typeof s.reden !== 'string') return err('aanvraag: bad Afgewezen status');\n return ok({ tag: 'Afgewezen', referentie: s.referentie, reden: s.reden });\n default:\n return err(`aanvraag: unknown status tag ${s.tag}`);\n }\n}\n\nfunction parseCommon(dto: ApplicationSummaryDto): Result {\n if (typeof dto.id !== 'string') return err('aanvraag: missing id');\n if (typeof dto.type !== 'string' || !AANVRAAG_TYPES.includes(dto.type)) return err(`aanvraag: bad type ${dto.type}`);\n if (typeof dto.createdAt !== 'string' || typeof dto.updatedAt !== 'string') return err('aanvraag: missing timestamps');\n const status = parseAanvraagStatus(dto.status);\n if (!status.ok) return status;\n return ok({\n id: dto.id,\n type: dto.type as AanvraagType,\n status: status.value,\n documentIds: dto.documentIds ?? [],\n createdAt: dto.createdAt,\n updatedAt: dto.updatedAt,\n submittedAt: dto.submittedAt,\n });\n}\n\nexport function parseApplicationSummary(json: unknown): Result {\n if (typeof json !== 'object' || json === null) return err('aanvraag: not an object');\n return parseCommon(json as ApplicationSummaryDto);\n}\n\nexport function parseApplications(json: unknown): Result {\n if (!Array.isArray(json)) return err('aanvragen: not an array');\n const out: Aanvraag[] = [];\n for (const item of json) {\n const parsed = parseApplicationSummary(item);\n if (!parsed.ok) return parsed;\n out.push(parsed.value);\n }\n return ok(out);\n}\n\nexport function parseApplicationDetail(json: unknown): Result {\n if (typeof json !== 'object' || json === null) return err('aanvraag: not an object');\n const base = parseCommon(json as ApplicationDetailDto);\n if (!base.ok) return base;\n return ok({ ...base.value, draft: (json as ApplicationDetailDto).draft ?? null });\n}\n", "extends": [], "type": "injectable" }, { "name": "ApplicationsStore", "id": "injectable-ApplicationsStore-2830909f2096c797eaad39b4c558e2d537c5c120fac9986523b921c776c59c24f0b99667e22b4ba6b10bafbe629890bb849415f052ea6a3a871393aecf54b839", "file": "src/app/registratie/application/applications.store.ts", "properties": [ { "name": "adapter", "defaultValue": "inject(ApplicationsAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 18, "modifierKind": [ 123 ] }, { "name": "applications", "defaultValue": "computed>(() => {\n const rd = fromResource(this.res);\n if (rd.tag !== 'Success') return rd;\n const parsed = parseApplications(rd.value ?? []);\n if (!parsed.ok) return { tag: 'Failure', error: new Error(parsed.error) };\n const hidden = this.cancelling();\n return { tag: 'Success', value: parsed.value.filter((a) => !hidden.has(a.id)) };\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 23, "modifierKind": [ 148 ] }, { "name": "cancelling", "defaultValue": "signal>(new Set())", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Ids optimistically hidden while their cancel is in flight (or done).

\n", "line": 21, "rawdescription": "\nIds optimistically hidden while their cancel is in flight (or done).", "modifierKind": [ 123 ] }, { "name": "res", "defaultValue": "this.adapter.applicationsResource()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 19, "modifierKind": [ 123 ] } ], "methods": [ { "name": "cancel", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "any", "typeParameters": [], "line": 38, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nCancel a Concept: hide it optimistically, then confirm (reload) or roll back.", "description": "

Cancel a Concept: hide it optimistically, then confirm (reload) or roll back.

\n", "modifierKind": [ 134 ], "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reload", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 33, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nRe-fetch (e.g. on dashboard revisit) so auto-approval transitions show up.", "description": "

Re-fetch (e.g. on dashboard revisit) so auto-approval transitions show up.

\n" } ], "deprecated": false, "deprecationMessage": "", "description": "

The dashboard's view of the user's applications (aanvragen) — the backend is the\nsystem of record (PRD 0001). One root singleton owns the list resource and exposes\nit as a RemoteData signal, validated at the trust boundary (DTO → domain). Cancel\nis optimistic (hide immediately, reload to confirm, un-hide on failure); reload\nre-fetches so a page revisit reflects auto-approval (Concept → In behandeling →\nGoedgekeurd is computed server-side on read).

\n", "rawdescription": "\n\nThe dashboard's view of the user's applications (aanvragen) — the backend is the\nsystem of record (PRD 0001). One root singleton owns the list resource and exposes\nit as a RemoteData signal, validated at the trust boundary (DTO → domain). Cancel\nis optimistic (hide immediately, reload to confirm, un-hide on failure); `reload`\nre-fetches so a page revisit reflects auto-approval (Concept → In behandeling →\nGoedgekeurd is computed server-side on read).\n", "sourceCode": "import { Injectable, computed, inject, signal } from '@angular/core';\nimport { RemoteData, fromResource } from '@shared/application/remote-data';\nimport { Aanvraag } from '@registratie/domain/aanvraag';\nimport { ApplicationsAdapter, parseApplications } from '@registratie/infrastructure/applications.adapter';\n\ntype Err = Error | undefined;\n\n/**\n * The dashboard's view of the user's applications (aanvragen) — the backend is the\n * system of record (PRD 0001). One root singleton owns the list resource and exposes\n * it as a RemoteData signal, validated at the trust boundary (DTO → domain). Cancel\n * is optimistic (hide immediately, reload to confirm, un-hide on failure); `reload`\n * re-fetches so a page revisit reflects auto-approval (Concept → In behandeling →\n * Goedgekeurd is computed server-side on read).\n */\n@Injectable({ providedIn: 'root' })\nexport class ApplicationsStore {\n private adapter = inject(ApplicationsAdapter);\n private res = this.adapter.applicationsResource();\n /** Ids optimistically hidden while their cancel is in flight (or done). */\n private cancelling = signal>(new Set());\n\n readonly applications = computed>(() => {\n const rd = fromResource(this.res);\n if (rd.tag !== 'Success') return rd;\n const parsed = parseApplications(rd.value ?? []);\n if (!parsed.ok) return { tag: 'Failure', error: new Error(parsed.error) };\n const hidden = this.cancelling();\n return { tag: 'Success', value: parsed.value.filter((a) => !hidden.has(a.id)) };\n });\n\n /** Re-fetch (e.g. on dashboard revisit) so auto-approval transitions show up. */\n reload() {\n this.res.reload();\n }\n\n /** Cancel a Concept: hide it optimistically, then confirm (reload) or roll back. */\n async cancel(id: string) {\n this.cancelling.update((s) => new Set(s).add(id));\n try {\n await this.adapter.cancel(id);\n this.res.reload(); // the reloaded list no longer contains it; the hide is now a no-op\n } catch {\n this.cancelling.update((s) => {\n const next = new Set(s);\n next.delete(id);\n return next; // roll back: the block reappears\n });\n }\n }\n}\n", "extends": [], "type": "injectable" }, { "name": "BigProfileStore", "id": "injectable-BigProfileStore-5439ec3a52b1d508e83c45fca30dd27ccb365828f5bc64eb2baf1206382e9a3dd3f45e1593fc52341541b73bafe13e20afb852c974b59d9083594e3a65ea0cff", "file": "src/app/registratie/application/big-profile.store.ts", "properties": [ { "name": "aantekeningen", "defaultValue": "computed>(() => {\n const rd = fromResource(this.aantekeningenRes, (v) => !v || v.length === 0);\n return rd.tag === 'Success' ? { tag: 'Success', value: rd.value ?? [] } : rd;\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Specialisms/notes stay a separate stream (they have their own empty state).

\n", "line": 45, "rawdescription": "\nSpecialisms/notes stay a separate stream (they have their own empty state).", "modifierKind": [ 148 ] }, { "name": "aantekeningenRes", "defaultValue": "this.big.aantekeningenResource()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 28, "modifierKind": [ 123 ] }, { "name": "big", "defaultValue": "inject(BigRegisterAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 24, "modifierKind": [ 123 ] }, { "name": "decisions", "defaultValue": "computed>(() => map(this.view(), (v) => v.decisions))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Server-computed decisions (e.g. herregistratie eligibility) — rendered, not recomputed.

\n", "line": 42, "rawdescription": "\nServer-computed decisions (e.g. herregistratie eligibility) — rendered, not recomputed.", "modifierKind": [ 148 ] }, { "name": "pending", "defaultValue": "signal(false)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 51, "modifierKind": [ 123 ] }, { "name": "pendingHerregistratie", "defaultValue": "this.pending.asReadonly()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

True while a herregistratie submission is in flight or just submitted.

\n", "line": 53, "rawdescription": "\nTrue while a herregistratie submission is in flight or just submitted.", "modifierKind": [ 148 ] }, { "name": "profile", "defaultValue": "computed>(() => map(this.view(), (v) => v.profile))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Registration + person, from the single aggregated call.

\n", "line": 39, "rawdescription": "\nRegistration + person, from the single aggregated call.", "modifierKind": [ 148 ] }, { "name": "view", "defaultValue": "computed>(() => {\n const rd = fromResource(this.viewRes);\n if (rd.tag !== 'Success') return rd;\n const parsed = parseDashboardView(rd.value);\n return parsed.ok ? { tag: 'Success', value: parsed.value } : { tag: 'Failure', error: new Error(parsed.error) };\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

The aggregated view, validated at the trust boundary (DTO → domain).

\n", "line": 31, "rawdescription": "\nThe aggregated view, validated at the trust boundary (DTO → domain).", "modifierKind": [ 123 ] }, { "name": "viewAdapter", "defaultValue": "inject(DashboardViewAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 25, "modifierKind": [ 123 ] }, { "name": "viewRes", "defaultValue": "this.viewAdapter.dashboardViewResource()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 27, "modifierKind": [ 123 ] } ], "methods": [ { "name": "beginHerregistratie", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 55, "deprecated": false, "deprecationMessage": "" }, { "name": "confirmHerregistratie", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 58, "deprecated": false, "deprecationMessage": "" }, { "name": "rollbackHerregistratie", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 62, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "description": "

The single source of truth for the logged-in professional's profile, shared\nacross pages (providedIn:'root' = one instance). It owns the httpResources\n(created here, in the required injection context) and exposes them as\nRemoteData signals.

\n

The dashboard data now comes from ONE screen-shaped ("BFF-lite") call that\nreturns registration + person + server-computed decisions. One request → one\nconsistent snapshot, instead of stitching three independently loading/erroring\nresources together client-side. See docs/architecture/0001-bff-lite-decision-dtos.md.

\n", "rawdescription": "\n\nThe single source of truth for the logged-in professional's profile, shared\nacross pages (providedIn:'root' = one instance). It owns the httpResources\n(created here, in the required injection context) and exposes them as\nRemoteData signals.\n\nThe dashboard data now comes from ONE screen-shaped (\"BFF-lite\") call that\nreturns registration + person + server-computed `decisions`. One request → one\nconsistent snapshot, instead of stitching three independently loading/erroring\nresources together client-side. See docs/architecture/0001-bff-lite-decision-dtos.md.\n", "sourceCode": "import { Injectable, computed, inject, signal } from '@angular/core';\nimport { RemoteData, fromResource, map } from '@shared/application/remote-data';\nimport { Aantekening } from '../domain/registration';\nimport { BigProfile } from '../domain/big-profile';\nimport { HerregistratieDecisions, DashboardView } from '../contracts/dashboard-view.dto';\nimport { BigRegisterAdapter } from '../infrastructure/big-register.adapter';\nimport { DashboardViewAdapter, parseDashboardView } from '../infrastructure/dashboard-view.adapter';\n\ntype Err = Error | undefined;\n\n/**\n * The single source of truth for the logged-in professional's profile, shared\n * across pages (providedIn:'root' = one instance). It owns the httpResources\n * (created here, in the required injection context) and exposes them as\n * RemoteData signals.\n *\n * The dashboard data now comes from ONE screen-shaped (\"BFF-lite\") call that\n * returns registration + person + server-computed `decisions`. One request → one\n * consistent snapshot, instead of stitching three independently loading/erroring\n * resources together client-side. See docs/architecture/0001-bff-lite-decision-dtos.md.\n */\n@Injectable({ providedIn: 'root' })\nexport class BigProfileStore {\n private big = inject(BigRegisterAdapter);\n private viewAdapter = inject(DashboardViewAdapter);\n\n private viewRes = this.viewAdapter.dashboardViewResource();\n private aantekeningenRes = this.big.aantekeningenResource();\n\n /** The aggregated view, validated at the trust boundary (DTO → domain). */\n private view = computed>(() => {\n const rd = fromResource(this.viewRes);\n if (rd.tag !== 'Success') return rd;\n const parsed = parseDashboardView(rd.value);\n return parsed.ok ? { tag: 'Success', value: parsed.value } : { tag: 'Failure', error: new Error(parsed.error) };\n });\n\n /** Registration + person, from the single aggregated call. */\n readonly profile = computed>(() => map(this.view(), (v) => v.profile));\n\n /** Server-computed decisions (e.g. herregistratie eligibility) — rendered, not recomputed. */\n readonly decisions = computed>(() => map(this.view(), (v) => v.decisions));\n\n /** Specialisms/notes stay a separate stream (they have their own empty state). */\n readonly aantekeningen = computed>(() => {\n const rd = fromResource(this.aantekeningenRes, (v) => !v || v.length === 0);\n return rd.tag === 'Success' ? { tag: 'Success', value: rd.value ?? [] } : rd;\n });\n\n // --- Optimistic herregistratie state, shared with the dashboard -----------\n private pending = signal(false);\n /** True while a herregistratie submission is in flight or just submitted. */\n readonly pendingHerregistratie = this.pending.asReadonly();\n\n beginHerregistratie() {\n this.pending.set(true); // optimistic: show it immediately on the dashboard\n }\n confirmHerregistratie() {\n this.pending.set(false);\n this.viewRes.reload(); // invalidate: re-fetch the now-updated view (registration + decisions)\n }\n rollbackHerregistratie() {\n this.pending.set(false); // submission failed — undo the optimistic flag\n }\n}\n", "extends": [], "type": "injectable" }, { "name": "BigRegisterAdapter", "id": "injectable-BigRegisterAdapter-9dd4351ca55ec4a8e4afc1c6d4458880888844780163e7d72b0c9011509444a74e9f0364d9942d2b83e48e24a30fb2cb96d9e6ea7a5c5782916802c95d7c527d", "file": "src/app/registratie/infrastructure/big-register.adapter.ts", "properties": [ { "name": "client", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 16, "modifierKind": [ 123 ] } ], "methods": [ { "name": "aantekeningenResource", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 18, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure adapter for the BIG-register source. Exposes signal-based\nresources (Angular's resource over the generated typed client); each returns\na Resource with status()/value()/error()/reload(). Call from an injection\ncontext (a field initializer in the store).

\n

Note: registration + person are now served via the aggregated dashboard-view\nendpoint (see DashboardViewAdapter). Only the notes stream remains separate.

\n", "rawdescription": "\n\nInfrastructure adapter for the BIG-register source. Exposes signal-based\nresources (Angular's `resource` over the generated typed client); each returns\na Resource with status()/value()/error()/reload(). Call from an injection\ncontext (a field initializer in the store).\n\nNote: registration + person are now served via the aggregated dashboard-view\nendpoint (see DashboardViewAdapter). Only the notes stream remains separate.\n", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport { Aantekening, AantekeningType } from '../domain/registration';\nimport { ApiClient, AantekeningDto } from '@shared/infrastructure/api-client';\n\n/**\n * Infrastructure adapter for the BIG-register source. Exposes signal-based\n * resources (Angular's `resource` over the generated typed client); each returns\n * a Resource with status()/value()/error()/reload(). Call from an injection\n * context (a field initializer in the store).\n *\n * Note: registration + person are now served via the aggregated dashboard-view\n * endpoint (see DashboardViewAdapter). Only the notes stream remains separate.\n */\n@Injectable({ providedIn: 'root' })\nexport class BigRegisterAdapter {\n private client = inject(ApiClient);\n\n aantekeningenResource() {\n return resource({ loader: () => this.client.notes().then((ns) => ns.map(toAantekening)) });\n }\n}\n\n/** Map the wire DTO (all fields optional) onto our domain type. */\nfunction toAantekening(n: AantekeningDto): Aantekening {\n return { type: n.type as AantekeningType, omschrijving: n.omschrijving ?? '', datum: n.datum ?? '' };\n}\n", "extends": [], "type": "injectable" }, { "name": "BrpAdapter", "id": "injectable-BrpAdapter-10d450d8edce038e9b8dbda5c24d2ed28c074fb1ba249426d783365cd8811ed52349efba6e7d50aaefda59b247af7bf65f6ee70ccc6f10d31b014e453c8c284a", "file": "src/app/registratie/infrastructure/brp.adapter.ts", "properties": [ { "name": "client", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 13, "modifierKind": [ 123 ] } ], "methods": [ { "name": "adresResource", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 16, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure adapter for the BRP address lookup, reached only through our own\n("BFF-lite") endpoint — the anti-corruption boundary. Data comes from the .NET\nbackend (GET /api/brp/address) via the generated typed client.

\n", "rawdescription": "\n\nInfrastructure adapter for the BRP address lookup, reached only through our own\n(\"BFF-lite\") endpoint — the anti-corruption boundary. Data comes from the .NET\nbackend (`GET /api/brp/address`) via the generated typed client.\n", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport { Result, ok, err } from '@shared/kernel/fp';\nimport { BrpAddressDto } from '@registratie/contracts/brp-address.dto';\nimport { ApiClient } from '@shared/infrastructure/api-client';\n\n/**\n * Infrastructure adapter for the BRP address lookup, reached only through our own\n * (\"BFF-lite\") endpoint — the anti-corruption boundary. Data comes from the .NET\n * backend (`GET /api/brp/address`) via the generated typed client.\n */\n@Injectable({ providedIn: 'root' })\nexport class BrpAdapter {\n private client = inject(ApiClient);\n\n // The value is untrusted JSON until parseBrpAddress validates it.\n adresResource() {\n return resource({ loader: () => this.client.address() });\n }\n}\n\n/** Trust-boundary parse: validate the untrusted response shape. \"Geen adres\" is a\n valid outcome (gevonden: false), not a malformed response. ponytail: hand-written;\n reach for a schema lib once the contract count grows. */\nexport function parseBrpAddress(json: unknown): Result {\n if (typeof json !== 'object' || json === null) return err('brp-address: not an object');\n const dto = json as Partial;\n if (typeof dto.gevonden !== 'boolean') return err('brp-address: missing/invalid gevonden');\n if (dto.gevonden) {\n const a = dto.adres;\n if (!a || typeof a.straat !== 'string' || typeof a.postcode !== 'string' || typeof a.woonplaats !== 'string') {\n return err('brp-address: missing/invalid adres');\n }\n }\n return ok({ gevonden: dto.gevonden, adres: dto.adres });\n}\n", "extends": [], "type": "injectable" }, { "name": "DashboardViewAdapter", "id": "injectable-DashboardViewAdapter-6de764741d263caeed749d480aa0aee15bb4d5df7e4a9c6732aed0c31dacda4fcc9189e3f5d2002e15c0cecd06fca1e68dd12c02c650a85631887b4b3411e3a6", "file": "src/app/registratie/infrastructure/dashboard-view.adapter.ts", "properties": [ { "name": "client", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 14, "modifierKind": [ 123 ] } ], "methods": [ { "name": "dashboardViewResource", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 24, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure adapter for the screen-shaped ("BFF-lite") dashboard endpoint.\nONE call returns registration + person + server-computed decisions. The data\ncomes from the .NET backend (GET /api/dashboard-view) via the generated typed\nclient; the decisions (e.g. herregistratie eligibility) are computed there.

\n", "rawdescription": "\n\nInfrastructure adapter for the screen-shaped (\"BFF-lite\") dashboard endpoint.\nONE call returns registration + person + server-computed decisions. The data\ncomes from the .NET backend (`GET /api/dashboard-view`) via the generated typed\nclient; the decisions (e.g. herregistratie eligibility) are computed there.\n", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport { Result, ok, err } from '@shared/kernel/fp';\nimport { DashboardViewDto, DashboardView } from '@registratie/contracts/dashboard-view.dto';\nimport { ApiClient } from '@shared/infrastructure/api-client';\n\n/**\n * Infrastructure adapter for the screen-shaped (\"BFF-lite\") dashboard endpoint.\n * ONE call returns registration + person + server-computed decisions. The data\n * comes from the .NET backend (`GET /api/dashboard-view`) via the generated typed\n * client; the decisions (e.g. herregistratie eligibility) are computed there.\n */\n@Injectable({ providedIn: 'root' })\nexport class DashboardViewAdapter {\n private client = inject(ApiClient);\n\n // The value is still untrusted JSON — parseDashboardView validates it at the\n // boundary and maps DTO → domain before the app uses it.\n //\n // SEAM (G5): retry-with-backoff for non-mutating reads wraps the loader here —\n // e.g. `loader: () => withBackoff(() => this.client.dashboardView())` — since the\n // adapter is the single place HTTP lives. Reads are safe to retry; MUTATING calls\n // (the submit-* commands) must NEVER auto-retry — and don't. Manual retry\n // (resource.reload via ) covers the UX today, so backoff stays unbuilt.\n dashboardViewResource() {\n return resource({ loader: () => this.client.dashboardView() });\n }\n}\n\n/**\n * Trust-boundary parse: validate the untrusted response shape and map the DTO\n * onto our own domain model. Hand-written on purpose — no Zod for a single\n * contract. ponytail: reach for a schema lib once the contract count grows.\n */\nexport function parseDashboardView(json: unknown): Result {\n if (typeof json !== 'object' || json === null) return err('dashboard-view: not an object');\n const dto = json as Partial;\n\n const reg = dto.registration;\n if (!reg || typeof reg.bigNummer !== 'string' || !reg.status || typeof reg.status.tag !== 'string') {\n return err('dashboard-view: missing/invalid registration');\n }\n const person = dto.person;\n if (!person || !person.adres || typeof person.adres.postcode !== 'string') {\n return err('dashboard-view: missing/invalid person');\n }\n const d = dto.decisions;\n if (!d || typeof d.eligibleForHerregistratie !== 'boolean') {\n return err('dashboard-view: missing/invalid decisions');\n }\n\n return ok({\n profile: { registration: reg, person },\n decisions: { eligibleForHerregistratie: d.eligibleForHerregistratie, herregistratieReason: d.herregistratieReason },\n });\n}\n", "extends": [], "type": "injectable" }, { "name": "DigidAdapter", "id": "injectable-DigidAdapter-f046ea1531b0250c6367c33d4aad4e90b492ee19f28479d45f7142018c7f20bda7860e9c3695fa4d559223cf053bbfcf16b905073d3167633568d8e2120b212f", "file": "src/app/auth/infrastructure/digid.adapter.ts", "properties": [], "methods": [ { "name": "authenticate", "args": [ { "name": "bsn", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise>", "typeParameters": [], "line": 10, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 134 ], "jsdoctags": [ { "name": "bsn", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure: talks to the (mock) DigiD identity provider.

\n", "rawdescription": "\nInfrastructure: talks to the (mock) DigiD identity provider.", "sourceCode": "import { Injectable } from '@angular/core';\nimport { Result, ok, err } from '@shared/kernel/fp';\nimport { Session } from '../domain/session';\n\n/** Infrastructure: talks to the (mock) DigiD identity provider. */\n@Injectable({ providedIn: 'root' })\nexport class DigidAdapter {\n // ponytail: fake DigiD — any 9-digit BSN authenticates to a fixed identity.\n // Swap for a real OIDC redirect flow when there's a backend.\n async authenticate(bsn: string): Promise> {\n const t = bsn.trim();\n if (!/^\\d{9}$/.test(t)) return err($localize`:@@validation.bsn:Voer een geldig BSN van 9 cijfers in.`);\n return ok({ bsn: t, naam: 'Dr. A. (Anna) de Vries' });\n }\n}\n", "extends": [], "type": "injectable" }, { "name": "DuoAdapter", "id": "injectable-DuoAdapter-65cb84e352c9ce89498053dd35ac9a31e5e68642f2bab7f84a601a045c8c8403449d1eaea5d3c85169d793b7bd09f5cd0dee324540328bb73e16fd2649514fed", "file": "src/app/registratie/infrastructure/duo.adapter.ts", "properties": [ { "name": "client", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 15, "modifierKind": [ 123 ] } ], "methods": [ { "name": "diplomasResource", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 17, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure adapter for the DUO diploma lookup, reached only through our own\n("BFF-lite") endpoint — the anti-corruption boundary. The response carries the\nuser's diplomas (each with its server-computed beroep + policy questions) and\nthe manual-entry fallback policy. The frontend renders; it does not derive.\nData comes from the .NET backend (GET /api/duo/diplomas) via the typed client.

\n", "rawdescription": "\n\nInfrastructure adapter for the DUO diploma lookup, reached only through our own\n(\"BFF-lite\") endpoint — the anti-corruption boundary. The response carries the\nuser's diplomas (each with its server-computed beroep + policy questions) and\nthe manual-entry fallback policy. The frontend renders; it does not derive.\nData comes from the .NET backend (`GET /api/duo/diplomas`) via the typed client.\n", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport { Result, ok, err } from '@shared/kernel/fp';\nimport { DuoLookupDto, DuoDiplomaDto, PolicyQuestionDto, ManualDiplomaPolicyDto } from '@registratie/contracts/duo-diplomas.dto';\nimport { ApiClient } from '@shared/infrastructure/api-client';\n\n/**\n * Infrastructure adapter for the DUO diploma lookup, reached only through our own\n * (\"BFF-lite\") endpoint — the anti-corruption boundary. The response carries the\n * user's diplomas (each with its server-computed beroep + policy questions) and\n * the manual-entry fallback policy. The frontend renders; it does not derive.\n * Data comes from the .NET backend (`GET /api/duo/diplomas`) via the typed client.\n */\n@Injectable({ providedIn: 'root' })\nexport class DuoAdapter {\n private client = inject(ApiClient);\n\n diplomasResource() {\n return resource({ loader: () => this.client.diplomas() });\n }\n}\n\nfunction parseQuestions(json: unknown): PolicyQuestionDto[] | null {\n if (!Array.isArray(json)) return null;\n const out: PolicyQuestionDto[] = [];\n for (const q of json) {\n if (typeof q !== 'object' || q === null) return null;\n const p = q as Partial;\n if (typeof p.id !== 'string' || typeof p.vraag !== 'string' || (p.type !== 'ja-nee' && p.type !== 'tekst')) return null;\n out.push({ id: p.id, vraag: p.vraag, type: p.type });\n }\n return out;\n}\n\n/** Trust-boundary parse: validate the untrusted response shape (diplomas, each\n with derived beroep + policy questions, plus the manual-entry fallback). */\nexport function parseDuoLookup(json: unknown): Result {\n if (typeof json !== 'object' || json === null) return err('duo-lookup: not an object');\n const dto = json as Partial;\n if (!Array.isArray(dto.diplomas)) return err('duo-lookup: missing diplomas');\n\n const diplomas: DuoDiplomaDto[] = [];\n for (const item of dto.diplomas) {\n if (typeof item !== 'object' || item === null) return err('duo-lookup: invalid diploma');\n const d = item as Partial;\n const vragen = parseQuestions(d.policyQuestions);\n if (typeof d.id !== 'string' || typeof d.naam !== 'string' || typeof d.beroep !== 'string' || vragen === null) {\n return err('duo-lookup: missing/invalid diploma fields');\n }\n diplomas.push({ id: d.id, naam: d.naam, instelling: d.instelling ?? '', jaar: typeof d.jaar === 'number' ? d.jaar : 0, beroep: d.beroep, policyQuestions: vragen });\n }\n\n const hm = dto.handmatig;\n const hmVragen = hm ? parseQuestions(hm.policyQuestions) : null;\n if (!hm || !Array.isArray(hm.beroepen) || hmVragen === null) {\n return err('duo-lookup: missing/invalid handmatig fallback');\n }\n const handmatig: ManualDiplomaPolicyDto = { beroepen: hm.beroepen, policyQuestions: hmVragen };\n\n return ok({ diplomas, handmatig });\n}\n", "extends": [], "type": "injectable" }, { "name": "IntakePolicyAdapter", "id": "injectable-IntakePolicyAdapter-c48f30f2f16d4eeef7433634888e1d998bd653f31d0d43084eae3dd1b51257ebdff63f5aa7f3986b7978729fca6d1fc48dbd59d3821a8eb1f50a9e6ad0501783", "file": "src/app/herregistratie/infrastructure/intake-policy.adapter.ts", "properties": [ { "name": "client", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 11, "modifierKind": [ 123 ] } ], "methods": [ { "name": "policyResource", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 13, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure adapter for the intake policy (the scholing threshold config\nvalue). Same shape as every other adapter — a signal resource over the\ngenerated typed client — so HTTP lives in exactly one place per concern.

\n", "rawdescription": "\n\nInfrastructure adapter for the intake policy (the scholing threshold config\nvalue). Same shape as every other adapter — a signal `resource` over the\ngenerated typed client — so HTTP lives in exactly one place per concern.\n", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport { ApiClient } from '@shared/infrastructure/api-client';\n\n/**\n * Infrastructure adapter for the intake policy (the scholing threshold config\n * value). Same shape as every other adapter — a signal `resource` over the\n * generated typed client — so HTTP lives in exactly one place per concern.\n */\n@Injectable({ providedIn: 'root' })\nexport class IntakePolicyAdapter {\n private client = inject(ApiClient);\n\n policyResource() {\n return resource({ loader: () => this.client.policy() });\n }\n}\n", "extends": [], "type": "injectable" }, { "name": "KeepaliveTransport", "id": "injectable-KeepaliveTransport-ec4f738d45fc556f5419cef06bad97f2f12a90de63211f79059088a2827ea9ee851b1544ec2110033a7797b65eaeb7caf0d4508fd122384394eaf9a145ffa7f6", "file": "src/app/shared/upload/upload-shell.service.ts", "properties": [ { "name": "adapter", "defaultValue": "inject(UploadAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 19, "modifierKind": [ 123 ] }, { "name": "backgroundSyncAvailable", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 20, "modifierKind": [ 148 ] } ], "methods": [ { "name": "send", "args": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "onProgress", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "pct", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ] } ], "optional": false, "returnType": "any", "typeParameters": [], "line": 21, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "onProgress", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "pct", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "description": "", "rawdescription": "\n", "sourceCode": "import { Injectable, inject } from '@angular/core';\nimport { UploadAdapter, XhrUploadRequest, XhrUploadHandle, UPLOAD_ABORTED } from './upload.adapter';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { UploadMsg, Upload } from './upload.machine';\n\n/**\n * Transport seam (PRD §6): how upload bytes leave the browser. The shipped impl is\n * KeepaliveTransport (XHR for progress; poll-on-return covers the background gap).\n * A ServiceWorkerTransport would set `backgroundSyncAvailable = true` and survive a\n * closed tab — swapping it in touches only this interface.\n */\nexport interface UploadTransport {\n readonly backgroundSyncAvailable: boolean;\n send(req: XhrUploadRequest, onProgress: (pct: number) => void): XhrUploadHandle;\n}\n\n@Injectable({ providedIn: 'root' })\nclass KeepaliveTransport implements UploadTransport {\n private adapter = inject(UploadAdapter);\n readonly backgroundSyncAvailable = false; // no Service Worker registered in this POC\n send(req: XhrUploadRequest, onProgress: (pct: number) => void) {\n return this.adapter.xhrUpload(req, onProgress);\n }\n}\n\ntype Dispatch = (m: UploadMsg) => void;\n\n/**\n * Orchestrates upload effects: drives the transport and translates outcomes into\n * domain messages. Holds no UI state itself — the host wizard's reducer owns it.\n * Effects only; the reducer stays pure.\n */\n@Injectable({ providedIn: 'root' })\nexport class UploadShellService {\n private transport: UploadTransport = inject(KeepaliveTransport);\n private adapter = inject(UploadAdapter);\n private inflight = new Map void>(); // localId → cancel\n\n get backgroundSyncAvailable(): boolean {\n return this.transport.backgroundSyncAvailable;\n }\n\n /** Start (or retry) an upload: queue → progress → complete/failed. */\n upload(req: XhrUploadRequest, dispatch: Dispatch): void {\n dispatch({ type: 'UploadQueued', localId: req.localId, backgroundSync: this.backgroundSyncAvailable });\n const { done, cancel } = this.transport.send(req, (pct) =>\n dispatch({ type: 'UploadProgress', localId: req.localId, progressPct: pct }),\n );\n this.inflight.set(req.localId, cancel);\n done\n .then(({ documentId }) => dispatch({ type: 'UploadComplete', localId: req.localId, documentId }))\n .catch((e) => {\n if (e !== UPLOAD_ABORTED) {\n dispatch({ type: 'UploadFailed', localId: req.localId, reason: typeof e === 'string' ? e : '' });\n }\n })\n .finally(() => this.inflight.delete(req.localId));\n }\n\n /** Optimistic delete: mark deleting → complete (removed) / failed (reverted). */\n delete(localId: string, documentId: string, dispatch: Dispatch): void {\n dispatch({ type: 'UploadDeleting', localId });\n this.adapter\n .deleteDocument(documentId)\n .then(() => dispatch({ type: 'UploadDeleteComplete', localId }))\n .catch((e) => dispatch({ type: 'UploadDeleteFailed', localId, reason: problemDetail(e, '') }));\n }\n\n /** Cancel any in-flight XHRs (e.g. when a category switches to post-delivery). */\n cancel(localIds: string[]): void {\n for (const id of localIds) {\n this.inflight.get(id)?.();\n this.inflight.delete(id);\n }\n }\n\n /** Poll-on-return: ask the BFF which still-in-flight uploads have arrived. */\n async pollReturning(uploads: Upload[], dispatch: Dispatch): Promise {\n const ids = uploads.map((u) => u.localId);\n if (ids.length === 0) return;\n const items = await this.adapter.status(ids);\n const results = items\n .filter((i) => i.status === 'complete' && i.documentId)\n .map((i) => ({ localId: i.localId, success: true as const, documentId: i.documentId! }));\n if (results.length > 0) dispatch({ type: 'BackgroundUploadsReturned', results });\n }\n}\n", "extends": [], "type": "injectable" }, { "name": "SessionStore", "id": "injectable-SessionStore-0baea49d81a56d8083840504ebe739dda3b087e42874387498a8367e5a497df3048237969f26e8d3dbe3f105be04f2eb80171579db11fc757f896c02bf386f49", "file": "src/app/auth/application/session.store.ts", "properties": [ { "name": "_session", "defaultValue": "signal(restore())", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 35, "modifierKind": [ 123 ] }, { "name": "digid", "defaultValue": "inject(DigidAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 34, "modifierKind": [ 123 ] }, { "name": "isAuthenticated", "defaultValue": "computed(() => this._session() !== null)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 38, "modifierKind": [ 148 ] }, { "name": "session", "defaultValue": "this._session.asReadonly()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 37, "modifierKind": [ 148 ] } ], "methods": [ { "name": "login", "args": [ { "name": "bsn", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise>", "typeParameters": [], "line": 50, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nEffectful command: authenticate, then store the session on success.", "description": "

Effectful command: authenticate, then store the session on success.

\n", "modifierKind": [ 134 ], "jsdoctags": [ { "name": "bsn", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "logout", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 56, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "description": "

Holds the current session for the whole app. Because it is providedIn:'root'\nthere is exactly one instance — every component that injects it sees the same\nsession signal, so logging in is instantly visible everywhere (the guard, the\nheader, etc.). The session is mirrored to sessionStorage so a refresh or a\ndeep-link to a protected route keeps you logged in; it clears when the tab\ncloses. ponytail: sessionStorage, not localStorage — no cross-tab sync, which\nmatches a single-session portal.

\n", "rawdescription": "\n\nHolds the current session for the whole app. Because it is providedIn:'root'\nthere is exactly one instance — every component that injects it sees the same\nsession signal, so logging in is instantly visible everywhere (the guard, the\nheader, etc.). The session is mirrored to sessionStorage so a refresh or a\ndeep-link to a protected route keeps you logged in; it clears when the tab\ncloses. ponytail: sessionStorage, not localStorage — no cross-tab sync, which\nmatches a single-session portal.\n", "sourceCode": "import { Injectable, computed, effect, inject, signal } from '@angular/core';\nimport { Result } from '@shared/kernel/fp';\nimport { Session } from '../domain/session';\nimport { DigidAdapter } from '../infrastructure/digid.adapter';\n\nconst STORAGE_KEY = 'session-v1';\n\n/** Restore a persisted session (best-effort; corrupt entry → logged out).\n G2: validate the shape before trusting it. G1: the BSN is never persisted\n (see the effect below), so a restored session carries an empty one — it is\n unused after login; only `naam` is shown in the chrome. */\nfunction restore(): Session | null {\n try {\n const raw = sessionStorage.getItem(STORAGE_KEY);\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Partial;\n return typeof parsed?.naam === 'string' ? { bsn: '', naam: parsed.naam } : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Holds the current session for the whole app. Because it is providedIn:'root'\n * there is exactly one instance — every component that injects it sees the same\n * session signal, so logging in is instantly visible everywhere (the guard, the\n * header, etc.). The session is mirrored to sessionStorage so a refresh or a\n * deep-link to a protected route keeps you logged in; it clears when the tab\n * closes. ponytail: sessionStorage, not localStorage — no cross-tab sync, which\n * matches a single-session portal.\n */\n@Injectable({ providedIn: 'root' })\nexport class SessionStore {\n private digid = inject(DigidAdapter);\n private _session = signal(restore());\n\n readonly session = this._session.asReadonly();\n readonly isAuthenticated = computed(() => this._session() !== null);\n\n constructor() {\n effect(() => {\n const s = this._session();\n // G1: persist only `naam` — never write the BSN (national ID) to storage.\n if (s) sessionStorage.setItem(STORAGE_KEY, JSON.stringify({ naam: s.naam }));\n else sessionStorage.removeItem(STORAGE_KEY);\n });\n }\n\n /** Effectful command: authenticate, then store the session on success. */\n async login(bsn: string): Promise> {\n const r = await this.digid.authenticate(bsn);\n if (r.ok) this._session.set(r.value);\n return r;\n }\n\n logout() {\n this._session.set(null);\n }\n}\n", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [], "line": 38 }, "extends": [], "type": "injectable" }, { "name": "UploadAdapter", "id": "injectable-UploadAdapter-bb80b81784601579976fed392f1c4e638f6945087adb775183c617fc8b015821f1a9ce89762fe24adcdab49c8761256a98fd3e6fe0251d3a6f250ef0aed7b62b", "file": "src/app/shared/upload/upload.adapter.ts", "properties": [ { "name": "client", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 43, "modifierKind": [ 123 ] } ], "methods": [ { "name": "categoriesResource", "args": [ { "name": "wizardId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "any", "typeParameters": [], "line": 45, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "wizardId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "contentUrl", "args": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "string", "typeParameters": [], "line": 65, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\nDirect URL to the stored bytes, for a preview/download link (`
`) — the\nserver serves it inline for pdf/image, attachment otherwise. Not a fetch: the\nbrowser opens it. demo-* ids (dev simulation) have no bytes and 404 here.\n", "description": "

Direct URL to the stored bytes, for a preview/download link (<a href>) — the\nserver serves it inline for pdf/image, attachment otherwise. Not a fetch: the\nbrowser opens it. demo-* ids (dev simulation) have no bytes and 404 here.

\n", "jsdoctags": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "deleteDocument", "args": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 56, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nUser delete; throws a ProblemDetails (e.g. 409 once linked) the caller maps.", "description": "

User delete; throws a ProblemDetails (e.g. 409 once linked) the caller maps.

\n", "jsdoctags": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "status", "args": [ { "name": "localIds", "type": "string[]", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 50, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nPoll-on-return: which client localIds have arrived at the BFF.", "description": "

Poll-on-return: which client localIds have arrived at the BFF.

\n", "jsdoctags": [ { "name": "localIds", "type": "string[]", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "xhrUpload", "args": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "onProgress", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "pct", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ] } ], "optional": false, "returnType": "XhrUploadHandle", "typeParameters": [], "line": 75, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\nMultipart upload with progress + cancel. ponytail: XHR (not fetch keepalive) —\nprogress events need XHR; the keepalive/background gap is covered by\npoll-on-return (UploadShellService.pollReturning). Swap in a Service Worker\ntransport behind UploadTransport for true background sync.\n", "description": "

Multipart upload with progress + cancel. ponytail: XHR (not fetch keepalive) —\nprogress events need XHR; the keepalive/background gap is covered by\npoll-on-return (UploadShellService.pollReturning). Swap in a Service Worker\ntransport behind UploadTransport for true background sync.

\n", "jsdoctags": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "onProgress", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "pct", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "description": "

Infrastructure: the only place upload HTTP lives. Reads (categories, status,\ndelete) go through the NSwag client; the multipart POST is hand-written XHR\nbecause the generated client is JSON-only (the endpoint is ExcludeFromDescription)\nand we need upload-progress events + cancellation, which fetch can't give us.

\n", "rawdescription": "\n\nInfrastructure: the only place upload HTTP lives. Reads (categories, status,\ndelete) go through the NSwag client; the multipart POST is hand-written XHR\nbecause the generated client is JSON-only (the endpoint is ExcludeFromDescription)\nand we need upload-progress events + cancellation, which fetch can't give us.\n", "sourceCode": "import { Injectable, inject, resource } from '@angular/core';\nimport {\n ApiClient,\n DocumentCategoryDto,\n UploadStatusItemDto,\n} from '@shared/infrastructure/api-client';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { currentScenario } from '@shared/infrastructure/scenario';\nimport { environment } from '../../../environments/environment';\nimport { DocumentCategory } from './upload.machine';\n\n/** One arrived/known status item from poll-on-return. */\nexport interface StatusItem {\n localId: string;\n status: string; // 'complete' | 'unknown'\n documentId?: string;\n}\n\nexport interface XhrUploadRequest {\n localId: string;\n categoryId: string;\n wizardId: string;\n file: File;\n}\n\n/** A live upload: progress is reported via the callback; cancel aborts the XHR. */\nexport interface XhrUploadHandle {\n done: Promise<{ documentId: string }>;\n cancel: () => void;\n}\n\n/** Sentinel rejection so the caller can tell a user-cancel from a real failure. */\nexport const UPLOAD_ABORTED = Symbol('upload-aborted');\n\n/**\n * Infrastructure: the only place upload HTTP lives. Reads (categories, status,\n * delete) go through the NSwag client; the multipart POST is hand-written XHR\n * because the generated client is JSON-only (the endpoint is ExcludeFromDescription)\n * and we need upload-progress events + cancellation, which fetch can't give us.\n */\n@Injectable({ providedIn: 'root' })\nexport class UploadAdapter {\n private client = inject(ApiClient);\n\n categoriesResource(wizardId: string) {\n return resource({ loader: () => this.client.categories(wizardId).then((r) => (r.categories ?? []).map(toCategory)) });\n }\n\n /** Poll-on-return: which client localIds have arrived at the BFF. */\n status(localIds: string[]): Promise {\n if (localIds.length === 0) return Promise.resolve([]);\n return this.client.status(localIds.join(',')).then((r) => (r.results ?? []).map(toStatusItem));\n }\n\n /** User delete; throws a ProblemDetails (e.g. 409 once linked) the caller maps. */\n deleteDocument(documentId: string): Promise {\n return this.client.uploads(documentId);\n }\n\n /**\n * Direct URL to the stored bytes, for a preview/download link (`
`) — the\n * server serves it inline for pdf/image, attachment otherwise. Not a fetch: the\n * browser opens it. demo-* ids (dev simulation) have no bytes and 404 here.\n */\n contentUrl(documentId: string): string {\n return `${environment.apiBaseUrl}/api/v1/uploads/${documentId}/content`;\n }\n\n /**\n * Multipart upload with progress + cancel. ponytail: XHR (not fetch keepalive) —\n * progress events need XHR; the keepalive/background gap is covered by\n * poll-on-return (UploadShellService.pollReturning). Swap in a Service Worker\n * transport behind UploadTransport for true background sync.\n */\n xhrUpload(req: XhrUploadRequest, onProgress: (pct: number) => void): XhrUploadHandle {\n const scenario = currentScenario();\n if (scenario === 'upload-slow' || scenario === 'upload-fail') return simulateUpload(scenario, onProgress);\n\n const xhr = new XMLHttpRequest();\n const form = new FormData();\n form.append('file', req.file);\n form.append('categoryId', req.categoryId);\n form.append('localId', req.localId);\n form.append('wizardId', req.wizardId);\n\n let aborted = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n xhr.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) onProgress(Math.round((e.loaded / e.total) * 100));\n });\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n resolve({ documentId: JSON.parse(xhr.responseText).documentId });\n } catch {\n reject(genericError());\n }\n } else {\n reject(parseError(xhr.responseText));\n }\n });\n xhr.addEventListener('error', () => reject(genericError()));\n xhr.addEventListener('abort', () => (aborted ? reject(UPLOAD_ABORTED) : reject(genericError())));\n });\n\n xhr.open('POST', `${environment.apiBaseUrl}/api/v1/uploads`);\n xhr.send(form);\n return { done, cancel: () => ((aborted = true), xhr.abort()) };\n }\n}\n\nconst UPLOAD_FAILED = $localize`:@@upload.failed:Uploaden is niet gelukt. Probeer het opnieuw.`;\nconst genericError = (): string => UPLOAD_FAILED;\n\n/**\n * Demo-only (dev): the real XHR POST finishes instantly for metadata, so progress\n * and failure can't otherwise be shown. Drives the progress bar over ~2.5s, then\n * succeeds (`upload-slow`) or fails (`upload-fail`). ponytail: timer-based, cancel\n * via the returned handle; no network.\n */\nfunction simulateUpload(scenario: 'upload-slow' | 'upload-fail', onProgress: (pct: number) => void): XhrUploadHandle {\n let pct = 0;\n let cancelled = false;\n const done = new Promise<{ documentId: string }>((resolve, reject) => {\n const tick = () => {\n if (cancelled) {\n reject(UPLOAD_ABORTED);\n } else if (pct < 100) {\n pct += 10;\n onProgress(Math.min(pct, 100));\n setTimeout(tick, 250);\n } else if (scenario === 'upload-fail') {\n reject(UPLOAD_FAILED);\n } else {\n resolve({ documentId: `demo-${crypto.randomUUID()}` });\n }\n };\n setTimeout(tick, 250);\n });\n return { done, cancel: () => void (cancelled = true) };\n}\nconst parseError = (body: string): string => {\n try {\n return problemDetail(JSON.parse(body), UPLOAD_FAILED);\n } catch {\n return genericError();\n }\n};\n\n/** Wire DTO (all fields optional) → domain. */\nfunction toCategory(c: DocumentCategoryDto): DocumentCategory {\n return {\n categoryId: c.categoryId ?? '',\n label: c.label ?? '',\n description: c.description ?? '',\n required: c.required ?? false,\n acceptedTypes: c.acceptedTypes ?? [],\n maxSizeMb: c.maxSizeMb ?? 0,\n multiple: c.multiple ?? false,\n allowPostDelivery: c.allowPostDelivery ?? false,\n };\n}\n\nfunction toStatusItem(s: UploadStatusItemDto): StatusItem {\n return { localId: s.localId ?? '', status: s.status ?? 'unknown', documentId: s.documentId ?? undefined };\n}\n", "extends": [], "type": "injectable" }, { "name": "UploadShellService", "id": "injectable-UploadShellService-ec4f738d45fc556f5419cef06bad97f2f12a90de63211f79059088a2827ea9ee851b1544ec2110033a7797b65eaeb7caf0d4508fd122384394eaf9a145ffa7f6", "file": "src/app/shared/upload/upload-shell.service.ts", "properties": [ { "name": "adapter", "defaultValue": "inject(UploadAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 36, "modifierKind": [ 123 ] }, { "name": "inflight", "defaultValue": "new Map void>()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 37, "modifierKind": [ 123 ] }, { "name": "transport", "defaultValue": "inject(KeepaliveTransport)", "deprecated": false, "deprecationMessage": "", "type": "UploadTransport", "indexKey": "", "optional": false, "description": "", "line": 35, "modifierKind": [ 123 ] } ], "methods": [ { "name": "cancel", "args": [ { "name": "localIds", "type": "string[]", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 70, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nCancel any in-flight XHRs (e.g. when a category switches to post-delivery).", "description": "

Cancel any in-flight XHRs (e.g. when a category switches to post-delivery).

\n", "jsdoctags": [ { "name": "localIds", "type": "string[]", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "delete", "args": [ { "name": "localId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "dispatch", "type": "Dispatch", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 61, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nOptimistic delete: mark deleting → complete (removed) / failed (reverted).", "description": "

Optimistic delete: mark deleting → complete (removed) / failed (reverted).

\n", "jsdoctags": [ { "name": "localId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "dispatch", "type": "Dispatch", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "pollReturning", "args": [ { "name": "uploads", "type": "Upload[]", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "dispatch", "type": "Dispatch", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 78, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nPoll-on-return: ask the BFF which still-in-flight uploads have arrived.", "description": "

Poll-on-return: ask the BFF which still-in-flight uploads have arrived.

\n", "modifierKind": [ 134 ], "jsdoctags": [ { "name": "uploads", "type": "Upload[]", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "dispatch", "type": "Dispatch", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "upload", "args": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "dispatch", "type": "Dispatch", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 44, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nStart (or retry) an upload: queue → progress → complete/failed.", "description": "

Start (or retry) an upload: queue → progress → complete/failed.

\n", "jsdoctags": [ { "name": "req", "type": "XhrUploadRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "dispatch", "type": "Dispatch", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "description": "

Orchestrates upload effects: drives the transport and translates outcomes into\ndomain messages. Holds no UI state itself — the host wizard's reducer owns it.\nEffects only; the reducer stays pure.

\n", "rawdescription": "\n\nOrchestrates upload effects: drives the transport and translates outcomes into\ndomain messages. Holds no UI state itself — the host wizard's reducer owns it.\nEffects only; the reducer stays pure.\n", "sourceCode": "import { Injectable, inject } from '@angular/core';\nimport { UploadAdapter, XhrUploadRequest, XhrUploadHandle, UPLOAD_ABORTED } from './upload.adapter';\nimport { problemDetail } from '@shared/infrastructure/api-error';\nimport { UploadMsg, Upload } from './upload.machine';\n\n/**\n * Transport seam (PRD §6): how upload bytes leave the browser. The shipped impl is\n * KeepaliveTransport (XHR for progress; poll-on-return covers the background gap).\n * A ServiceWorkerTransport would set `backgroundSyncAvailable = true` and survive a\n * closed tab — swapping it in touches only this interface.\n */\nexport interface UploadTransport {\n readonly backgroundSyncAvailable: boolean;\n send(req: XhrUploadRequest, onProgress: (pct: number) => void): XhrUploadHandle;\n}\n\n@Injectable({ providedIn: 'root' })\nclass KeepaliveTransport implements UploadTransport {\n private adapter = inject(UploadAdapter);\n readonly backgroundSyncAvailable = false; // no Service Worker registered in this POC\n send(req: XhrUploadRequest, onProgress: (pct: number) => void) {\n return this.adapter.xhrUpload(req, onProgress);\n }\n}\n\ntype Dispatch = (m: UploadMsg) => void;\n\n/**\n * Orchestrates upload effects: drives the transport and translates outcomes into\n * domain messages. Holds no UI state itself — the host wizard's reducer owns it.\n * Effects only; the reducer stays pure.\n */\n@Injectable({ providedIn: 'root' })\nexport class UploadShellService {\n private transport: UploadTransport = inject(KeepaliveTransport);\n private adapter = inject(UploadAdapter);\n private inflight = new Map void>(); // localId → cancel\n\n get backgroundSyncAvailable(): boolean {\n return this.transport.backgroundSyncAvailable;\n }\n\n /** Start (or retry) an upload: queue → progress → complete/failed. */\n upload(req: XhrUploadRequest, dispatch: Dispatch): void {\n dispatch({ type: 'UploadQueued', localId: req.localId, backgroundSync: this.backgroundSyncAvailable });\n const { done, cancel } = this.transport.send(req, (pct) =>\n dispatch({ type: 'UploadProgress', localId: req.localId, progressPct: pct }),\n );\n this.inflight.set(req.localId, cancel);\n done\n .then(({ documentId }) => dispatch({ type: 'UploadComplete', localId: req.localId, documentId }))\n .catch((e) => {\n if (e !== UPLOAD_ABORTED) {\n dispatch({ type: 'UploadFailed', localId: req.localId, reason: typeof e === 'string' ? e : '' });\n }\n })\n .finally(() => this.inflight.delete(req.localId));\n }\n\n /** Optimistic delete: mark deleting → complete (removed) / failed (reverted). */\n delete(localId: string, documentId: string, dispatch: Dispatch): void {\n dispatch({ type: 'UploadDeleting', localId });\n this.adapter\n .deleteDocument(documentId)\n .then(() => dispatch({ type: 'UploadDeleteComplete', localId }))\n .catch((e) => dispatch({ type: 'UploadDeleteFailed', localId, reason: problemDetail(e, '') }));\n }\n\n /** Cancel any in-flight XHRs (e.g. when a category switches to post-delivery). */\n cancel(localIds: string[]): void {\n for (const id of localIds) {\n this.inflight.get(id)?.();\n this.inflight.delete(id);\n }\n }\n\n /** Poll-on-return: ask the BFF which still-in-flight uploads have arrived. */\n async pollReturning(uploads: Upload[], dispatch: Dispatch): Promise {\n const ids = uploads.map((u) => u.localId);\n if (ids.length === 0) return;\n const items = await this.adapter.status(ids);\n const results = items\n .filter((i) => i.status === 'complete' && i.documentId)\n .map((i) => ({ localId: i.localId, success: true as const, documentId: i.documentId! }));\n if (results.length > 0) dispatch({ type: 'BackgroundUploadsReturned', results });\n }\n}\n", "accessors": { "backgroundSyncAvailable": { "name": "backgroundSyncAvailable", "getSignature": { "name": "backgroundSyncAvailable", "type": "boolean", "returnType": "boolean", "line": 39 } } }, "extends": [], "type": "injectable" } ], "guards": [], "interceptors": [], "classes": [ { "name": "ApiClient", "id": "class-ApiClient-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "class", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [ { "name": "baseUrl", "type": "string", "optional": true, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "http", "type": "literal type", "optional": true, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "line": 13, "jsdoctags": [ { "name": "baseUrl", "type": "string", "optional": true, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "http", "type": "literal type", "optional": true, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, "inputsClass": [], "outputsClass": [], "properties": [ { "name": "baseUrl", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 12, "modifierKind": [ 123 ] }, { "name": "http", "deprecated": false, "deprecationMessage": "", "type": "literal type", "indexKey": "", "optional": false, "description": "", "line": 11, "modifierKind": [ 123 ] }, { "name": "jsonParseReviver", "defaultValue": "undefined", "deprecated": false, "deprecationMessage": "", "type": "unknown | undefined", "indexKey": "", "optional": false, "description": "", "line": 13, "modifierKind": [ 124 ] } ], "methods": [ { "name": "address", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 161, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 5698, "end": 5704, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "applicationsAll", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 664, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 26154, "end": 26160, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "applicationsDELETE", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 827, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 32679, "end": 32685, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

No Content

\n" } ] }, { "name": "applicationsGET", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 740, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 29161, "end": 29167, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "applicationsPOST", "args": [ { "name": "body", "type": "CreateApplicationRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 700, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "body", "type": "CreateApplicationRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 27580, "end": 27586, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

Created

\n" } ] }, { "name": "applicationsPUT", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "body", "type": "DraftSyncRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 783, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "body", "type": "DraftSyncRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 30975, "end": 30981, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

No Content

\n" } ] }, { "name": "categories", "args": [ { "name": "wizardId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 453, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "wizardId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 17509, "end": 17515, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "changeRequests", "args": [ { "name": "body", "type": "ChangeRequestRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 407, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "body", "type": "ChangeRequestRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 15569, "end": 15575, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "content", "args": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 493, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 19176, "end": 19182, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "dashboardView", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 89, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 2943, "end": 2949, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "diplomas", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 197, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 7059, "end": 7065, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "health", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 23, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 732, "end": 738, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "herregistraties", "args": [ { "name": "body", "type": "HerregistratieRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 315, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "body", "type": "HerregistratieRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 11721, "end": 11727, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "intakes", "args": [ { "name": "body", "type": "IntakeRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 361, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "body", "type": "IntakeRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 13665, "end": 13671, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "notes", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 125, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 4337, "end": 4343, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "policy", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 233, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 8420, "end": 8426, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "processAddress", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 177, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processApplicationsAll", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 680, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processApplicationsDELETE", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 845, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processApplicationsGET", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 759, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processApplicationsPOST", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 720, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processApplicationsPUT", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 805, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processCategories", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 473, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processChangeRequests", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 427, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processContent", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 511, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processDashboardView", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 105, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processDiplomas", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 213, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processHealth", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 38, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processHerregistraties", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 335, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processIntakes", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 381, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processNotes", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 141, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processPolicy", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 249, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processReady", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 71, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processRegistrations", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 289, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processStatus", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 554, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processSubmit", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 896, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processUploads", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 592, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "processUploads2", "args": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 638, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "response", "type": "Response", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "ready", "args": [], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 56, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "tagName": { "pos": 1836, "end": 1842, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "registrations", "args": [ { "name": "body", "type": "RegistratieRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 269, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "body", "type": "RegistratieRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 9788, "end": 9794, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "status", "args": [ { "name": "localIds", "type": "string | undefined", "optional": true, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 534, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": { "pos": 20761, "end": 20769, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "localIds" }, "type": "string | undefined", "optional": true, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "pos": 20755, "end": 20760, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "param" }, "comment": "

(optional)

\n" }, { "tagName": { "pos": 20790, "end": 20796, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "submit", "args": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "body", "type": "SubmitApplicationRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 873, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "body", "type": "SubmitApplicationRequest", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 34609, "end": 34615, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

OK

\n" } ] }, { "name": "uploads", "args": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 574, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 22420, "end": 22426, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

No Content

\n" } ] }, { "name": "uploads2", "args": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "Promise", "typeParameters": [], "line": 620, "deprecated": false, "deprecationMessage": "", "rawdescription": "\n\n", "description": "", "jsdoctags": [ { "name": "documentId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "tagName": { "pos": 24368, "end": 24374, "kind": 80, "id": 0, "flags": 16842752, "transformFlags": 0, "escapedText": "return" }, "comment": "

No Content

\n" } ] } ], "indexSignatures": [], "extends": [], "hostBindings": [], "hostListeners": [] }, { "name": "SwaggerException", "id": "class-SwaggerException-a1ad498742b78fe14a737f5279a8cb20085df1accd308e96e7390969ebddcbf385370aec212ae4e055b4125612916c8f18e66b0c6730a1afbaf49a9d46345a00", "file": "src/app/shared/infrastructure/api-client.ts", "deprecated": false, "deprecationMessage": "", "type": "class", "sourceCode": "export class ApiClient {\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\n this.http = http ? http : window as any;\n this.baseUrl = baseUrl ?? \"\";\n }\n\n /**\n * @return OK\n */\n health(): Promise {\n let url_ = this.baseUrl + \"/health\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHealth(_response);\n });\n }\n\n protected processHealth(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n ready(): Promise {\n let url_ = this.baseUrl + \"/health/ready\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processReady(_response);\n });\n }\n\n protected processReady(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n dashboardView(): Promise {\n let url_ = this.baseUrl + \"/api/v1/dashboard-view\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDashboardView(_response);\n });\n }\n\n protected processDashboardView(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DashboardViewDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n notes(): Promise {\n let url_ = this.baseUrl + \"/api/v1/notes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processNotes(_response);\n });\n }\n\n protected processNotes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as AantekeningDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n address(): Promise {\n let url_ = this.baseUrl + \"/api/v1/brp/address\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processAddress(_response);\n });\n }\n\n protected processAddress(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as BrpAddressDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n diplomas(): Promise {\n let url_ = this.baseUrl + \"/api/v1/duo/diplomas\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processDiplomas(_response);\n });\n }\n\n protected processDiplomas(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as DuoLookupDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n policy(): Promise {\n let url_ = this.baseUrl + \"/api/v1/intake/policy\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processPolicy(_response);\n });\n }\n\n protected processPolicy(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as IntakePolicyDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n registrations(body: RegistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/registrations\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processRegistrations(_response);\n });\n }\n\n protected processRegistrations(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n herregistraties(body: HerregistratieRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/herregistraties\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processHerregistraties(_response);\n });\n }\n\n protected processHerregistraties(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n intakes(body: IntakeRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/intakes\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processIntakes(_response);\n });\n }\n\n protected processIntakes(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n changeRequests(body: ChangeRequestRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/change-requests\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processChangeRequests(_response);\n });\n }\n\n protected processChangeRequests(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ReferentieResponse;\n return result200;\n });\n } else if (status === 422) {\n return response.text().then((_responseText) => {\n let result422: any = null;\n result422 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Unprocessable Content\", status, _responseText, _headers, result422);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n categories(wizardId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/categories?\";\n if (wizardId === undefined || wizardId === null)\n throw new globalThis.Error(\"The parameter 'wizardId' must be defined and cannot be null.\");\n else\n url_ += \"wizardId=\" + encodeURIComponent(\"\" + wizardId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processCategories(_response);\n });\n }\n\n protected processCategories(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadCategoriesDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n content(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}/content\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processContent(_response);\n });\n }\n\n protected processContent(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @param localIds (optional) \n * @return OK\n */\n status(localIds?: string | undefined): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/status?\";\n if (localIds === null)\n throw new globalThis.Error(\"The parameter 'localIds' cannot be null.\");\n else if (localIds !== undefined)\n url_ += \"localIds=\" + encodeURIComponent(\"\" + localIds) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processStatus(_response);\n });\n }\n\n protected processStatus(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UploadStatusDto;\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads(_response);\n });\n }\n\n protected processUploads(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n uploads2(documentId: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/admin/uploads/{documentId}\";\n if (documentId === undefined || documentId === null)\n throw new globalThis.Error(\"The parameter 'documentId' must be defined.\");\n url_ = url_.replace(\"{documentId}\", encodeURIComponent(\"\" + documentId));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processUploads2(_response);\n });\n }\n\n protected processUploads2(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 403) {\n return response.text().then((_responseText) => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsAll(): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsAll(_response);\n });\n }\n\n protected processApplicationsAll(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationSummaryDto[];\n return result200;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return Created\n */\n applicationsPOST(body: CreateApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPOST(_response);\n });\n }\n\n protected processApplicationsPOST(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 201) {\n return response.text().then((_responseText) => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result201;\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n applicationsGET(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"GET\",\n headers: {\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsGET(_response);\n });\n }\n\n protected processApplicationsGET(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ApplicationDetailDto;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsPUT(id: string, body: DraftSyncRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsPUT(_response);\n });\n }\n\n protected processApplicationsPUT(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return No Content\n */\n applicationsDELETE(id: string): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_: RequestInit = {\n method: \"DELETE\",\n headers: {\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processApplicationsDELETE(_response);\n });\n }\n\n protected processApplicationsDELETE(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 204) {\n return response.text().then((_responseText) => {\n return;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n\n /**\n * @return OK\n */\n submit(id: string, body: SubmitApplicationRequest): Promise {\n let url_ = this.baseUrl + \"/api/v1/applications/{id}/submit\";\n if (id === undefined || id === null)\n throw new globalThis.Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_: RequestInit = {\n body: content_,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n }\n };\n\n return this.http.fetch(url_, options_).then((_response: Response) => {\n return this.processSubmit(_response);\n });\n }\n\n protected processSubmit(response: Response): Promise {\n const status = response.status;\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\n if (status === 200) {\n return response.text().then((_responseText) => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as SubmitApplicationResponse;\n return result200;\n });\n } else if (status === 404) {\n return response.text().then((_responseText) => {\n return throwException(\"Not Found\", status, _responseText, _headers);\n });\n } else if (status === 409) {\n return response.text().then((_responseText) => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n });\n } else if (status !== 200 && status !== 204) {\n return response.text().then((_responseText) => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n });\n }\n return Promise.resolve(null as any);\n }\n}\n\nexport interface AantekeningDto {\n type?: string | undefined;\n omschrijving?: string | undefined;\n datum?: string | undefined;\n}\n\nexport interface AanvraagStatusDto {\n tag?: string | undefined;\n stepIndex?: number | undefined;\n stepCount?: number | undefined;\n referentie?: string | undefined;\n manual?: boolean | undefined;\n reden?: string | undefined;\n}\n\nexport interface AdresDto {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface ApplicationDetailDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n draft?: any | undefined;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface ApplicationSummaryDto {\n id?: string | undefined;\n type?: string | undefined;\n status?: AanvraagStatusDto;\n documentIds?: string[] | undefined;\n createdAt?: string | undefined;\n updatedAt?: string | undefined;\n submittedAt?: string | undefined;\n}\n\nexport interface BrpAddressDto {\n gevonden?: boolean;\n adres?: AdresDto;\n}\n\nexport interface ChangeRequestRequest {\n straat?: string | undefined;\n postcode?: string | undefined;\n woonplaats?: string | undefined;\n}\n\nexport interface CreateApplicationRequest {\n type?: string | undefined;\n}\n\nexport interface DashboardViewDto {\n registration?: RegistrationDto;\n person?: PersonDto;\n decisions?: HerregistratieDecisionsDto;\n}\n\nexport interface DocumentCategoryDto {\n categoryId?: string | undefined;\n label?: string | undefined;\n description?: string | undefined;\n required?: boolean;\n acceptedTypes?: string[] | undefined;\n maxSizeMb?: number;\n multiple?: boolean;\n allowPostDelivery?: boolean;\n}\n\nexport interface DocumentRefDto {\n categoryId?: string | undefined;\n channel?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport interface DraftSyncRequest {\n draft?: any;\n stepIndex?: number;\n stepCount?: number;\n documentIds?: string[] | undefined;\n}\n\nexport interface DuoDiplomaDto {\n id?: string | undefined;\n naam?: string | undefined;\n instelling?: string | undefined;\n jaar?: number;\n beroep?: string | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface DuoLookupDto {\n diplomas?: DuoDiplomaDto[] | undefined;\n handmatig?: ManualDiplomaPolicyDto;\n}\n\nexport interface HerregistratieDecisionsDto {\n eligibleForHerregistratie?: boolean;\n herregistratieReason?: string | undefined;\n}\n\nexport interface HerregistratieRequest {\n uren?: number;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface IntakePolicyDto {\n scholingThreshold?: number;\n}\n\nexport interface IntakeRequest {\n uren?: number;\n}\n\nexport interface ManualDiplomaPolicyDto {\n beroepen?: string[] | undefined;\n policyQuestions?: PolicyQuestionDto[] | undefined;\n}\n\nexport interface PersonDto {\n naam?: string | undefined;\n geboortedatum?: string | undefined;\n adres?: AdresDto;\n}\n\nexport interface PolicyQuestionDto {\n id?: string | undefined;\n vraag?: string | undefined;\n type?: string | undefined;\n}\n\nexport interface ProblemDetails {\n type?: string | undefined;\n title?: string | undefined;\n status?: number | undefined;\n detail?: string | undefined;\n instance?: string | undefined;\n\n [key: string]: any;\n}\n\nexport interface ReferentieResponse {\n referentie?: string | undefined;\n}\n\nexport interface RegistratieRequest {\n diplomaHerkomst?: string | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface RegistrationDto {\n bigNummer?: string | undefined;\n naam?: string | undefined;\n beroep?: string | undefined;\n registratiedatum?: string | undefined;\n geboortedatum?: string | undefined;\n status?: RegistrationStatusDto;\n}\n\nexport interface RegistrationStatusDto {\n tag?: string | undefined;\n herregistratieDatum?: string | undefined;\n geschorstTot?: string | undefined;\n reden?: string | undefined;\n doorgehaaldOp?: string | undefined;\n}\n\nexport interface SubmitApplicationRequest {\n diplomaHerkomst?: string | undefined;\n uren?: number | undefined;\n documents?: DocumentRefDto[] | undefined;\n}\n\nexport interface SubmitApplicationResponse {\n referentie?: string | undefined;\n status?: AanvraagStatusDto;\n}\n\nexport interface UploadCategoriesDto {\n categories?: DocumentCategoryDto[] | undefined;\n}\n\nexport interface UploadStatusDto {\n results?: UploadStatusItemDto[] | undefined;\n}\n\nexport interface UploadStatusItemDto {\n localId?: string | undefined;\n status?: string | undefined;\n documentId?: string | undefined;\n}\n\nexport class SwaggerException extends Error {\n override message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isSwaggerException = true;\n\n static isSwaggerException(obj: any): obj is SwaggerException {\n return obj.isSwaggerException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\n if (result !== null && result !== undefined)\n throw result;\n else\n throw new SwaggerException(message, status, response, headers, null);\n}", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [ { "name": "message", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "status", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "response", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "headers", "type": "literal type", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "result", "type": "any", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "line": 1126, "jsdoctags": [ { "name": "message", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "status", "type": "number", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "response", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "headers", "type": "literal type", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "result", "type": "any", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, "inputsClass": [], "outputsClass": [], "properties": [ { "name": "headers", "deprecated": false, "deprecationMessage": "", "type": "literal type", "indexKey": "", "optional": false, "description": "", "line": 1125 }, { "name": "isSwaggerException", "defaultValue": "true", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 1138, "modifierKind": [ 124 ] }, { "name": "message", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 1122, "modifierKind": [ 164 ] }, { "name": "response", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 1124 }, { "name": "result", "deprecated": false, "deprecationMessage": "", "type": "any", "indexKey": "", "optional": false, "description": "", "line": 1126 }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 1123 } ], "methods": [ { "name": "isSwaggerException", "args": [ { "name": "obj", "type": "any", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "SwaggerException", "typeParameters": [], "line": 1140, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 126 ], "jsdoctags": [ { "name": "obj", "type": "any", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "indexSignatures": [], "extends": [ "Error" ], "hostBindings": [], "hostListeners": [] } ], "directives": [ { "name": "AsyncEmptyDirective", "id": "directive-AsyncEmptyDirective-236661e71859f5c0454a4e4738eb6f243025e121cb717699fb57fbe6f0fe3315b80c592d97ce7b250dfcb2ff7650ee1b8fd93c0a007b57706734fb99b2d0ab8d", "file": "src/app/shared/ui/async/async.component.ts", "type": "directive", "description": "", "rawdescription": "\n", "sourceCode": "import { Component, Directive, TemplateRef, computed, contentChild, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { Resource } from '@angular/core';\nimport { SpinnerComponent } from '@shared/ui/spinner/spinner.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { RemoteData, fromResource, foldRemote } from '@shared/application/remote-data';\n\n/* Slot markers. Put on children of . */\n@Directive({ selector: '[appAsyncLoaded]' })\nexport class AsyncLoadedDirective {\n constructor(public tpl: TemplateRef<{ $implicit: unknown }>) {}\n}\n@Directive({ selector: '[appAsyncLoading]' })\nexport class AsyncLoadingDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncEmpty]' })\nexport class AsyncEmptyDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncError]' })\nexport class AsyncErrorDirective {\n constructor(public tpl: TemplateRef<{ $implicit: Error | undefined; retry: () => void }>) {}\n}\n\n/**\n * Renders exactly ONE of loading / empty / error / loaded for a signal-based\n * resource (e.g. httpResource). Built on a RemoteData tagged union (see\n * core/remote-data.ts), so the states are mutually exclusive by construction —\n * the UI can never show two at once (\"impossible states\"). Unprovided slots\n * fall back to sensible defaults.\n */\n@Component({\n selector: 'app-async',\n imports: [NgTemplateOutlet, SpinnerComponent, AlertComponent, ButtonComponent],\n template: `\n
\n @switch (rd().tag) {\n @case ('Loading') {\n @if (loadingTpl()) { }\n @else { }\n }\n @case ('Failure') {\n @if (errorTpl()) {\n \n } @else {\n {{ errorText() }}\n
\n {{ retryText() }}\n
\n }\n }\n @case ('Empty') {\n @if (emptyTpl()) { }\n @else {

{{ emptyText() }}

}\n }\n @case ('Success') {\n \n }\n }\n
\n `,\n})\nexport class AsyncComponent {\n // Two ways to feed this component:\n // [resource] — a raw httpResource (the common case), or\n // [data] — an already-combined RemoteData (e.g. from a store via map2).\n resource = input>();\n data = input>();\n isEmpty = input<(v: T) => boolean>(() => false);\n\n // Shared/English component: copy lives behind language-agnostic inputs. Defaults are\n // localizable via $localize (source = default locale, currently nl); callers may override.\n errorText = input($localize`:@@async.error:Er ging iets mis bij het laden van de gegevens.`);\n retryText = input($localize`:@@async.retry:Opnieuw proberen`);\n emptyText = input($localize`:@@async.empty:Geen gegevens gevonden.`);\n\n loadedTpl = contentChild.required(AsyncLoadedDirective);\n loadingTpl = contentChild(AsyncLoadingDirective);\n emptyTpl = contentChild(AsyncEmptyDirective);\n errorTpl = contentChild(AsyncErrorDirective);\n\n // Single source of truth: the supplied RemoteData, or the resource projected into one.\n protected rd = computed>(() => {\n const data = this.data();\n if (data) return data;\n const r = this.resource();\n return r ? fromResource(r, this.isEmpty()) : { tag: 'Loading' };\n });\n\n // value/error are pulled out via the exhaustive fold — only Success carries a\n // value, only Failure carries an error, so these can't lie.\n protected value = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: () => undefined, success: (v) => v }),\n );\n protected error = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: (e) => e, success: () => undefined }),\n );\n\n retry = () => {\n const r = this.resource();\n if (r && 'reload' in r && typeof (r as { reload?: unknown }).reload === 'function') {\n (r as { reload: () => void }).reload();\n }\n };\n}\n\n/** Convenience: import this array to get the wrapper + all slot directives. */\nexport const ASYNC = [\n AsyncComponent, AsyncLoadedDirective, AsyncLoadingDirective,\n AsyncEmptyDirective, AsyncErrorDirective,\n] as const;\n", "selector": "[appAsyncEmpty]", "providers": [], "hostDirectives": [], "standalone": false, "inputsClass": [], "outputsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "propertiesClass": [ { "name": "tpl", "deprecated": false, "deprecationMessage": "", "type": "TemplateRef", "indexKey": "", "optional": false, "description": "", "line": 20, "modifierKind": [ 125 ] } ], "methodsClass": [], "extends": [], "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "line": 19, "jsdoctags": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } }, { "name": "AsyncErrorDirective", "id": "directive-AsyncErrorDirective-236661e71859f5c0454a4e4738eb6f243025e121cb717699fb57fbe6f0fe3315b80c592d97ce7b250dfcb2ff7650ee1b8fd93c0a007b57706734fb99b2d0ab8d", "file": "src/app/shared/ui/async/async.component.ts", "type": "directive", "description": "", "rawdescription": "\n", "sourceCode": "import { Component, Directive, TemplateRef, computed, contentChild, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { Resource } from '@angular/core';\nimport { SpinnerComponent } from '@shared/ui/spinner/spinner.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { RemoteData, fromResource, foldRemote } from '@shared/application/remote-data';\n\n/* Slot markers. Put on children of . */\n@Directive({ selector: '[appAsyncLoaded]' })\nexport class AsyncLoadedDirective {\n constructor(public tpl: TemplateRef<{ $implicit: unknown }>) {}\n}\n@Directive({ selector: '[appAsyncLoading]' })\nexport class AsyncLoadingDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncEmpty]' })\nexport class AsyncEmptyDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncError]' })\nexport class AsyncErrorDirective {\n constructor(public tpl: TemplateRef<{ $implicit: Error | undefined; retry: () => void }>) {}\n}\n\n/**\n * Renders exactly ONE of loading / empty / error / loaded for a signal-based\n * resource (e.g. httpResource). Built on a RemoteData tagged union (see\n * core/remote-data.ts), so the states are mutually exclusive by construction —\n * the UI can never show two at once (\"impossible states\"). Unprovided slots\n * fall back to sensible defaults.\n */\n@Component({\n selector: 'app-async',\n imports: [NgTemplateOutlet, SpinnerComponent, AlertComponent, ButtonComponent],\n template: `\n
\n @switch (rd().tag) {\n @case ('Loading') {\n @if (loadingTpl()) { }\n @else { }\n }\n @case ('Failure') {\n @if (errorTpl()) {\n \n } @else {\n {{ errorText() }}\n
\n {{ retryText() }}\n
\n }\n }\n @case ('Empty') {\n @if (emptyTpl()) { }\n @else {

{{ emptyText() }}

}\n }\n @case ('Success') {\n \n }\n }\n
\n `,\n})\nexport class AsyncComponent {\n // Two ways to feed this component:\n // [resource] — a raw httpResource (the common case), or\n // [data] — an already-combined RemoteData (e.g. from a store via map2).\n resource = input>();\n data = input>();\n isEmpty = input<(v: T) => boolean>(() => false);\n\n // Shared/English component: copy lives behind language-agnostic inputs. Defaults are\n // localizable via $localize (source = default locale, currently nl); callers may override.\n errorText = input($localize`:@@async.error:Er ging iets mis bij het laden van de gegevens.`);\n retryText = input($localize`:@@async.retry:Opnieuw proberen`);\n emptyText = input($localize`:@@async.empty:Geen gegevens gevonden.`);\n\n loadedTpl = contentChild.required(AsyncLoadedDirective);\n loadingTpl = contentChild(AsyncLoadingDirective);\n emptyTpl = contentChild(AsyncEmptyDirective);\n errorTpl = contentChild(AsyncErrorDirective);\n\n // Single source of truth: the supplied RemoteData, or the resource projected into one.\n protected rd = computed>(() => {\n const data = this.data();\n if (data) return data;\n const r = this.resource();\n return r ? fromResource(r, this.isEmpty()) : { tag: 'Loading' };\n });\n\n // value/error are pulled out via the exhaustive fold — only Success carries a\n // value, only Failure carries an error, so these can't lie.\n protected value = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: () => undefined, success: (v) => v }),\n );\n protected error = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: (e) => e, success: () => undefined }),\n );\n\n retry = () => {\n const r = this.resource();\n if (r && 'reload' in r && typeof (r as { reload?: unknown }).reload === 'function') {\n (r as { reload: () => void }).reload();\n }\n };\n}\n\n/** Convenience: import this array to get the wrapper + all slot directives. */\nexport const ASYNC = [\n AsyncComponent, AsyncLoadedDirective, AsyncLoadingDirective,\n AsyncEmptyDirective, AsyncErrorDirective,\n] as const;\n", "selector": "[appAsyncError]", "providers": [], "hostDirectives": [], "standalone": false, "inputsClass": [], "outputsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "propertiesClass": [ { "name": "tpl", "deprecated": false, "deprecationMessage": "", "type": "TemplateRef", "indexKey": "", "optional": false, "description": "", "line": 24, "modifierKind": [ 125 ] } ], "methodsClass": [], "extends": [], "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "line": 23, "jsdoctags": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } }, { "name": "AsyncLoadedDirective", "id": "directive-AsyncLoadedDirective-236661e71859f5c0454a4e4738eb6f243025e121cb717699fb57fbe6f0fe3315b80c592d97ce7b250dfcb2ff7650ee1b8fd93c0a007b57706734fb99b2d0ab8d", "file": "src/app/shared/ui/async/async.component.ts", "type": "directive", "description": "", "rawdescription": "\n", "sourceCode": "import { Component, Directive, TemplateRef, computed, contentChild, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { Resource } from '@angular/core';\nimport { SpinnerComponent } from '@shared/ui/spinner/spinner.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { RemoteData, fromResource, foldRemote } from '@shared/application/remote-data';\n\n/* Slot markers. Put on children of . */\n@Directive({ selector: '[appAsyncLoaded]' })\nexport class AsyncLoadedDirective {\n constructor(public tpl: TemplateRef<{ $implicit: unknown }>) {}\n}\n@Directive({ selector: '[appAsyncLoading]' })\nexport class AsyncLoadingDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncEmpty]' })\nexport class AsyncEmptyDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncError]' })\nexport class AsyncErrorDirective {\n constructor(public tpl: TemplateRef<{ $implicit: Error | undefined; retry: () => void }>) {}\n}\n\n/**\n * Renders exactly ONE of loading / empty / error / loaded for a signal-based\n * resource (e.g. httpResource). Built on a RemoteData tagged union (see\n * core/remote-data.ts), so the states are mutually exclusive by construction —\n * the UI can never show two at once (\"impossible states\"). Unprovided slots\n * fall back to sensible defaults.\n */\n@Component({\n selector: 'app-async',\n imports: [NgTemplateOutlet, SpinnerComponent, AlertComponent, ButtonComponent],\n template: `\n
\n @switch (rd().tag) {\n @case ('Loading') {\n @if (loadingTpl()) { }\n @else { }\n }\n @case ('Failure') {\n @if (errorTpl()) {\n \n } @else {\n {{ errorText() }}\n
\n {{ retryText() }}\n
\n }\n }\n @case ('Empty') {\n @if (emptyTpl()) { }\n @else {

{{ emptyText() }}

}\n }\n @case ('Success') {\n \n }\n }\n
\n `,\n})\nexport class AsyncComponent {\n // Two ways to feed this component:\n // [resource] — a raw httpResource (the common case), or\n // [data] — an already-combined RemoteData (e.g. from a store via map2).\n resource = input>();\n data = input>();\n isEmpty = input<(v: T) => boolean>(() => false);\n\n // Shared/English component: copy lives behind language-agnostic inputs. Defaults are\n // localizable via $localize (source = default locale, currently nl); callers may override.\n errorText = input($localize`:@@async.error:Er ging iets mis bij het laden van de gegevens.`);\n retryText = input($localize`:@@async.retry:Opnieuw proberen`);\n emptyText = input($localize`:@@async.empty:Geen gegevens gevonden.`);\n\n loadedTpl = contentChild.required(AsyncLoadedDirective);\n loadingTpl = contentChild(AsyncLoadingDirective);\n emptyTpl = contentChild(AsyncEmptyDirective);\n errorTpl = contentChild(AsyncErrorDirective);\n\n // Single source of truth: the supplied RemoteData, or the resource projected into one.\n protected rd = computed>(() => {\n const data = this.data();\n if (data) return data;\n const r = this.resource();\n return r ? fromResource(r, this.isEmpty()) : { tag: 'Loading' };\n });\n\n // value/error are pulled out via the exhaustive fold — only Success carries a\n // value, only Failure carries an error, so these can't lie.\n protected value = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: () => undefined, success: (v) => v }),\n );\n protected error = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: (e) => e, success: () => undefined }),\n );\n\n retry = () => {\n const r = this.resource();\n if (r && 'reload' in r && typeof (r as { reload?: unknown }).reload === 'function') {\n (r as { reload: () => void }).reload();\n }\n };\n}\n\n/** Convenience: import this array to get the wrapper + all slot directives. */\nexport const ASYNC = [\n AsyncComponent, AsyncLoadedDirective, AsyncLoadingDirective,\n AsyncEmptyDirective, AsyncErrorDirective,\n] as const;\n", "selector": "[appAsyncLoaded]", "providers": [], "hostDirectives": [], "standalone": false, "inputsClass": [], "outputsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "propertiesClass": [ { "name": "tpl", "deprecated": false, "deprecationMessage": "", "type": "TemplateRef", "indexKey": "", "optional": false, "description": "", "line": 12, "modifierKind": [ 125 ] } ], "methodsClass": [], "extends": [], "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "line": 11, "jsdoctags": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } }, { "name": "AsyncLoadingDirective", "id": "directive-AsyncLoadingDirective-236661e71859f5c0454a4e4738eb6f243025e121cb717699fb57fbe6f0fe3315b80c592d97ce7b250dfcb2ff7650ee1b8fd93c0a007b57706734fb99b2d0ab8d", "file": "src/app/shared/ui/async/async.component.ts", "type": "directive", "description": "", "rawdescription": "\n", "sourceCode": "import { Component, Directive, TemplateRef, computed, contentChild, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { Resource } from '@angular/core';\nimport { SpinnerComponent } from '@shared/ui/spinner/spinner.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { RemoteData, fromResource, foldRemote } from '@shared/application/remote-data';\n\n/* Slot markers. Put on children of . */\n@Directive({ selector: '[appAsyncLoaded]' })\nexport class AsyncLoadedDirective {\n constructor(public tpl: TemplateRef<{ $implicit: unknown }>) {}\n}\n@Directive({ selector: '[appAsyncLoading]' })\nexport class AsyncLoadingDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncEmpty]' })\nexport class AsyncEmptyDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncError]' })\nexport class AsyncErrorDirective {\n constructor(public tpl: TemplateRef<{ $implicit: Error | undefined; retry: () => void }>) {}\n}\n\n/**\n * Renders exactly ONE of loading / empty / error / loaded for a signal-based\n * resource (e.g. httpResource). Built on a RemoteData tagged union (see\n * core/remote-data.ts), so the states are mutually exclusive by construction —\n * the UI can never show two at once (\"impossible states\"). Unprovided slots\n * fall back to sensible defaults.\n */\n@Component({\n selector: 'app-async',\n imports: [NgTemplateOutlet, SpinnerComponent, AlertComponent, ButtonComponent],\n template: `\n
\n @switch (rd().tag) {\n @case ('Loading') {\n @if (loadingTpl()) { }\n @else { }\n }\n @case ('Failure') {\n @if (errorTpl()) {\n \n } @else {\n {{ errorText() }}\n
\n {{ retryText() }}\n
\n }\n }\n @case ('Empty') {\n @if (emptyTpl()) { }\n @else {

{{ emptyText() }}

}\n }\n @case ('Success') {\n \n }\n }\n
\n `,\n})\nexport class AsyncComponent {\n // Two ways to feed this component:\n // [resource] — a raw httpResource (the common case), or\n // [data] — an already-combined RemoteData (e.g. from a store via map2).\n resource = input>();\n data = input>();\n isEmpty = input<(v: T) => boolean>(() => false);\n\n // Shared/English component: copy lives behind language-agnostic inputs. Defaults are\n // localizable via $localize (source = default locale, currently nl); callers may override.\n errorText = input($localize`:@@async.error:Er ging iets mis bij het laden van de gegevens.`);\n retryText = input($localize`:@@async.retry:Opnieuw proberen`);\n emptyText = input($localize`:@@async.empty:Geen gegevens gevonden.`);\n\n loadedTpl = contentChild.required(AsyncLoadedDirective);\n loadingTpl = contentChild(AsyncLoadingDirective);\n emptyTpl = contentChild(AsyncEmptyDirective);\n errorTpl = contentChild(AsyncErrorDirective);\n\n // Single source of truth: the supplied RemoteData, or the resource projected into one.\n protected rd = computed>(() => {\n const data = this.data();\n if (data) return data;\n const r = this.resource();\n return r ? fromResource(r, this.isEmpty()) : { tag: 'Loading' };\n });\n\n // value/error are pulled out via the exhaustive fold — only Success carries a\n // value, only Failure carries an error, so these can't lie.\n protected value = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: () => undefined, success: (v) => v }),\n );\n protected error = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: (e) => e, success: () => undefined }),\n );\n\n retry = () => {\n const r = this.resource();\n if (r && 'reload' in r && typeof (r as { reload?: unknown }).reload === 'function') {\n (r as { reload: () => void }).reload();\n }\n };\n}\n\n/** Convenience: import this array to get the wrapper + all slot directives. */\nexport const ASYNC = [\n AsyncComponent, AsyncLoadedDirective, AsyncLoadingDirective,\n AsyncEmptyDirective, AsyncErrorDirective,\n] as const;\n", "selector": "[appAsyncLoading]", "providers": [], "hostDirectives": [], "standalone": false, "inputsClass": [], "outputsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "propertiesClass": [ { "name": "tpl", "deprecated": false, "deprecationMessage": "", "type": "TemplateRef", "indexKey": "", "optional": false, "description": "", "line": 16, "modifierKind": [ 125 ] } ], "methodsClass": [], "extends": [], "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "line": 15, "jsdoctags": [ { "name": "tpl", "type": "TemplateRef", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } } ], "components": [ { "name": "AanvraagBlockComponent", "id": "component-AanvraagBlockComponent-0b13f0dc60cb675b8ac4c2139da3d7985139d7fe224ef455aee35aff262a93b65c27245d6dfb5a8d121270894710d1e918512b3150de7a9ee57e498192131f68", "file": "src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-aanvraag-block", "styleUrls": [], "styles": [ "\n .head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--rhc-space-max-md); flex-wrap: wrap; }\n .actions { display: flex; gap: var(--rhc-space-max-md); margin-block-start: var(--rhc-space-max-md); }\n " ], "template": "\n
\n {{ typeLabel() }}\n \n
\n\n @switch (aanvraag().status.tag) {\n @case ('Concept') {\n

Stap {{ stap().index }} van {{ stap().count }}

\n }\n @case ('InBehandeling') {\n

Referentie {{ ref() }} · ingediend op {{ aanvraag().submittedAt | date: 'longDate' }}

\n @if (manual()) {\n

Uw aanvraag wordt handmatig beoordeeld in de backoffice.

\n }\n }\n @case ('Goedgekeurd') {\n

Referentie {{ ref() }}

\n }\n @case ('Afgewezen') {\n

Referentie {{ ref() }}

\n

{{ reden() }}

\n }\n }\n\n @if (actions().length) {\n
\n @if (actions().includes('resume')) {\n Verder gaan\n }\n @if (actions().includes('cancel')) {\n Annuleren\n }\n
\n }\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "aanvraag", "deprecated": false, "deprecationMessage": "", "type": "Aanvraag", "indexKey": "", "optional": false, "description": "", "line": 66, "required": true } ], "outputsClass": [ { "name": "cancel", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 69, "required": false }, { "name": "resume", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 68, "required": false } ], "propertiesClass": [ { "name": "actions", "defaultValue": "computed(() => blockActions(this.aanvraag().status))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 72, "modifierKind": [ 124 ] }, { "name": "badgeColor", "defaultValue": "computed(() => {\n switch (this.aanvraag().status.tag) {\n case 'Concept': return 'var(--rhc-color-cool-grey-300)';\n case 'InBehandeling': return 'var(--rhc-color-oranje-500)';\n case 'Goedgekeurd': return 'var(--rhc-color-groen-500)';\n case 'Afgewezen': return 'var(--rhc-color-rood-500)';\n }\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 83, "modifierKind": [ 124 ] }, { "name": "badgeLabel", "defaultValue": "computed(() => {\n switch (this.aanvraag().status.tag) {\n case 'Concept': return $localize`:@@aanvraagBlock.badge.concept:Concept`;\n case 'InBehandeling': return $localize`:@@aanvraagBlock.badge.inBehandeling:In behandeling`;\n case 'Goedgekeurd': return $localize`:@@aanvraagBlock.badge.goedgekeurd:Goedgekeurd`;\n case 'Afgewezen': return $localize`:@@aanvraagBlock.badge.afgewezen:Afgewezen`;\n }\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 75, "modifierKind": [ 124 ] }, { "name": "manual", "defaultValue": "computed(() => {\n const s = this.aanvraag().status;\n return s.tag === 'InBehandeling' && s.manual;\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 101, "modifierKind": [ 124 ] }, { "name": "reden", "defaultValue": "computed(() => {\n const s = this.aanvraag().status;\n return s.tag === 'Afgewezen' ? s.reden : '';\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 105, "modifierKind": [ 124 ] }, { "name": "ref", "defaultValue": "computed(() => {\n const s = this.aanvraag().status;\n return s.tag !== 'Concept' ? s.referentie : '';\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 97, "modifierKind": [ 124 ] }, { "name": "stap", "defaultValue": "computed(() => {\n const s = this.aanvraag().status;\n return s.tag === 'Concept' ? { index: s.stepIndex + 1, count: s.stepCount } : { index: 0, count: 0 };\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 93, "modifierKind": [ 124 ] }, { "name": "typeLabel", "defaultValue": "computed(() => TYPE_LABELS[this.aanvraag().type])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 71, "modifierKind": [ 124 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "DatePipe", "type": "pipe" }, { "name": "HeadingComponent", "type": "component" }, { "name": "StatusBadgeComponent", "type": "component" }, { "name": "ButtonComponent", "type": "component" }, { "name": "CardComponent", "type": "component" } ], "description": "

Organism: one application on the dashboard's "Mijn aanvragen" list. Which badge

\n
    \n
  • actions it shows is driven by the pure blockActions(status) and the status\ntag; the block only renders. Composes card + status-badge + button.
  • \n
\n", "rawdescription": "\nOrganism: one application on the dashboard's \"Mijn aanvragen\" list. Which badge\n+ actions it shows is driven by the pure `blockActions(status)` and the status\ntag; the block only renders. Composes card + status-badge + button.", "type": "component", "sourceCode": "import { Component, computed, input, output } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { HeadingComponent } from '@shared/ui/heading/heading.component';\nimport { StatusBadgeComponent } from '@shared/ui/status-badge/status-badge.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { CardComponent } from '@shared/ui/card/card.component';\nimport { Aanvraag, AanvraagType } from '@registratie/domain/aanvraag';\nimport { blockActions } from '@registratie/domain/block-actions';\n\nconst TYPE_LABELS: Record = {\n registratie: $localize`:@@aanvraagBlock.type.registratie:Inschrijving`,\n herregistratie: $localize`:@@aanvraagBlock.type.herregistratie:Herregistratie`,\n intake: $localize`:@@aanvraagBlock.type.intake:Herregistratie-intake`,\n};\n\n/** Organism: one application on the dashboard's \"Mijn aanvragen\" list. Which badge\n + actions it shows is driven by the pure `blockActions(status)` and the status\n tag; the block only renders. Composes card + status-badge + button. */\n@Component({\n selector: 'app-aanvraag-block',\n imports: [DatePipe, HeadingComponent, StatusBadgeComponent, ButtonComponent, CardComponent],\n styles: [`\n .head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--rhc-space-max-md); flex-wrap: wrap; }\n .actions { display: flex; gap: var(--rhc-space-max-md); margin-block-start: var(--rhc-space-max-md); }\n `],\n template: `\n \n
\n {{ typeLabel() }}\n \n
\n\n @switch (aanvraag().status.tag) {\n @case ('Concept') {\n

Stap {{ stap().index }} van {{ stap().count }}

\n }\n @case ('InBehandeling') {\n

Referentie {{ ref() }} · ingediend op {{ aanvraag().submittedAt | date: 'longDate' }}

\n @if (manual()) {\n

Uw aanvraag wordt handmatig beoordeeld in de backoffice.

\n }\n }\n @case ('Goedgekeurd') {\n

Referentie {{ ref() }}

\n }\n @case ('Afgewezen') {\n

Referentie {{ ref() }}

\n

{{ reden() }}

\n }\n }\n\n @if (actions().length) {\n
\n @if (actions().includes('resume')) {\n Verder gaan\n }\n @if (actions().includes('cancel')) {\n Annuleren\n }\n
\n }\n
\n `,\n})\nexport class AanvraagBlockComponent {\n aanvraag = input.required();\n\n resume = output();\n cancel = output();\n\n protected typeLabel = computed(() => TYPE_LABELS[this.aanvraag().type]);\n protected actions = computed(() => blockActions(this.aanvraag().status));\n\n // Status-tag → badge presentation (the UI's mapping, not a domain rule).\n protected badgeLabel = computed(() => {\n switch (this.aanvraag().status.tag) {\n case 'Concept': return $localize`:@@aanvraagBlock.badge.concept:Concept`;\n case 'InBehandeling': return $localize`:@@aanvraagBlock.badge.inBehandeling:In behandeling`;\n case 'Goedgekeurd': return $localize`:@@aanvraagBlock.badge.goedgekeurd:Goedgekeurd`;\n case 'Afgewezen': return $localize`:@@aanvraagBlock.badge.afgewezen:Afgewezen`;\n }\n });\n protected badgeColor = computed(() => {\n switch (this.aanvraag().status.tag) {\n case 'Concept': return 'var(--rhc-color-cool-grey-300)';\n case 'InBehandeling': return 'var(--rhc-color-oranje-500)';\n case 'Goedgekeurd': return 'var(--rhc-color-groen-500)';\n case 'Afgewezen': return 'var(--rhc-color-rood-500)';\n }\n });\n\n // Field accessors per tag (the template @switch guarantees the right shape).\n protected stap = computed(() => {\n const s = this.aanvraag().status;\n return s.tag === 'Concept' ? { index: s.stepIndex + 1, count: s.stepCount } : { index: 0, count: 0 };\n });\n protected ref = computed(() => {\n const s = this.aanvraag().status;\n return s.tag !== 'Concept' ? s.referentie : '';\n });\n protected manual = computed(() => {\n const s = this.aanvraag().status;\n return s.tag === 'InBehandeling' && s.manual;\n });\n protected reden = computed(() => {\n const s = this.aanvraag().status;\n return s.tag === 'Afgewezen' ? s.reden : '';\n });\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n .head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--rhc-space-max-md); flex-wrap: wrap; }\n .actions { display: flex; gap: var(--rhc-space-max-md); margin-block-start: var(--rhc-space-max-md); }\n \n", "extends": [] }, { "name": "AddressFieldsComponent", "id": "component-AddressFieldsComponent-d490884516bc8cb66cff8f7590026db7300f61f6d03a910f4ad9e35b8967f4d0a64c253d42298b5da3747313c5c44e27cf983756b915eec75ced3508b6e3c6d6", "file": "src/app/registratie/ui/address-fields/address-fields.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-address-fields", "styleUrls": [], "styles": [ "\n fieldset{border:0;margin:0;padding:0;min-inline-size:0}\n legend{padding:0;font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-end:var(--rhc-space-max-md)}\n app-form-field + app-form-field{display:block;margin-block-start:var(--rhc-space-max-lg)}\n " ], "template": "
\n {{ legend() }}\n \n \n \n \n \n \n \n \n \n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "errors", "defaultValue": "{}", "deprecated": false, "deprecationMessage": "", "type": "AdresErrors", "indexKey": "", "optional": false, "description": "", "line": 50, "required": false }, { "name": "idPrefix", "defaultValue": "'adres'", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "

Prefix for field ids/labels — keeps them unique if two blocks ever co-exist.

\n", "line": 52, "rawdescription": "\nPrefix for field ids/labels — keeps them unique if two blocks ever co-exist.", "required": false }, { "name": "legend", "defaultValue": "$localize`:@@address.legend:Adres`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 53, "required": false }, { "name": "value", "deprecated": false, "deprecationMessage": "", "type": "AdresValue", "indexKey": "", "optional": false, "description": "", "line": 49, "required": true } ], "outputsClass": [ { "name": "fieldChange", "deprecated": false, "deprecationMessage": "", "type": "{ key: keyof AdresValue; value: string }", "indexKey": "", "optional": false, "description": "", "line": 54, "required": false } ], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "FormsModule", "type": "module" }, { "name": "FormFieldComponent", "type": "component" }, { "name": "TextInputComponent", "type": "component" } ], "description": "

Organism: the editable address block (straat / postcode / woonplaats), grouped\nin a fieldset/legend. Pure & presentational — values in via value, errors in\nvia errors, every keystroke out via fieldChange. No store, no services, no\ninternal state; the container owns the Model and decides what a change means\n(registratie-wizard dispatches SetField; change-request-form sets its props).\nComposes the form-field molecule (×3) so labels/error wiring stay consistent.

\n", "rawdescription": "\nOrganism: the editable address block (straat / postcode / woonplaats), grouped\nin a fieldset/legend. Pure & presentational — values in via `value`, errors in\nvia `errors`, every keystroke out via `fieldChange`. No store, no services, no\ninternal state; the container owns the Model and decides what a change means\n(registratie-wizard dispatches SetField; change-request-form sets its props).\nComposes the form-field molecule (×3) so labels/error wiring stay consistent.", "type": "component", "sourceCode": "import { Component, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldComponent } from '@shared/ui/form-field/form-field.component';\nimport { TextInputComponent } from '@shared/ui/text-input/text-input.component';\n\nexport interface AdresValue {\n straat: string;\n postcode: string;\n woonplaats: string;\n}\nexport type AdresErrors = Partial>;\n\n/** Organism: the editable address block (straat / postcode / woonplaats), grouped\n in a fieldset/legend. Pure & presentational — values in via `value`, errors in\n via `errors`, every keystroke out via `fieldChange`. No store, no services, no\n internal state; the container owns the Model and decides what a change means\n (registratie-wizard dispatches SetField; change-request-form sets its props).\n Composes the form-field molecule (×3) so labels/error wiring stay consistent. */\n@Component({\n selector: 'app-address-fields',\n imports: [FormsModule, FormFieldComponent, TextInputComponent],\n styles: [`\n fieldset{border:0;margin:0;padding:0;min-inline-size:0}\n legend{padding:0;font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-end:var(--rhc-space-max-md)}\n app-form-field + app-form-field{display:block;margin-block-start:var(--rhc-space-max-lg)}\n `],\n template: `\n
\n {{ legend() }}\n \n \n \n \n \n \n \n \n \n
\n `,\n})\nexport class AddressFieldsComponent {\n value = input.required();\n errors = input({});\n /** Prefix for field ids/labels — keeps them unique if two blocks ever co-exist. */\n idPrefix = input('adres');\n legend = input($localize`:@@address.legend:Adres`);\n fieldChange = output<{ key: keyof AdresValue; value: string }>();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n fieldset{border:0;margin:0;padding:0;min-inline-size:0}\n legend{padding:0;font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-end:var(--rhc-space-max-md)}\n app-form-field + app-form-field{display:block;margin-block-start:var(--rhc-space-max-lg)}\n \n", "extends": [] }, { "name": "AlertComponent", "id": "component-AlertComponent-7d03ee2c0179c2f8d44795112c823951406810027571b5471bc765873f1aeaee550dcb89c6ebd8514ee36f2d96c8c6ba118293bf44a4a1316f61e91fa3c06f4e", "file": "src/app/shared/ui/alert/alert.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-alert", "styleUrls": [], "styles": [], "template": "\n \n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "type", "defaultValue": "'info'", "deprecated": false, "deprecationMessage": "", "type": "AlertType", "indexKey": "", "optional": false, "description": "", "line": 21, "required": false } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: alert/message banner.

\n", "rawdescription": "\nAtom: alert/message banner.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\n\ntype AlertType = 'info' | 'ok' | 'warning' | 'error';\n\n/** Atom: alert/message banner. */\n@Component({\n selector: 'app-alert',\n template: `\n \n \n \n `,\n})\nexport class AlertComponent {\n type = input('info');\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "App", "id": "component-App-a5889755e6aaa6ebd2f471f1253c27e411d38a42361e18619621ef0e6c5a91de3cf6ba4ace13bbe1756691f1f5e80728717fd18aab2cef50180bd579fa218a6d", "file": "src/app/app.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-root", "styleUrls": [], "styles": [], "template": "", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "RouterOutlet" } ], "description": "", "rawdescription": "\n", "type": "component", "sourceCode": "import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n imports: [RouterOutlet],\n template: '',\n})\nexport class App {}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "AsyncComponent", "id": "component-AsyncComponent-236661e71859f5c0454a4e4738eb6f243025e121cb717699fb57fbe6f0fe3315b80c592d97ce7b250dfcb2ff7650ee1b8fd93c0a007b57706734fb99b2d0ab8d", "file": "src/app/shared/ui/async/async.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-async", "styleUrls": [], "styles": [], "template": "
\n@switch (rd().tag) {\n @case ('Loading') {\n @if (loadingTpl()) { }\n @else { }\n }\n @case ('Failure') {\n @if (errorTpl()) {\n \n } @else {\n {{ errorText() }}\n
\n {{ retryText() }}\n
\n }\n }\n @case ('Empty') {\n @if (emptyTpl()) { }\n @else {

{{ emptyText() }}

}\n }\n @case ('Success') {\n \n }\n}\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "data", "deprecated": false, "deprecationMessage": "", "type": "RemoteData", "indexKey": "", "optional": false, "description": "", "line": 72, "required": false }, { "name": "emptyText", "defaultValue": "$localize`:@@async.empty:Geen gegevens gevonden.`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 79, "required": false }, { "name": "errorText", "defaultValue": "$localize`:@@async.error:Er ging iets mis bij het laden van de gegevens.`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 77, "required": false }, { "name": "isEmpty", "defaultValue": "() => false", "deprecated": false, "deprecationMessage": "", "type": "(v: T) => boolean", "indexKey": "", "optional": false, "description": "", "line": 73, "required": false }, { "name": "resource", "deprecated": false, "deprecationMessage": "", "type": "Resource", "indexKey": "", "optional": false, "description": "", "line": 71, "required": false }, { "name": "retryText", "defaultValue": "$localize`:@@async.retry:Opnieuw proberen`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 78, "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "emptyTpl", "defaultValue": "contentChild(AsyncEmptyDirective)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 83 }, { "name": "error", "defaultValue": "computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: (e) => e, success: () => undefined }),\n )", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 99, "modifierKind": [ 124 ] }, { "name": "errorTpl", "defaultValue": "contentChild(AsyncErrorDirective)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 84 }, { "name": "loadedTpl", "defaultValue": "contentChild.required(AsyncLoadedDirective)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 81 }, { "name": "loadingTpl", "defaultValue": "contentChild(AsyncLoadingDirective)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 82 }, { "name": "rd", "defaultValue": "computed>(() => {\n const data = this.data();\n if (data) return data;\n const r = this.resource();\n return r ? fromResource(r, this.isEmpty()) : { tag: 'Loading' };\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 87, "modifierKind": [ 124 ] }, { "name": "retry", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 103 }, { "name": "value", "defaultValue": "computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: () => undefined, success: (v) => v }),\n )", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 96, "modifierKind": [ 124 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "NgTemplateOutlet" }, { "name": "SpinnerComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "ButtonComponent", "type": "component" } ], "description": "

Renders exactly ONE of loading / empty / error / loaded for a signal-based\nresource (e.g. httpResource). Built on a RemoteData tagged union (see\ncore/remote-data.ts), so the states are mutually exclusive by construction —\nthe UI can never show two at once ("impossible states"). Unprovided slots\nfall back to sensible defaults.

\n", "rawdescription": "\n\nRenders exactly ONE of loading / empty / error / loaded for a signal-based\nresource (e.g. httpResource). Built on a RemoteData tagged union (see\ncore/remote-data.ts), so the states are mutually exclusive by construction —\nthe UI can never show two at once (\"impossible states\"). Unprovided slots\nfall back to sensible defaults.\n", "type": "component", "sourceCode": "import { Component, Directive, TemplateRef, computed, contentChild, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport type { Resource } from '@angular/core';\nimport { SpinnerComponent } from '@shared/ui/spinner/spinner.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { RemoteData, fromResource, foldRemote } from '@shared/application/remote-data';\n\n/* Slot markers. Put on children of . */\n@Directive({ selector: '[appAsyncLoaded]' })\nexport class AsyncLoadedDirective {\n constructor(public tpl: TemplateRef<{ $implicit: unknown }>) {}\n}\n@Directive({ selector: '[appAsyncLoading]' })\nexport class AsyncLoadingDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncEmpty]' })\nexport class AsyncEmptyDirective {\n constructor(public tpl: TemplateRef) {}\n}\n@Directive({ selector: '[appAsyncError]' })\nexport class AsyncErrorDirective {\n constructor(public tpl: TemplateRef<{ $implicit: Error | undefined; retry: () => void }>) {}\n}\n\n/**\n * Renders exactly ONE of loading / empty / error / loaded for a signal-based\n * resource (e.g. httpResource). Built on a RemoteData tagged union (see\n * core/remote-data.ts), so the states are mutually exclusive by construction —\n * the UI can never show two at once (\"impossible states\"). Unprovided slots\n * fall back to sensible defaults.\n */\n@Component({\n selector: 'app-async',\n imports: [NgTemplateOutlet, SpinnerComponent, AlertComponent, ButtonComponent],\n template: `\n
\n @switch (rd().tag) {\n @case ('Loading') {\n @if (loadingTpl()) { }\n @else { }\n }\n @case ('Failure') {\n @if (errorTpl()) {\n \n } @else {\n {{ errorText() }}\n
\n {{ retryText() }}\n
\n }\n }\n @case ('Empty') {\n @if (emptyTpl()) { }\n @else {

{{ emptyText() }}

}\n }\n @case ('Success') {\n \n }\n }\n
\n `,\n})\nexport class AsyncComponent {\n // Two ways to feed this component:\n // [resource] — a raw httpResource (the common case), or\n // [data] — an already-combined RemoteData (e.g. from a store via map2).\n resource = input>();\n data = input>();\n isEmpty = input<(v: T) => boolean>(() => false);\n\n // Shared/English component: copy lives behind language-agnostic inputs. Defaults are\n // localizable via $localize (source = default locale, currently nl); callers may override.\n errorText = input($localize`:@@async.error:Er ging iets mis bij het laden van de gegevens.`);\n retryText = input($localize`:@@async.retry:Opnieuw proberen`);\n emptyText = input($localize`:@@async.empty:Geen gegevens gevonden.`);\n\n loadedTpl = contentChild.required(AsyncLoadedDirective);\n loadingTpl = contentChild(AsyncLoadingDirective);\n emptyTpl = contentChild(AsyncEmptyDirective);\n errorTpl = contentChild(AsyncErrorDirective);\n\n // Single source of truth: the supplied RemoteData, or the resource projected into one.\n protected rd = computed>(() => {\n const data = this.data();\n if (data) return data;\n const r = this.resource();\n return r ? fromResource(r, this.isEmpty()) : { tag: 'Loading' };\n });\n\n // value/error are pulled out via the exhaustive fold — only Success carries a\n // value, only Failure carries an error, so these can't lie.\n protected value = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: () => undefined, success: (v) => v }),\n );\n protected error = computed(() =>\n foldRemote(this.rd(), { loading: () => undefined, empty: () => undefined, failure: (e) => e, success: () => undefined }),\n );\n\n retry = () => {\n const r = this.resource();\n if (r && 'reload' in r && typeof (r as { reload?: unknown }).reload === 'function') {\n (r as { reload: () => void }).reload();\n }\n };\n}\n\n/** Convenience: import this array to get the wrapper + all slot directives. */\nexport const ASYNC = [\n AsyncComponent, AsyncLoadedDirective, AsyncLoadingDirective,\n AsyncEmptyDirective, AsyncErrorDirective,\n] as const;\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "BreadcrumbComponent", "id": "component-BreadcrumbComponent-7a679e70f2a541a876a02dd5999150ec5793ddf654bc902768c5252ea53b8996450966dfd31873d31e9d849880b3d6358b90711564a19f4c228576bc2214e19c", "file": "src/app/shared/layout/breadcrumb/breadcrumb.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-breadcrumb", "styleUrls": [], "styles": [ "\n :host{display:block}\n .list{display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md);align-items:center;list-style:none;margin:0;padding:0;font-size:var(--rhc-text-font-size-sm)}\n .crumb{display:inline-flex;align-items:center;gap:var(--rhc-space-max-md)}\n a{color:var(--rhc-color-foreground-link);text-decoration:underline}\n a:hover{color:var(--rhc-color-foreground-link-hover)}\n .current{color:var(--rhc-color-foreground-subtle)}\n .sep{color:var(--rhc-color-foreground-subtle)}\n /* Inverse: on the blue header bar, everything is white. */\n :host(.inverse) a,\n :host(.inverse) .current,\n :host(.inverse) .sep { color: var(--rhc-color-foreground-on-primary); }\n " ], "template": "
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "items", "deprecated": false, "deprecationMessage": "", "type": "BreadcrumbItem[]", "indexKey": "", "optional": false, "description": "", "line": 46, "required": true } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "RouterLink" } ], "description": "

Chrome: breadcrumb navigation. Renders the RHC/Utrecht breadcrumb pattern; the\nlast item is the current page (no link, aria-current). Domain-free — the caller\nsupplies the trail.

\n", "rawdescription": "\nChrome: breadcrumb navigation. Renders the RHC/Utrecht breadcrumb pattern; the\nlast item is the current page (no link, aria-current). Domain-free — the caller\nsupplies the trail.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nexport interface BreadcrumbItem {\n label: string;\n link?: string; // omit on the current (last) page\n}\n\n/** Chrome: breadcrumb navigation. Renders the RHC/Utrecht breadcrumb pattern; the\n last item is the current page (no link, aria-current). Domain-free — the caller\n supplies the trail. */\n@Component({\n selector: 'app-breadcrumb',\n imports: [RouterLink],\n styles: [`\n :host{display:block}\n .list{display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md);align-items:center;list-style:none;margin:0;padding:0;font-size:var(--rhc-text-font-size-sm)}\n .crumb{display:inline-flex;align-items:center;gap:var(--rhc-space-max-md)}\n a{color:var(--rhc-color-foreground-link);text-decoration:underline}\n a:hover{color:var(--rhc-color-foreground-link-hover)}\n .current{color:var(--rhc-color-foreground-subtle)}\n .sep{color:var(--rhc-color-foreground-subtle)}\n /* Inverse: on the blue header bar, everything is white. */\n :host(.inverse) a,\n :host(.inverse) .current,\n :host(.inverse) .sep { color: var(--rhc-color-foreground-on-primary); }\n `],\n template: `\n \n `,\n})\nexport class BreadcrumbComponent {\n items = input.required();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .list{display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md);align-items:center;list-style:none;margin:0;padding:0;font-size:var(--rhc-text-font-size-sm)}\n .crumb{display:inline-flex;align-items:center;gap:var(--rhc-space-max-md)}\n a{color:var(--rhc-color-foreground-link);text-decoration:underline}\n a:hover{color:var(--rhc-color-foreground-link-hover)}\n .current{color:var(--rhc-color-foreground-subtle)}\n .sep{color:var(--rhc-color-foreground-subtle)}\n /* Inverse: on the blue header bar, everything is white. */\n :host(.inverse) a,\n :host(.inverse) .current,\n :host(.inverse) .sep { color: var(--rhc-color-foreground-on-primary); }\n \n", "extends": [] }, { "name": "ButtonComponent", "id": "component-ButtonComponent-6eb936521438d91cc3a2276d1b8e366496e907e8a01d7b84b327c3cc31fa1dfadbb9502c6646472736722cf7ced9950fcaa4d8435ddf28224b3e7c9b7bd29505", "file": "src/app/shared/ui/button/button.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-button", "styleUrls": [], "styles": [], "template": "\n \n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "disabled", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 25, "required": false }, { "name": "type", "defaultValue": "'button'", "deprecated": false, "deprecationMessage": "", "type": "\"button\" | \"submit\"", "indexKey": "", "optional": false, "description": "", "line": 24, "required": false }, { "name": "variant", "defaultValue": "'primary'", "deprecated": false, "deprecationMessage": "", "type": "Variant", "indexKey": "", "optional": false, "description": "", "line": 23, "required": false } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: button. Thin wrapper over the Utrecht/RHC button CSS.

\n", "rawdescription": "\nAtom: button. Thin wrapper over the Utrecht/RHC button CSS.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\n\ntype Variant = 'primary' | 'secondary' | 'subtle' | 'danger';\n\n/** Atom: button. Thin wrapper over the Utrecht/RHC button CSS. */\n@Component({\n selector: 'app-button',\n template: `\n \n \n \n `,\n})\nexport class ButtonComponent {\n variant = input('primary');\n type = input<'button' | 'submit'>('button');\n disabled = input(false);\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "CardComponent", "id": "component-CardComponent-28ba094b40cae577b35a24e807be0900ed350103bdb95ec0c4c527492fa1574546b2cfce715df5e95cc91eda72c1823d01aadf7643c486f64bcc137ad5a6442d", "file": "src/app/shared/ui/card/card.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-card", "styleUrls": [], "styles": [ "\n :host{display:block;block-size:100%}\n .card{\n background:var(--rhc-color-wit);\n border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-radius:var(--rhc-border-radius-md);\n padding:var(--rhc-space-max-xl);\n block-size:100%;\n box-sizing:border-box;\n }\n .card > * + *{margin-block-start:var(--rhc-space-max-md)}\n " ], "template": "
\n @if (heading()) { {{ heading() }} }\n \n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "heading", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 30, "required": false }, { "name": "level", "defaultValue": "3", "deprecated": false, "deprecationMessage": "", "type": "1 | 2 | 3 | 4 | 5", "indexKey": "", "optional": false, "description": "", "line": 31, "required": false } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "HeadingComponent", "type": "component" } ], "description": "

Molecule: a content card. Standardises the repeated card surface (white,\nsubtle border, rounded, padded) so pages compose cards instead of hand-rolling\n<div class="rhc-card">. Optional heading; the rest is projected.

\n", "rawdescription": "\nMolecule: a content card. Standardises the repeated card surface (white,\nsubtle border, rounded, padded) so pages compose cards instead of hand-rolling\n`
`. Optional heading; the rest is projected.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { HeadingComponent } from '@shared/ui/heading/heading.component';\n\n/** Molecule: a content card. Standardises the repeated card surface (white,\n subtle border, rounded, padded) so pages compose cards instead of hand-rolling\n `
`. Optional heading; the rest is projected. */\n@Component({\n selector: 'app-card',\n imports: [HeadingComponent],\n styles: [`\n :host{display:block;block-size:100%}\n .card{\n background:var(--rhc-color-wit);\n border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-radius:var(--rhc-border-radius-md);\n padding:var(--rhc-space-max-xl);\n block-size:100%;\n box-sizing:border-box;\n }\n .card > * + *{margin-block-start:var(--rhc-space-max-md)}\n `],\n template: `\n
\n @if (heading()) { {{ heading() }} }\n \n
\n `,\n})\nexport class CardComponent {\n heading = input();\n level = input<1 | 2 | 3 | 4 | 5>(3);\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block;block-size:100%}\n .card{\n background:var(--rhc-color-wit);\n border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-radius:var(--rhc-border-radius-md);\n padding:var(--rhc-space-max-xl);\n block-size:100%;\n box-sizing:border-box;\n }\n .card > * + *{margin-block-start:var(--rhc-space-max-md)}\n \n", "extends": [] }, { "name": "ChangeRequestFormComponent", "id": "component-ChangeRequestFormComponent-2b189f2319722ef528b9be6c195261fdc0ca66c3ca95b06e336b69025fdad9101f4f7f3ee871670f8d43e6d7ab58f08aa36341035b0594af54875d0eca921fc1", "file": "src/app/registratie/ui/change-request-form/change-request-form.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-change-request-form", "styleUrls": [], "styles": [], "template": "@if (state().tag === 'Submitted') {\n \n Uw adreswijziging is ontvangen (referentie {{ referentie() }}). U ontvangt binnen 5 werkdagen bericht.\n \n
\n Nieuwe wijziging doorgeven\n
\n} @else {\n Adreswijziging doorgeven\n
\n \n\n @if (failedError()) {\n Het indienen is niet gelukt: {{ failedError() }}\n }\n\n \n {{ state().tag === 'Submitting' ? submitBezigLabel : submitLabel }}\n \n \n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "seed", "defaultValue": "initial", "deprecated": false, "deprecationMessage": "", "type": "State", "indexKey": "", "optional": false, "description": "

Optional seed so Storybook / tests can mount any state directly.

\n", "line": 54, "rawdescription": "\nOptional seed so Storybook / tests can mount any state directly.", "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "adres", "defaultValue": "computed(() => {\n const s = this.state();\n if (s.tag === 'Editing') return s.draft;\n if (s.tag === 'Submitting' || s.tag === 'Failed') {\n return { straat: s.data.straat, postcode: s.data.postcode, woonplaats: s.data.woonplaats };\n }\n return { straat: '', postcode: '', woonplaats: '' }; // Submitted shows the success alert, not the fields\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

The address shown in the fields — the live draft while editing, the parsed\ndata while submitting/failed (so the user sees what they sent).

\n", "line": 69, "rawdescription": "\nThe address shown in the fields — the live draft while editing, the parsed\ndata while submitting/failed (so the user sees what they sent).", "modifierKind": [ 124 ] }, { "name": "apiClient", "defaultValue": "inject(ApiClient)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 50, "modifierKind": [ 123 ] }, { "name": "dispatch", "defaultValue": "this.store.dispatch", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 57, "modifierKind": [ 124 ] }, { "name": "editing", "defaultValue": "computed(() => whenTag(this.state(), 'Editing'))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 62, "modifierKind": [ 123 ] }, { "name": "errors", "defaultValue": "computed(() => this.editing()?.errors ?? {})", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 63, "modifierKind": [ 124 ] }, { "name": "failedError", "defaultValue": "computed(() => whenTag(this.state(), 'Failed')?.error ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 64, "modifierKind": [ 124 ] }, { "name": "referentie", "defaultValue": "computed(() => whenTag(this.state(), 'Submitted')?.referentie ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 65, "modifierKind": [ 124 ] }, { "name": "state", "defaultValue": "this.store.model", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 56, "modifierKind": [ 148 ] }, { "name": "store", "defaultValue": "createStore(initial, reduce)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 51, "modifierKind": [ 123 ] }, { "name": "submitBezigLabel", "defaultValue": "$localize`:@@changeRequest.submitBezig:Bezig met indienen…`", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 60, "modifierKind": [ 124, 148 ] }, { "name": "submitLabel", "defaultValue": "$localize`:@@changeRequest.submit:Wijziging indienen`", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 59, "modifierKind": [ 124, 148 ] } ], "methodsClass": [ { "name": "onSubmit", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 82, "deprecated": false, "deprecationMessage": "" }, { "name": "runIfSubmitting", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 88, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nEffect: when we entered Submitting, call the command, then dispatch the outcome.", "description": "

Effect: when we entered Submitting, call the command, then dispatch the outcome.

\n", "modifierKind": [ 123, 134 ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "ButtonComponent", "type": "component" }, { "name": "HeadingComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "AddressFieldsComponent", "type": "component" } ], "description": "

Organism: change-request (adreswijziging) form. Uses the SAME idiom as the\nwizards — all state in one signal driven by the pure reduce\n(change-request.machine.ts), submitted via a submit-* command returning\nResult. Renders the shared <app-address-fields>; the server re-validates.

\n", "rawdescription": "\n\nOrganism: change-request (adreswijziging) form. Uses the SAME idiom as the\nwizards — all state in one signal driven by the pure `reduce`\n(change-request.machine.ts), submitted via a `submit-*` command returning\n`Result`. Renders the shared ``; the server re-validates.\n", "type": "component", "sourceCode": "import { Component, computed, inject, input } from '@angular/core';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { HeadingComponent } from '@shared/ui/heading/heading.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { AddressFieldsComponent, AdresValue, AdresErrors } from '@registratie/ui/address-fields/address-fields.component';\nimport { createStore } from '@shared/application/store';\nimport { whenTag } from '@shared/kernel/fp';\nimport { State, Msg, initial, reduce } from '@registratie/domain/change-request.machine';\nimport { submitChangeRequest } from '@registratie/application/submit-change-request';\nimport { ApiClient } from '@shared/infrastructure/api-client';\n\n/**\n * Organism: change-request (adreswijziging) form. Uses the SAME idiom as the\n * wizards — all state in one signal driven by the pure `reduce`\n * (change-request.machine.ts), submitted via a `submit-*` command returning\n * `Result`. Renders the shared ``; the server re-validates.\n */\n@Component({\n selector: 'app-change-request-form',\n imports: [ButtonComponent, HeadingComponent, AlertComponent, AddressFieldsComponent],\n template: `\n @if (state().tag === 'Submitted') {\n \n Uw adreswijziging is ontvangen (referentie {{ referentie() }}). U ontvangt binnen 5 werkdagen bericht.\n \n
\n Nieuwe wijziging doorgeven\n
\n } @else {\n Adreswijziging doorgeven\n
\n \n\n @if (failedError()) {\n Het indienen is niet gelukt: {{ failedError() }}\n }\n\n \n {{ state().tag === 'Submitting' ? submitBezigLabel : submitLabel }}\n \n \n }\n `,\n})\nexport class ChangeRequestFormComponent {\n private apiClient = inject(ApiClient);\n private store = createStore(initial, reduce);\n\n /** Optional seed so Storybook / tests can mount any state directly. */\n seed = input(initial);\n\n readonly state = this.store.model;\n protected dispatch = this.store.dispatch;\n\n protected readonly submitLabel = $localize`:@@changeRequest.submit:Wijziging indienen`;\n protected readonly submitBezigLabel = $localize`:@@changeRequest.submitBezig:Bezig met indienen…`;\n\n private editing = computed(() => whenTag(this.state(), 'Editing'));\n protected errors = computed(() => this.editing()?.errors ?? {});\n protected failedError = computed(() => whenTag(this.state(), 'Failed')?.error ?? '');\n protected referentie = computed(() => whenTag(this.state(), 'Submitted')?.referentie ?? '');\n\n /** The address shown in the fields — the live draft while editing, the parsed\n data while submitting/failed (so the user sees what they sent). */\n protected adres = computed(() => {\n const s = this.state();\n if (s.tag === 'Editing') return s.draft;\n if (s.tag === 'Submitting' || s.tag === 'Failed') {\n return { straat: s.data.straat, postcode: s.data.postcode, woonplaats: s.data.woonplaats };\n }\n return { straat: '', postcode: '', woonplaats: '' }; // Submitted shows the success alert, not the fields\n });\n\n constructor() {\n queueMicrotask(() => this.dispatch({ tag: 'Seed', state: this.seed() }));\n }\n\n onSubmit() {\n this.dispatch({ tag: 'Submit' });\n this.runIfSubmitting();\n }\n\n /** Effect: when we entered Submitting, call the command, then dispatch the outcome. */\n private async runIfSubmitting() {\n const s = this.state();\n if (s.tag !== 'Submitting') return;\n const r = await submitChangeRequest(this.apiClient, s.data);\n if (r.ok) this.dispatch({ tag: 'SubmitConfirmed', referentie: r.value });\n else this.dispatch({ tag: 'SubmitFailed', error: r.error });\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [], "line": 76 }, "extends": [] }, { "name": "ConceptsPage", "id": "component-ConceptsPage-0a01b17716cd0d25e6658360c5843453e9c20e94e6c616bc73509d9e849eb3c45418b941f5398de972a5969767fcb61df9b3b5b50ecd563f967da87f5b12b919", "file": "src/app/showcase/concepts.page.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-concepts-page", "styleUrls": [], "styles": [ "\n .section { margin: 0 0 3rem }\n .lead { color: var(--rhc-color-grijs-700); max-width: 46rem; margin: 0.25rem 0 1.25rem }\n .cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); gap: 1.5rem; align-items: start }\n .card { border: 1px solid var(--rhc-color-grijs-200, #e5e5e5); border-radius: 10px; padding: 1.25rem; background: #fff }\n .card--bad { border-color: var(--rhc-color-rood-300, #f0b4b4) }\n .card--good { border-color: var(--rhc-color-groen-300, #b4e0b4) }\n .tag { display: inline-flex; align-items: center; gap: 0.4rem; font-weight: 700; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 0.75rem }\n .tag::before { content: ''; width: 0.6rem; height: 0.6rem; border-radius: 50% }\n .tag.bad { color: var(--rhc-color-rood-600, #a30000) } .tag.bad::before { background: var(--rhc-color-rood-500, #d52b1e) }\n .tag.good { color: var(--rhc-color-groen-700, #277337) } .tag.good::before { background: var(--rhc-color-groen-500, #39870c) }\n .tag.plain { color: var(--rhc-color-grijs-700) } .tag.plain::before { display: none }\n pre { background: #1e2430; color: #e6e9ef; padding: 1rem; border-radius: 8px; overflow: auto; font-size: 0.82rem; line-height: 1.55; margin: 0 }\n pre .k { color: #c792ea } pre .s { color: #c3e88d } pre .c { color: #7e8aa0; font-style: italic }\n .note { font-size: 0.9rem; color: var(--rhc-color-grijs-700); margin: 0.75rem 0 0 }\n /* live state diagram */\n .machine { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem }\n .node { padding: 0.4rem 0.8rem; border-radius: 999px; border: 1px solid var(--rhc-color-grijs-300, #ccc); font-size: 0.82rem; color: var(--rhc-color-grijs-700); transition: all .15s }\n .node.on { background: var(--rhc-color-hemelblauw-100, #e5f1fb); border-color: var(--rhc-color-hemelblauw-500, #007bc7); color: var(--rhc-color-hemelblauw-700, #00567d); font-weight: 700 }\n .steplist { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0 0 1rem }\n .pill { padding: 0.3rem 0.7rem; border-radius: 8px; background: var(--rhc-color-grijs-100, #f3f3f3); font-size: 0.8rem }\n .pill.extra { background: var(--rhc-color-geel-100, #fff6d6); border: 1px dashed var(--rhc-color-geel-600, #c79a00) }\n .arrow { color: var(--rhc-color-grijs-400, #999) }\n " ], "template": "\n

\n Vijf functionele patronen die atomic design makkelijker maakt om te tonen — telkens\n \"fout\" (de oude vorm liet het toe) naast \"goed\" (het type maakt het onmogelijk).\n

\n\n \n
\n 1 · Discriminated unions\n

Laat elke variant precies de gegevens dragen die kloppen — niets meer.

\n
\n
\n

Fout — vlakke interface

\n
\n        

Een doorgehaalde registratie houdt tóch een herregistratiedatum: onmogelijke toestand.

\n
\n
\n

Goed — sum type

\n \n

De variant Doorgehaald kent geen herregistratiedatum, dus de rij bestaat simpelweg niet.

\n
\n
\n
\n\n \n
\n 2 · RemoteData fold\n

Eén waarde met vier elkaar uitsluitende toestanden in plaats van drie losse booleans.

\n
\n
\n

Vier toestanden, één molecuul

\n

Loading

\n {{ v }}\n

Empty

\n {{ v }}\n

Failure

\n {{ v }}\n

Success

\n
    @for (i of v; track i) {
  • {{ i }}
  • }
\n
\n
\n

De exhaustieve fold

\n
\n        

Een nieuwe variant toevoegen breekt de compile via assertNever tot je hem afhandelt.

\n
\n
\n
\n\n \n
\n 3 · Parse, don't validate\n

Na het parsen onthoudt het type dat de waarde geldig is.

\n
\n
\n

Smart constructor → Result

\n \n
\n
\n @if (parsed().ok) {\n

ok

\n
Postcode = \"{{ $any(parsed()).value }}\"
\n

Een gevalideerde Postcode is een ander type dan een ruwe string.

\n } @else {\n

err

\n
{{ $any(parsed()).error }}
\n }\n
\n
\n
\n\n \n
\n 4 · Form als state machine\n

Eén tagged union stuurt de UI. Speel met de wizard — de gemarkeerde toestand is de huidige.

\n
\n
\n

Fout — losse booleans

\n
\n        

Niets verhindert \"submitting\" mét validatiefouten of een successcherm met errors.

\n
\n
\n

Goed — één tagged union

\n
\n @for (n of ['Editing','Submitting','Submitted','Failed']; track n) {\n {{ n }}\n }\n
\n \n
\n
\n
\n\n \n
\n 5 · Vragenlijst met vaste stappen — \"vragen tonen, niet stappen toevoegen\"\n

\n Het aantal stappen ligt vast (STEPS); vervolgvragen verschijnen binnen een stap\n op basis van eerdere antwoorden. Antwoord \"ja\" op buitenland of vul weinig uren in, en er komt een\n extra vraag bij in dezelfde stap — de voortgang \"van N\" blijft gelijk.\n

\n
\n
\n

Vaste stappen

\n
\n @for (s of iw.steps; track s; let last = $last) {\n {{ s }}\n @if (!last) { }\n }\n
\n

De stappen zijn altijd dezelfde; alleen de vragen binnen een stap verschijnen of verdwijnen.

\n
\n
\n

De wizard

\n \n
\n
\n
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [ { "name": "doorgehaald", "defaultValue": "{\n bigNummer: '19012345601', naam: 'Dr. A. (Anna) de Vries', beroep: 'Arts',\n registratiedatum: '2012-09-01', geboortedatum: '1985-03-14',\n status: { tag: 'Doorgehaald', doorgehaaldOp: '2024-05-01', reden: 'Op eigen verzoek' },\n }", "deprecated": false, "deprecationMessage": "", "type": "Registration", "indexKey": "", "optional": false, "description": "", "line": 176 }, { "name": "emptyRes", "defaultValue": "fakeResource('resolved', [])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 183 }, { "name": "errorRes", "defaultValue": "fakeResource('error', undefined, new Error('Demo'))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 184 }, { "name": "foldCode", "defaultValue": "`foldRemote(rd, {\n loading: () => spinner,\n empty: () => 'geen data',\n failure: (e) => alert(e),\n success: (v) => render(v),\n}); // mist er één → compile-fout`", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 195 }, { "name": "isEmpty", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 174 }, { "name": "loadingRes", "defaultValue": "fakeResource('loading')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 182 }, { "name": "machineBad", "defaultValue": "`submitting = signal(false);\nsubmitted = signal(false);\nerrors = signal<...>({});\n// submitting === true && errors.size > 0 ? 🤷`", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 202 }, { "name": "parsed", "defaultValue": "computed(() => parsePostcode(this.raw()))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 188 }, { "name": "raw", "defaultValue": "signal('')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 187 }, { "name": "successRes", "defaultValue": "fakeResource('resolved', ['Huisartsgeneeskunde', 'Spoedeisende hulp'])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 185 }, { "name": "unionBad", "defaultValue": "`interface Registration {\n status: 'Geregistreerd' | 'Doorgehaald';\n herregistratieDatum: string; // altijd aanwezig 😬\n}`", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 190 } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "FormsModule", "type": "module" }, { "name": "PageShellComponent", "type": "component" }, { "name": "HeadingComponent", "type": "component" }, { "name": "TextInputComponent", "type": "component" }, { "name": "ASYNC" }, { "name": "SkeletonComponent", "type": "component" }, { "name": "RegistrationSummaryComponent", "type": "component" }, { "name": "HerregistratieWizardComponent", "type": "component" }, { "name": "IntakeWizardComponent", "type": "component" } ], "description": "

Teaching showcase: each section pairs the impossible-state-permitting "before"\nwith the "after" where the type system rules it out. Composition-only.

\n", "rawdescription": "\nTeaching showcase: each section pairs the impossible-state-permitting \"before\"\nwith the \"after\" where the type system rules it out. Composition-only.", "type": "component", "sourceCode": "import { Component, computed, signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport type { Resource } from '@angular/core';\nimport { PageShellComponent } from '@shared/layout/page-shell/page-shell.component';\nimport { HeadingComponent } from '@shared/ui/heading/heading.component';\nimport { TextInputComponent } from '@shared/ui/text-input/text-input.component';\nimport { ASYNC } from '@shared/ui/async/async.component';\nimport { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component';\nimport { RegistrationSummaryComponent } from '@registratie/ui/registration-summary/registration-summary.component';\nimport { HerregistratieWizardComponent } from '@herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component';\nimport { IntakeWizardComponent } from '@herregistratie/ui/intake-wizard/intake-wizard.component';\nimport { Registration } from '@registratie/domain/registration';\nimport { parsePostcode } from '@registratie/domain/value-objects/postcode';\n\n/** Minimal fake Resource so can be driven through every state without HTTP. */\nfunction fakeResource(status: string, value?: T, error?: Error): Resource {\n return { value: () => value as T, status: () => status, error: () => error, hasValue: () => value !== undefined, reload: () => {} } as unknown as Resource;\n}\n\n/** Teaching showcase: each section pairs the impossible-state-permitting \"before\"\n with the \"after\" where the type system rules it out. Composition-only. */\n@Component({\n selector: 'app-concepts-page',\n imports: [\n FormsModule, PageShellComponent, HeadingComponent, TextInputComponent,\n ...ASYNC, SkeletonComponent, RegistrationSummaryComponent, HerregistratieWizardComponent, IntakeWizardComponent,\n ],\n styles: [`\n .section { margin: 0 0 3rem }\n .lead { color: var(--rhc-color-grijs-700); max-width: 46rem; margin: 0.25rem 0 1.25rem }\n .cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); gap: 1.5rem; align-items: start }\n .card { border: 1px solid var(--rhc-color-grijs-200, #e5e5e5); border-radius: 10px; padding: 1.25rem; background: #fff }\n .card--bad { border-color: var(--rhc-color-rood-300, #f0b4b4) }\n .card--good { border-color: var(--rhc-color-groen-300, #b4e0b4) }\n .tag { display: inline-flex; align-items: center; gap: 0.4rem; font-weight: 700; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 0.75rem }\n .tag::before { content: ''; width: 0.6rem; height: 0.6rem; border-radius: 50% }\n .tag.bad { color: var(--rhc-color-rood-600, #a30000) } .tag.bad::before { background: var(--rhc-color-rood-500, #d52b1e) }\n .tag.good { color: var(--rhc-color-groen-700, #277337) } .tag.good::before { background: var(--rhc-color-groen-500, #39870c) }\n .tag.plain { color: var(--rhc-color-grijs-700) } .tag.plain::before { display: none }\n pre { background: #1e2430; color: #e6e9ef; padding: 1rem; border-radius: 8px; overflow: auto; font-size: 0.82rem; line-height: 1.55; margin: 0 }\n pre .k { color: #c792ea } pre .s { color: #c3e88d } pre .c { color: #7e8aa0; font-style: italic }\n .note { font-size: 0.9rem; color: var(--rhc-color-grijs-700); margin: 0.75rem 0 0 }\n /* live state diagram */\n .machine { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem }\n .node { padding: 0.4rem 0.8rem; border-radius: 999px; border: 1px solid var(--rhc-color-grijs-300, #ccc); font-size: 0.82rem; color: var(--rhc-color-grijs-700); transition: all .15s }\n .node.on { background: var(--rhc-color-hemelblauw-100, #e5f1fb); border-color: var(--rhc-color-hemelblauw-500, #007bc7); color: var(--rhc-color-hemelblauw-700, #00567d); font-weight: 700 }\n .steplist { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0 0 1rem }\n .pill { padding: 0.3rem 0.7rem; border-radius: 8px; background: var(--rhc-color-grijs-100, #f3f3f3); font-size: 0.8rem }\n .pill.extra { background: var(--rhc-color-geel-100, #fff6d6); border: 1px dashed var(--rhc-color-geel-600, #c79a00) }\n .arrow { color: var(--rhc-color-grijs-400, #999) }\n `],\n template: `\n \n

\n Vijf functionele patronen die atomic design makkelijker maakt om te tonen — telkens\n \"fout\" (de oude vorm liet het toe) naast \"goed\" (het type maakt het onmogelijk).\n

\n\n \n
\n 1 · Discriminated unions\n

Laat elke variant precies de gegevens dragen die kloppen — niets meer.

\n
\n
\n

Fout — vlakke interface

\n
\n            

Een doorgehaalde registratie houdt tóch een herregistratiedatum: onmogelijke toestand.

\n
\n
\n

Goed — sum type

\n \n

De variant Doorgehaald kent geen herregistratiedatum, dus de rij bestaat simpelweg niet.

\n
\n
\n
\n\n \n
\n 2 · RemoteData fold\n

Eén waarde met vier elkaar uitsluitende toestanden in plaats van drie losse booleans.

\n
\n
\n

Vier toestanden, één molecuul

\n

Loading

\n {{ v }}\n

Empty

\n {{ v }}\n

Failure

\n {{ v }}\n

Success

\n
    @for (i of v; track i) {
  • {{ i }}
  • }
\n
\n
\n

De exhaustieve fold

\n
\n            

Een nieuwe variant toevoegen breekt de compile via assertNever tot je hem afhandelt.

\n
\n
\n
\n\n \n
\n 3 · Parse, don't validate\n

Na het parsen onthoudt het type dat de waarde geldig is.

\n
\n
\n

Smart constructor → Result

\n \n
\n
\n @if (parsed().ok) {\n

ok

\n
Postcode = \"{{ $any(parsed()).value }}\"
\n

Een gevalideerde Postcode is een ander type dan een ruwe string.

\n } @else {\n

err

\n
{{ $any(parsed()).error }}
\n }\n
\n
\n
\n\n \n
\n 4 · Form als state machine\n

Eén tagged union stuurt de UI. Speel met de wizard — de gemarkeerde toestand is de huidige.

\n
\n
\n

Fout — losse booleans

\n
\n            

Niets verhindert \"submitting\" mét validatiefouten of een successcherm met errors.

\n
\n
\n

Goed — één tagged union

\n
\n @for (n of ['Editing','Submitting','Submitted','Failed']; track n) {\n {{ n }}\n }\n
\n \n
\n
\n
\n\n \n
\n 5 · Vragenlijst met vaste stappen — \"vragen tonen, niet stappen toevoegen\"\n

\n Het aantal stappen ligt vast (STEPS); vervolgvragen verschijnen binnen een stap\n op basis van eerdere antwoorden. Antwoord \"ja\" op buitenland of vul weinig uren in, en er komt een\n extra vraag bij in dezelfde stap — de voortgang \"van N\" blijft gelijk.\n

\n
\n
\n

Vaste stappen

\n
\n @for (s of iw.steps; track s; let last = $last) {\n {{ s }}\n @if (!last) { }\n }\n
\n

De stappen zijn altijd dezelfde; alleen de vragen binnen een stap verschijnen of verdwijnen.

\n
\n
\n

De wizard

\n \n
\n
\n
\n
\n `,\n})\nexport class ConceptsPage {\n isEmpty = (v: string[]) => !v || v.length === 0;\n\n doorgehaald: Registration = {\n bigNummer: '19012345601', naam: 'Dr. A. (Anna) de Vries', beroep: 'Arts',\n registratiedatum: '2012-09-01', geboortedatum: '1985-03-14',\n status: { tag: 'Doorgehaald', doorgehaaldOp: '2024-05-01', reden: 'Op eigen verzoek' },\n };\n\n loadingRes = fakeResource('loading');\n emptyRes = fakeResource('resolved', []);\n errorRes = fakeResource('error', undefined, new Error('Demo'));\n successRes = fakeResource('resolved', ['Huisartsgeneeskunde', 'Spoedeisende hulp']);\n\n raw = signal('');\n parsed = computed(() => parsePostcode(this.raw()));\n\n unionBad = `interface Registration {\n status: 'Geregistreerd' | 'Doorgehaald';\n herregistratieDatum: string; // altijd aanwezig 😬\n}`;\n\n foldCode = `foldRemote(rd, {\n loading: () => spinner,\n empty: () => 'geen data',\n failure: (e) => alert(e),\n success: (v) => render(v),\n}); // mist er één → compile-fout`;\n\n machineBad = `submitting = signal(false);\nsubmitted = signal(false);\nerrors = signal<...>({});\n// submitting === true && errors.size > 0 ? 🤷`;\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n .section { margin: 0 0 3rem }\n .lead { color: var(--rhc-color-grijs-700); max-width: 46rem; margin: 0.25rem 0 1.25rem }\n .cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); gap: 1.5rem; align-items: start }\n .card { border: 1px solid var(--rhc-color-grijs-200, #e5e5e5); border-radius: 10px; padding: 1.25rem; background: #fff }\n .card--bad { border-color: var(--rhc-color-rood-300, #f0b4b4) }\n .card--good { border-color: var(--rhc-color-groen-300, #b4e0b4) }\n .tag { display: inline-flex; align-items: center; gap: 0.4rem; font-weight: 700; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 0.75rem }\n .tag::before { content: ''; width: 0.6rem; height: 0.6rem; border-radius: 50% }\n .tag.bad { color: var(--rhc-color-rood-600, #a30000) } .tag.bad::before { background: var(--rhc-color-rood-500, #d52b1e) }\n .tag.good { color: var(--rhc-color-groen-700, #277337) } .tag.good::before { background: var(--rhc-color-groen-500, #39870c) }\n .tag.plain { color: var(--rhc-color-grijs-700) } .tag.plain::before { display: none }\n pre { background: #1e2430; color: #e6e9ef; padding: 1rem; border-radius: 8px; overflow: auto; font-size: 0.82rem; line-height: 1.55; margin: 0 }\n pre .k { color: #c792ea } pre .s { color: #c3e88d } pre .c { color: #7e8aa0; font-style: italic }\n .note { font-size: 0.9rem; color: var(--rhc-color-grijs-700); margin: 0.75rem 0 0 }\n /* live state diagram */\n .machine { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem }\n .node { padding: 0.4rem 0.8rem; border-radius: 999px; border: 1px solid var(--rhc-color-grijs-300, #ccc); font-size: 0.82rem; color: var(--rhc-color-grijs-700); transition: all .15s }\n .node.on { background: var(--rhc-color-hemelblauw-100, #e5f1fb); border-color: var(--rhc-color-hemelblauw-500, #007bc7); color: var(--rhc-color-hemelblauw-700, #00567d); font-weight: 700 }\n .steplist { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0 0 1rem }\n .pill { padding: 0.3rem 0.7rem; border-radius: 8px; background: var(--rhc-color-grijs-100, #f3f3f3); font-size: 0.8rem }\n .pill.extra { background: var(--rhc-color-geel-100, #fff6d6); border: 1px dashed var(--rhc-color-geel-600, #c79a00) }\n .arrow { color: var(--rhc-color-grijs-400, #999) }\n \n", "extends": [] }, { "name": "DashboardPage", "id": "component-DashboardPage-a356f8cd540e446b51f9be57102ba39ddf786b0ddc383152e85b6cc8cf1751c97b59748075b208523843aab83bc5993d002c63f92a73ec331732414ccb71ea99", "file": "src/app/registratie/ui/dashboard.page.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-dashboard-page", "styleUrls": [], "styles": [], "template": "\n
\n \n\n
\n @if (aanvragen().length) {\n
\n Mijn aanvragen\n
\n @for (a of aanvragen(); track a.id) {\n \n }\n
\n
\n }\n\n @if (store.pendingHerregistratie()) {\n Uw herregistratie-aanvraag is in behandeling.\n }\n\n \n \n @let tasks = tasksFor($any(p).registration);\n\n
\n Wat moet ik regelen\n @if (tasks.length) {\n \n } @else {\n

U heeft op dit moment niets openstaan.

\n }\n
\n\n
\n Mijn registratie\n
\n \n
\n \n
\n \n \n \n
\n
\n
\n
\n \n \n \n
\n\n
\n Specialismen en aantekeningen\n
\n \n \n \n \n \n \n \n \n

U heeft nog geen specialismen of aantekeningen.

\n
\n
\n
\n
\n\n
\n Wat wilt u doen?\n
    \n @for (a of acties; track a.to) {\n
  • \n \n

    {{ a.tekst }}

    \n {{ a.actie }} →\n
    \n
  • \n }\n
\n
\n
\n
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [ { "name": "aanvragen", "defaultValue": "computed(() => {\n const rd = this.apps.applications();\n if (rd.tag !== 'Success') return [];\n const order: Record = { Concept: 0, InBehandeling: 1, Goedgekeurd: 2, Afgewezen: 2 };\n return rd.value.slice().sort((a, b) => order[a.status.tag] - order[b.status.tag]);\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

The user's applications, sorted Concept → In behandeling → resolved. Empty →\nthe "Mijn aanvragen" section is hidden (see template).

\n", "line": 132, "rawdescription": "\nThe user's applications, sorted Concept → In behandeling → resolved. Empty →\nthe \"Mijn aanvragen\" section is hidden (see template).", "modifierKind": [ 124 ] }, { "name": "acties", "defaultValue": "[\n { to: '/registreren', titel: $localize`:@@dashboard.actie.inschrijven.titel:Inschrijven`, tekst: $localize`:@@dashboard.actie.inschrijven.tekst:Schrijf u in in het BIG-register via de registratiewizard.`, actie: $localize`:@@dashboard.actie.inschrijven.actie:Start inschrijving` },\n { to: '/herregistratie', titel: $localize`:@@dashboard.actie.herregistratie.titel:Herregistratie aanvragen`, tekst: $localize`:@@dashboard.actie.herregistratie.tekst:Verleng uw registratie voor de komende periode.`, actie: $localize`:@@dashboard.actie.herregistratie.actie:Vraag aan` },\n { to: '/intake', titel: $localize`:@@dashboard.actie.intake.titel:Herregistratie-intake`, tekst: $localize`:@@dashboard.actie.intake.tekst:Vragenlijst met vertakkingen.`, actie: $localize`:@@dashboard.actie.intake.actie:Start intake` },\n { to: '/registratie', titel: $localize`:@@dashboard.actie.wijzigen.titel:Gegevens wijzigen`, tekst: $localize`:@@dashboard.actie.wijzigen.tekst:Bekijk uw gegevens of geef een wijziging door.`, actie: $localize`:@@dashboard.actie.wijzigen.actie:Bekijk gegevens` },\n ]", "deprecated": false, "deprecationMessage": "", "type": "[]", "indexKey": "", "optional": false, "description": "

Primary transactional actions, as a card grid.

\n", "line": 171, "rawdescription": "\nPrimary transactional actions, as a card grid.", "modifierKind": [ 124, 148 ] }, { "name": "apps", "defaultValue": "inject(ApplicationsStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 121, "modifierKind": [ 123 ] }, { "name": "eligible", "defaultValue": "computed(() => {\n const d = this.store.decisions();\n return d.tag === 'Success' && d.value.eligibleForHerregistratie;\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Server-computed eligibility (rendered, not recomputed).

\n", "line": 152, "rawdescription": "\nServer-computed eligibility (rendered, not recomputed).", "modifierKind": [ 123, 148 ] }, { "name": "nav", "defaultValue": "[\n { label: $localize`:@@dashboard.nav.overzicht:Overzicht`, to: '/dashboard' },\n { label: $localize`:@@dashboard.nav.gegevens:Mijn gegevens`, to: '/registratie' },\n { label: $localize`:@@dashboard.nav.herregistratie:Herregistratie`, to: '/herregistratie' },\n { label: $localize`:@@dashboard.nav.inschrijven:Inschrijven`, to: '/registreren' },\n { label: $localize`:@@dashboard.nav.concepten:Functionele patronen`, to: '/concepts' },\n ]", "deprecated": false, "deprecationMessage": "", "type": "NavItem[]", "indexKey": "", "optional": false, "description": "

Portal sections (navigation, not actions).

\n", "line": 162, "rawdescription": "\nPortal sections (navigation, not actions).", "modifierKind": [ 124, 148 ] }, { "name": "resumeRoutes", "defaultValue": "{\n registratie: '/registreren',\n herregistratie: '/herregistratie',\n intake: '/intake',\n }", "deprecated": false, "deprecationMessage": "", "type": "Record", "indexKey": "", "optional": false, "description": "", "line": 139, "modifierKind": [ 123, 148 ] }, { "name": "router", "defaultValue": "inject(Router)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 122, "modifierKind": [ 123 ] }, { "name": "store", "defaultValue": "inject(BigProfileStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 120, "modifierKind": [ 124 ] } ], "methodsClass": [ { "name": "cancelAanvraag", "args": [ { "name": "a", "type": "Aanvraag", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 147, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "a", "type": "Aanvraag", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "resume", "args": [ { "name": "a", "type": "Aanvraag", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 144, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "a", "type": "Aanvraag", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "tasksFor", "args": [ { "name": "reg", "type": "Registration", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "any", "typeParameters": [], "line": 157, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "reg", "type": "Registration", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "PageShellComponent", "type": "component" }, { "name": "HeadingComponent", "type": "component" }, { "name": "LinkComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "SkeletonComponent", "type": "component" }, { "name": "DataRowComponent", "type": "component" }, { "name": "CardComponent", "type": "component" }, { "name": "TaskListComponent", "type": "component" }, { "name": "SideNavComponent", "type": "component" }, { "name": "ASYNC" }, { "name": "RegistrationSummaryComponent", "type": "component" }, { "name": "RegistrationTableComponent", "type": "component" }, { "name": "AanvraagBlockComponent", "type": "component" } ], "description": "

Page: "Mijn overzicht" — the portal home, following the NL Design System\n"Mijn omgeving" pattern (side nav + "Wat moet ik regelen" + "Mijn zaken").

\n", "rawdescription": "\nPage: \"Mijn overzicht\" — the portal home, following the NL Design System\n\"Mijn omgeving\" pattern (side nav + \"Wat moet ik regelen\" + \"Mijn zaken\").", "type": "component", "sourceCode": "import { Component, computed, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PageShellComponent } from '@shared/layout/page-shell/page-shell.component';\nimport { HeadingComponent } from '@shared/ui/heading/heading.component';\nimport { LinkComponent } from '@shared/ui/link/link.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component';\nimport { DataRowComponent } from '@shared/ui/data-row/data-row.component';\nimport { CardComponent } from '@shared/ui/card/card.component';\nimport { TaskListComponent } from '@shared/ui/task-list/task-list.component';\nimport { SideNavComponent, NavItem } from '@shared/layout/side-nav/side-nav.component';\nimport { ASYNC } from '@shared/ui/async/async.component';\nimport { RegistrationSummaryComponent } from '@registratie/ui/registration-summary/registration-summary.component';\nimport { RegistrationTableComponent } from '@registratie/ui/registration-table/registration-table.component';\nimport { AanvraagBlockComponent } from '@registratie/ui/aanvraag-block/aanvraag-block.component';\nimport { BigProfileStore } from '@registratie/application/big-profile.store';\nimport { ApplicationsStore } from '@registratie/application/applications.store';\nimport { Registration } from '@registratie/domain/registration';\nimport { Aanvraag, AanvraagType } from '@registratie/domain/aanvraag';\nimport { tasksFromProfile } from '@registratie/domain/tasks';\n\n/** Page: \"Mijn overzicht\" — the portal home, following the NL Design System\n \"Mijn omgeving\" pattern (side nav + \"Wat moet ik regelen\" + \"Mijn zaken\"). */\n@Component({\n selector: 'app-dashboard-page',\n imports: [\n PageShellComponent, HeadingComponent, LinkComponent, AlertComponent, SkeletonComponent,\n DataRowComponent, CardComponent, TaskListComponent, SideNavComponent, ...ASYNC,\n RegistrationSummaryComponent, RegistrationTableComponent, AanvraagBlockComponent,\n ],\n template: `\n \n
\n \n\n
\n @if (aanvragen().length) {\n
\n Mijn aanvragen\n
\n @for (a of aanvragen(); track a.id) {\n \n }\n
\n
\n }\n\n @if (store.pendingHerregistratie()) {\n Uw herregistratie-aanvraag is in behandeling.\n }\n\n \n \n @let tasks = tasksFor($any(p).registration);\n\n
\n Wat moet ik regelen\n @if (tasks.length) {\n \n } @else {\n

U heeft op dit moment niets openstaan.

\n }\n
\n\n
\n Mijn registratie\n
\n \n
\n \n
\n \n \n \n
\n
\n
\n
\n \n \n \n
\n\n
\n Specialismen en aantekeningen\n
\n \n \n \n \n \n \n \n \n

U heeft nog geen specialismen of aantekeningen.

\n
\n
\n
\n
\n\n
\n Wat wilt u doen?\n
    \n @for (a of acties; track a.to) {\n
  • \n \n

    {{ a.tekst }}

    \n {{ a.actie }} →\n
    \n
  • \n }\n
\n
\n
\n
\n
\n `,\n})\nexport class DashboardPage {\n protected store = inject(BigProfileStore);\n private apps = inject(ApplicationsStore);\n private router = inject(Router);\n\n constructor() {\n // Re-fetch on each visit so server-computed auto-approval transitions show up\n // (Concept → In behandeling → Goedgekeurd after the processing window).\n this.apps.reload();\n }\n\n /** The user's applications, sorted Concept → In behandeling → resolved. Empty →\n the \"Mijn aanvragen\" section is hidden (see template). */\n protected aanvragen = computed(() => {\n const rd = this.apps.applications();\n if (rd.tag !== 'Success') return [];\n const order: Record = { Concept: 0, InBehandeling: 1, Goedgekeurd: 2, Afgewezen: 2 };\n return rd.value.slice().sort((a, b) => order[a.status.tag] - order[b.status.tag]);\n });\n\n private readonly resumeRoutes: Record = {\n registratie: '/registreren',\n herregistratie: '/herregistratie',\n intake: '/intake',\n };\n protected resume(a: Aanvraag) {\n void this.router.navigate([this.resumeRoutes[a.type]], { queryParams: { aanvraag: a.id } });\n }\n protected cancelAanvraag(a: Aanvraag) {\n void this.apps.cancel(a.id);\n }\n\n /** Server-computed eligibility (rendered, not recomputed). */\n private readonly eligible = computed(() => {\n const d = this.store.decisions();\n return d.tag === 'Success' && d.value.eligibleForHerregistratie;\n });\n\n protected tasksFor(reg: Registration) {\n return tasksFromProfile(reg, this.eligible());\n }\n\n /** Portal sections (navigation, not actions). */\n protected readonly nav: NavItem[] = [\n { label: $localize`:@@dashboard.nav.overzicht:Overzicht`, to: '/dashboard' },\n { label: $localize`:@@dashboard.nav.gegevens:Mijn gegevens`, to: '/registratie' },\n { label: $localize`:@@dashboard.nav.herregistratie:Herregistratie`, to: '/herregistratie' },\n { label: $localize`:@@dashboard.nav.inschrijven:Inschrijven`, to: '/registreren' },\n { label: $localize`:@@dashboard.nav.concepten:Functionele patronen`, to: '/concepts' },\n ];\n\n /** Primary transactional actions, as a card grid. */\n protected readonly acties = [\n { to: '/registreren', titel: $localize`:@@dashboard.actie.inschrijven.titel:Inschrijven`, tekst: $localize`:@@dashboard.actie.inschrijven.tekst:Schrijf u in in het BIG-register via de registratiewizard.`, actie: $localize`:@@dashboard.actie.inschrijven.actie:Start inschrijving` },\n { to: '/herregistratie', titel: $localize`:@@dashboard.actie.herregistratie.titel:Herregistratie aanvragen`, tekst: $localize`:@@dashboard.actie.herregistratie.tekst:Verleng uw registratie voor de komende periode.`, actie: $localize`:@@dashboard.actie.herregistratie.actie:Vraag aan` },\n { to: '/intake', titel: $localize`:@@dashboard.actie.intake.titel:Herregistratie-intake`, tekst: $localize`:@@dashboard.actie.intake.tekst:Vragenlijst met vertakkingen.`, actie: $localize`:@@dashboard.actie.intake.actie:Start intake` },\n { to: '/registratie', titel: $localize`:@@dashboard.actie.wijzigen.titel:Gegevens wijzigen`, tekst: $localize`:@@dashboard.actie.wijzigen.tekst:Bekijk uw gegevens of geef een wijziging door.`, actie: $localize`:@@dashboard.actie.wijzigen.actie:Bekijk gegevens` },\n ];\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [], "line": 122 }, "extends": [] }, { "name": "DataRowComponent", "id": "component-DataRowComponent-042344abd735238be6230f6fdad24c6403897f90c814e06f27d2f67c4ced32aa3d1da211a95b8c99aa782ff1665da487a93d19f21ba509ab29cd5e640fedc405", "file": "src/app/shared/ui/data-row/data-row.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-data-row", "styleUrls": [], "styles": [ ":host:last-child .rhc-data-summary__item { border-block-end-style: none; }" ], "template": "
\n
{{ key() }}
\n
{{ value() }}
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "key", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 18, "required": true }, { "name": "value", "defaultValue": "''", "deprecated": false, "deprecationMessage": "", "type": "string | null", "indexKey": "", "optional": false, "description": "", "line": 19, "required": false } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Molecule: one key/value row inside an RHC data-summary.\nWrap several of these in .rhc-data-summary (see registration-summary).

\n", "rawdescription": "\nMolecule: one key/value row inside an RHC data-summary.\nWrap several of these in .rhc-data-summary (see registration-summary).", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\n\n/** Molecule: one key/value row inside an RHC data-summary.\n Wrap several of these in .rhc-data-summary (see registration-summary). */\n@Component({\n selector: 'app-data-row',\n // The RHC item draws a divider below every row; drop it on the last one so the\n // list ends cleanly instead of looking like a trailing empty row.\n styles: [`:host:last-child .rhc-data-summary__item { border-block-end-style: none; }`],\n template: `\n
\n
{{ key() }}
\n
{{ value() }}
\n
\n `,\n})\nexport class DataRowComponent {\n key = input.required();\n value = input('');\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": ":host:last-child .rhc-data-summary__item { border-block-end-style: none; }\n", "extends": [] }, { "name": "DebugStateComponent", "id": "component-DebugStateComponent-7e7765f613931e7b5eb6286e7e41437a0322d9ae61ccfabc084ff438baf46272b7120c2ba038f55b6cd77912ddf434bf4ff352a5d70b67f3e9e7bdb48c0f8c02", "file": "src/app/shared/ui/debug-state/debug-state.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-debug-state", "styleUrls": [], "styles": [ "\n .fab{position:fixed;bottom:1rem;right:1rem;z-index:9999;font:600 12px/1 monospace;\n background:#1e1e1e;color:#9cdcfe;border:1px solid #444;border-radius:4px;\n padding:.5rem .75rem;cursor:pointer}\n .panel{position:fixed;bottom:3.25rem;right:1rem;z-index:9999;width:min(90vw,28rem);\n max-height:70vh;overflow:auto;background:#1e1e1e;color:#d4d4d4;border:1px solid #444;\n border-radius:6px;box-shadow:0 6px 24px rgba(0,0,0,.4)}\n .panel pre{margin:0;padding:.75rem;font:12px/1.5 monospace;white-space:pre-wrap;\n word-break:break-word}\n " ], "template": "@if (isDev) {\n \n @if (visible()) {\n
{{ snapshot() | json }}
\n }\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [ { "name": "injector", "defaultValue": "inject(Injector)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 47, "modifierKind": [ 123 ] }, { "name": "isDev", "defaultValue": "isDevMode()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 43, "modifierKind": [ 124, 148 ] }, { "name": "profileStore", "deprecated": false, "deprecationMessage": "", "type": "BigProfileStore", "indexKey": "", "optional": true, "description": "", "line": 50, "modifierKind": [ 123 ] }, { "name": "session", "defaultValue": "inject(SessionStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 46, "modifierKind": [ 123 ] }, { "name": "snapshot", "defaultValue": "computed(() => ({\n session: maskSession(this.session.session()),\n profile: this.profileStore ? map(this.profileStore.profile(), redactProfile) : undefined,\n decisions: this.profileStore?.decisions(),\n aantekeningen: this.profileStore?.aantekeningen(),\n pendingHerregistratie: this.profileStore?.pendingHerregistratie(),\n }))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 54, "modifierKind": [ 124, 148 ] }, { "name": "visible", "defaultValue": "signal(false)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 44, "modifierKind": [ 124, 148 ] } ], "methodsClass": [ { "name": "toggle", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 62, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "JsonPipe", "type": "pipe" } ], "description": "

Dev-only "show the current Model" panel (Elm-debugger style, read-only).\nObserves the root singletons and renders them via the json pipe. Never a\nproduct feature: the whole template is gated by isDevMode(), so it does not\nrender and is unreachable in a production build.

\n

ponytail: dev tool — intentionally off-theme (not Rijkshuisstijl) and exempt\nfrom the design-token convention; plain values keep it visually distinct.

\n", "rawdescription": "\n\nDev-only \"show the current Model\" panel (Elm-debugger style, read-only).\nObserves the root singletons and renders them via the json pipe. Never a\nproduct feature: the whole template is gated by isDevMode(), so it does not\nrender and is unreachable in a production build.\n\nponytail: dev tool — intentionally off-theme (not Rijkshuisstijl) and exempt\nfrom the design-token convention; plain values keep it visually distinct.\n", "type": "component", "sourceCode": "import { Component, Injector, computed, inject, isDevMode, signal } from '@angular/core';\nimport { JsonPipe } from '@angular/common';\nimport { SessionStore } from '@auth/application/session.store';\nimport { Session } from '@auth/domain/session';\nimport { BigProfileStore } from '@registratie/application/big-profile.store';\nimport { map } from '@shared/application/remote-data';\nimport { maskBsn, redactProfile } from './mask';\n\n/**\n * Dev-only \"show the current Model\" panel (Elm-debugger style, read-only).\n * Observes the root singletons and renders them via the json pipe. Never a\n * product feature: the whole template is gated by isDevMode(), so it does not\n * render and is unreachable in a production build.\n *\n * ponytail: dev tool — intentionally off-theme (not Rijkshuisstijl) and exempt\n * from the design-token convention; plain values keep it visually distinct.\n */\n@Component({\n selector: 'app-debug-state',\n imports: [JsonPipe],\n styles: [`\n .fab{position:fixed;bottom:1rem;right:1rem;z-index:9999;font:600 12px/1 monospace;\n background:#1e1e1e;color:#9cdcfe;border:1px solid #444;border-radius:4px;\n padding:.5rem .75rem;cursor:pointer}\n .panel{position:fixed;bottom:3.25rem;right:1rem;z-index:9999;width:min(90vw,28rem);\n max-height:70vh;overflow:auto;background:#1e1e1e;color:#d4d4d4;border:1px solid #444;\n border-radius:6px;box-shadow:0 6px 24px rgba(0,0,0,.4)}\n .panel pre{margin:0;padding:.75rem;font:12px/1.5 monospace;white-space:pre-wrap;\n word-break:break-word}\n `],\n template: `\n @if (isDev) {\n \n @if (visible()) {\n
{{ snapshot() | json }}
\n }\n }\n `,\n})\nexport class DebugStateComponent {\n protected readonly isDev = isDevMode();\n protected readonly visible = signal(false);\n\n private session = inject(SessionStore);\n private injector = inject(Injector);\n // Resolved on first open only — BigProfileStore's httpResources fetch eagerly\n // on construction, so we must not instantiate it until the dev asks to look.\n private profileStore?: BigProfileStore;\n\n // PII is redacted/masked here (see mask.ts): the panel inspects state SHAPE,\n // never personal data — a deliberate habit for a PII-handling app.\n protected readonly snapshot = computed(() => ({\n session: maskSession(this.session.session()),\n profile: this.profileStore ? map(this.profileStore.profile(), redactProfile) : undefined,\n decisions: this.profileStore?.decisions(),\n aantekeningen: this.profileStore?.aantekeningen(),\n pendingHerregistratie: this.profileStore?.pendingHerregistratie(),\n }));\n\n toggle(): void {\n if (!this.visible()) this.profileStore ??= this.injector.get(BigProfileStore);\n this.visible.update((v) => !v);\n }\n}\n\nfunction maskSession(s: Session | null): Session | null {\n return s ? { ...s, bsn: maskBsn(s.bsn) } : null;\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n .fab{position:fixed;bottom:1rem;right:1rem;z-index:9999;font:600 12px/1 monospace;\n background:#1e1e1e;color:#9cdcfe;border:1px solid #444;border-radius:4px;\n padding:.5rem .75rem;cursor:pointer}\n .panel{position:fixed;bottom:3.25rem;right:1rem;z-index:9999;width:min(90vw,28rem);\n max-height:70vh;overflow:auto;background:#1e1e1e;color:#d4d4d4;border:1px solid #444;\n border-radius:6px;box-shadow:0 6px 24px rgba(0,0,0,.4)}\n .panel pre{margin:0;padding:.75rem;font:12px/1.5 monospace;white-space:pre-wrap;\n word-break:break-word}\n \n", "extends": [] }, { "name": "DeliveryChannelToggleComponent", "id": "component-DeliveryChannelToggleComponent-4dae07e32e18a4f448c24821beb9cc611b5ed3dbd2b658e9e841db450d3ab53d508eb1e0f1b656b0c65a1104dd7adda8e706b7d9bb1f677d66900091d07727af", "file": "src/app/shared/ui/upload/delivery-channel-toggle/delivery-channel-toggle.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-delivery-channel-toggle", "styleUrls": [], "styles": [ "\n .rhc-radio-option {\n display: flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n }\n " ], "template": "
\n @for (opt of options; track opt.value) {\n \n }\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "channel", "deprecated": false, "deprecationMessage": "", "type": "DeliveryChannel", "indexKey": "", "optional": false, "description": "", "line": 36, "required": true }, { "name": "disabled", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 38, "required": false }, { "name": "name", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 37, "required": true } ], "outputsClass": [ { "name": "channelChange", "deprecated": false, "deprecationMessage": "", "type": "DeliveryChannel", "indexKey": "", "optional": false, "description": "", "line": 40, "required": false } ], "propertiesClass": [ { "name": "options", "defaultValue": "[\n { value: 'digital', label: $localize`:@@upload.channel.digital:Digitaal uploaden` },\n { value: 'post', label: $localize`:@@upload.channel.post:Per post nasturen` },\n ]", "deprecated": false, "deprecationMessage": "", "type": "ReadonlyArray", "indexKey": "", "optional": false, "description": "", "line": 42, "modifierKind": [ 124, 148 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: choose how a document is delivered — uploaded digitally or sent by post.\nThin wrapper over the Utrecht/RHC radio CSS. Pure UI: emits the chosen channel.

\n", "rawdescription": "\nAtom: choose how a document is delivered — uploaded digitally or sent by post.\nThin wrapper over the Utrecht/RHC radio CSS. Pure UI: emits the chosen channel.", "type": "component", "sourceCode": "import { Component, input, output } from '@angular/core';\nimport type { DeliveryChannel } from '@shared/upload/upload.machine';\n\n/** Atom: choose how a document is delivered — uploaded digitally or sent by post.\n Thin wrapper over the Utrecht/RHC radio CSS. Pure UI: emits the chosen channel. */\n@Component({\n selector: 'app-delivery-channel-toggle',\n styles: [`\n .rhc-radio-option {\n display: flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n }\n `],\n template: `\n
\n @for (opt of options; track opt.value) {\n \n }\n
\n `,\n})\nexport class DeliveryChannelToggleComponent {\n channel = input.required();\n name = input.required();\n disabled = input(false);\n\n channelChange = output();\n\n protected readonly options: ReadonlyArray<{ value: DeliveryChannel; label: string }> = [\n { value: 'digital', label: $localize`:@@upload.channel.digital:Digitaal uploaden` },\n { value: 'post', label: $localize`:@@upload.channel.post:Per post nasturen` },\n ];\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n .rhc-radio-option {\n display: flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n }\n \n", "extends": [] }, { "name": "DocumentCategoryComponent", "id": "component-DocumentCategoryComponent-9f57528e2cc1ec31e9914b23ceef3b70a46e5291aca9e9cc6f482cb5cc707129addf2c0959426798c1a3ed82a6965c6fc52fa86b8b46e36dca7f0814c70ad162", "file": "src/app/shared/ui/upload/document-category/document-category.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-document-category", "styleUrls": [], "styles": [ "\n :host { display: block; }\n .label { font-weight: var(--rhc-text-font-weight-semi-bold); margin-block-end: var(--rhc-space-max-sm); }\n .req { font-weight: var(--rhc-text-font-weight-regular); color: var(--rhc-color-foreground-subtle); }\n .desc { color: var(--rhc-color-foreground-subtle); font-size: var(--rhc-text-font-size-sm); margin-block-end: var(--rhc-space-max-md); }\n .uploads { display: flex; flex-direction: column; gap: var(--rhc-space-max-md); margin-block-start: var(--rhc-space-max-md); }\n .rejection {\n color: var(--rhc-color-foreground-default);\n font-weight: var(--rhc-text-font-weight-semi-bold);\n margin-block-start: var(--rhc-space-max-sm);\n border-inline-start: var(--rhc-border-width-md) solid var(--rhc-color-rood-500);\n padding-inline-start: var(--rhc-space-max-md);\n }\n " ], "template": "
\n {{ category().label }}@if (category().required) { (verplicht) }\n
\n@if (category().description) {\n
{{ category().description }}
\n}\n\n@if (category().allowPostDelivery) {\n \n}\n\n@if (channel() === 'digital') {\n \n\n
\n @for (u of uploads(); track u.localId) {\n \n }\n
\n\n @if (rejection()) {\n
{{ rejection() }}
\n }\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "category", "deprecated": false, "deprecationMessage": "", "type": "DocumentCategory", "indexKey": "", "optional": false, "description": "", "line": 67, "required": true }, { "name": "channel", "deprecated": false, "deprecationMessage": "", "type": "DeliveryChannel", "indexKey": "", "optional": false, "description": "", "line": 69, "required": true }, { "name": "previewUrlFor", "deprecated": false, "deprecationMessage": "", "type": "(documentId: string) => string | undefined", "indexKey": "", "optional": false, "description": "", "line": 71, "required": false }, { "name": "rejection", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 70, "required": false }, { "name": "uploads", "deprecated": false, "deprecationMessage": "", "type": "Upload[]", "indexKey": "", "optional": false, "description": "", "line": 68, "required": true } ], "outputsClass": [ { "name": "channelChange", "deprecated": false, "deprecationMessage": "", "type": "DeliveryChannel", "indexKey": "", "optional": false, "description": "", "line": 80, "required": false }, { "name": "deleteUpload", "deprecated": false, "deprecationMessage": "", "type": "{ localId: string; documentId: string }", "indexKey": "", "optional": false, "description": "", "line": 79, "required": false }, { "name": "fileSelected", "deprecated": false, "deprecationMessage": "", "type": "File[]", "indexKey": "", "optional": false, "description": "", "line": 76, "required": false }, { "name": "removeUpload", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 77, "required": false }, { "name": "retryUpload", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 78, "required": false } ], "propertiesClass": [ { "name": "fileInputLabel", "defaultValue": "computed(() => $localize`:@@upload.fileInput.labelFor:Bestand kiezen voor ${this.category().label}:category:`)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Accessible name for the file picker, e.g. "Bestand kiezen voor Diploma".

\n", "line": 74, "rawdescription": "\nAccessible name for the file picker, e.g. \"Bestand kiezen voor Diploma\".", "modifierKind": [ 124 ] } ], "methodsClass": [ { "name": "onRemove", "args": [ { "name": "u", "type": "Upload", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 82, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "u", "type": "Upload", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "DeliveryChannelToggleComponent", "type": "component" }, { "name": "FileInputComponent", "type": "component" }, { "name": "SingleUploadComponent", "type": "component" } ], "description": "

Organism: one document category — its label/description, an optional delivery\nchannel toggle, and (when digital) a file picker plus the list of uploads. Pure\nUI: emits selection/removal/retry/delete and channel changes; no HTTP or rules.

\n", "rawdescription": "\nOrganism: one document category — its label/description, an optional delivery\nchannel toggle, and (when digital) a file picker plus the list of uploads. Pure\nUI: emits selection/removal/retry/delete and channel changes; no HTTP or rules.", "type": "component", "sourceCode": "import { Component, computed, input, output } from '@angular/core';\nimport type { DeliveryChannel, DocumentCategory, Upload } from '@shared/upload/upload.machine';\nimport { DeliveryChannelToggleComponent } from '../delivery-channel-toggle/delivery-channel-toggle.component';\nimport { FileInputComponent } from '../file-input/file-input.component';\nimport { SingleUploadComponent } from '../single-upload/single-upload.component';\n\n/** Organism: one document category — its label/description, an optional delivery\n channel toggle, and (when digital) a file picker plus the list of uploads. Pure\n UI: emits selection/removal/retry/delete and channel changes; no HTTP or rules. */\n@Component({\n selector: 'app-document-category',\n imports: [DeliveryChannelToggleComponent, FileInputComponent, SingleUploadComponent],\n styles: [`\n :host { display: block; }\n .label { font-weight: var(--rhc-text-font-weight-semi-bold); margin-block-end: var(--rhc-space-max-sm); }\n .req { font-weight: var(--rhc-text-font-weight-regular); color: var(--rhc-color-foreground-subtle); }\n .desc { color: var(--rhc-color-foreground-subtle); font-size: var(--rhc-text-font-size-sm); margin-block-end: var(--rhc-space-max-md); }\n .uploads { display: flex; flex-direction: column; gap: var(--rhc-space-max-md); margin-block-start: var(--rhc-space-max-md); }\n .rejection {\n color: var(--rhc-color-foreground-default);\n font-weight: var(--rhc-text-font-weight-semi-bold);\n margin-block-start: var(--rhc-space-max-sm);\n border-inline-start: var(--rhc-border-width-md) solid var(--rhc-color-rood-500);\n padding-inline-start: var(--rhc-space-max-md);\n }\n `],\n template: `\n
\n {{ category().label }}@if (category().required) { (verplicht) }\n
\n @if (category().description) {\n
{{ category().description }}
\n }\n\n @if (category().allowPostDelivery) {\n \n }\n\n @if (channel() === 'digital') {\n \n\n
\n @for (u of uploads(); track u.localId) {\n \n }\n
\n\n @if (rejection()) {\n
{{ rejection() }}
\n }\n }\n `,\n})\nexport class DocumentCategoryComponent {\n category = input.required();\n uploads = input.required();\n channel = input.required();\n rejection = input();\n previewUrlFor = input<(documentId: string) => string | undefined>();\n\n /** Accessible name for the file picker, e.g. \"Bestand kiezen voor Diploma\". */\n protected fileInputLabel = computed(() => $localize`:@@upload.fileInput.labelFor:Bestand kiezen voor ${this.category().label}:category:`);\n\n fileSelected = output();\n removeUpload = output();\n retryUpload = output();\n deleteUpload = output<{ localId: string; documentId: string }>();\n channelChange = output();\n\n onRemove(u: Upload) {\n if (u.status.type === 'complete') {\n this.deleteUpload.emit({ localId: u.localId, documentId: u.status.documentId });\n } else {\n this.removeUpload.emit(u.localId);\n }\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host { display: block; }\n .label { font-weight: var(--rhc-text-font-weight-semi-bold); margin-block-end: var(--rhc-space-max-sm); }\n .req { font-weight: var(--rhc-text-font-weight-regular); color: var(--rhc-color-foreground-subtle); }\n .desc { color: var(--rhc-color-foreground-subtle); font-size: var(--rhc-text-font-size-sm); margin-block-end: var(--rhc-space-max-md); }\n .uploads { display: flex; flex-direction: column; gap: var(--rhc-space-max-md); margin-block-start: var(--rhc-space-max-md); }\n .rejection {\n color: var(--rhc-color-foreground-default);\n font-weight: var(--rhc-text-font-weight-semi-bold);\n margin-block-start: var(--rhc-space-max-sm);\n border-inline-start: var(--rhc-border-width-md) solid var(--rhc-color-rood-500);\n padding-inline-start: var(--rhc-space-max-md);\n }\n \n", "extends": [] }, { "name": "DocumentChipComponent", "id": "component-DocumentChipComponent-bc28ccedea3cee5cc5a9fece88e4c6407ba8421f036d0f82b04406bd427ca89613e4dc81a01fddd0b0154ebd17eb7b59e01d5b5765707c7e32e0f8c2f89ae304", "file": "src/app/shared/ui/upload/document-chip/document-chip.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-document-chip", "styleUrls": [], "styles": [ "\n :host {\n display: inline-flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n padding-inline: var(--rhc-space-max-md);\n border: var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-radius: var(--rhc-border-radius-md);\n background: var(--rhc-color-cool-grey-100);\n }\n .name { flex: 1; }\n .action {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n color: var(--rhc-color-foreground-link);\n font: inherit;\n text-decoration: underline;\n }\n .action:hover { color: var(--rhc-color-foreground-link-hover); }\n a.action { display: inline-block; }\n " ], "template": "\n{{ fileName() }}\n@if (previewUrl()) {\n \n Voorbeeld / Download\n \n}\n@if (status().type === 'failed') {\n \n}\n@if (status().type !== 'deleting') {\n \n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "fileName", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 55, "required": true }, { "name": "previewUrl", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "

When set, show a preview/download link (opens the stored bytes).

\n", "line": 58, "rawdescription": "\nWhen set, show a preview/download link (opens the stored bytes).", "required": false }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "UploadStatus", "indexKey": "", "optional": false, "description": "", "line": 56, "required": true } ], "outputsClass": [ { "name": "remove", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 60, "required": false }, { "name": "retry", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 61, "required": false } ], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "UploadStatusIconComponent", "type": "component" } ], "description": "

Atom: a single uploaded-file chip — filename + status glyph + actions. Pure UI:\nemits remove/retry; the container decides what they mean.

\n", "rawdescription": "\nAtom: a single uploaded-file chip — filename + status glyph + actions. Pure UI:\nemits `remove`/`retry`; the container decides what they mean.", "type": "component", "sourceCode": "import { Component, input, output } from '@angular/core';\nimport type { UploadStatus } from '@shared/upload/upload.machine';\nimport { UploadStatusIconComponent } from '../upload-status-icon/upload-status-icon.component';\n\n/** Atom: a single uploaded-file chip — filename + status glyph + actions. Pure UI:\n emits `remove`/`retry`; the container decides what they mean. */\n@Component({\n selector: 'app-document-chip',\n imports: [UploadStatusIconComponent],\n styles: [`\n :host {\n display: inline-flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n padding-inline: var(--rhc-space-max-md);\n border: var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-radius: var(--rhc-border-radius-md);\n background: var(--rhc-color-cool-grey-100);\n }\n .name { flex: 1; }\n .action {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n color: var(--rhc-color-foreground-link);\n font: inherit;\n text-decoration: underline;\n }\n .action:hover { color: var(--rhc-color-foreground-link-hover); }\n a.action { display: inline-block; }\n `],\n template: `\n \n {{ fileName() }}\n @if (previewUrl()) {\n \n Voorbeeld / Download\n \n }\n @if (status().type === 'failed') {\n \n }\n @if (status().type !== 'deleting') {\n \n }\n `,\n})\nexport class DocumentChipComponent {\n fileName = input.required();\n status = input.required();\n /** When set, show a preview/download link (opens the stored bytes). */\n previewUrl = input();\n\n remove = output();\n retry = output();\n\n protected get removeLabel(): string {\n return $localize`:@@upload.chip.removeAria:${this.fileName()}:fileName: verwijderen`;\n }\n protected get previewLabel(): string {\n return $localize`:@@upload.chip.previewAria:${this.fileName()}:fileName: bekijken of downloaden`;\n }\n protected get retryLabel(): string {\n return $localize`:@@upload.chip.retryAria:${this.fileName()}:fileName: opnieuw uploaden`;\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host {\n display: inline-flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n padding-inline: var(--rhc-space-max-md);\n border: var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-radius: var(--rhc-border-radius-md);\n background: var(--rhc-color-cool-grey-100);\n }\n .name { flex: 1; }\n .action {\n background: none;\n border: none;\n cursor: pointer;\n padding: 0;\n color: var(--rhc-color-foreground-link);\n font: inherit;\n text-decoration: underline;\n }\n .action:hover { color: var(--rhc-color-foreground-link-hover); }\n a.action { display: inline-block; }\n \n", "extends": [], "accessors": { "removeLabel": { "name": "removeLabel", "getSignature": { "name": "removeLabel", "type": "string", "returnType": "string", "line": 63 } }, "previewLabel": { "name": "previewLabel", "getSignature": { "name": "previewLabel", "type": "string", "returnType": "string", "line": 66 } }, "retryLabel": { "name": "retryLabel", "getSignature": { "name": "retryLabel", "type": "string", "returnType": "string", "line": 69 } } } }, { "name": "DocumentUploadComponent", "id": "component-DocumentUploadComponent-b3a031d7ba5a4f3ce841d19a770a80845b035ed2754ed8545bb96c4c670eba6ade8ba11b410aff26fcfdc5e69a401ad0d6273ded30db8673a2f2d5221c000880", "file": "src/app/shared/ui/upload/document-upload/document-upload.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-document-upload", "styleUrls": [], "styles": [ "\n :host { display: flex; flex-direction: column; gap: var(--rhc-space-max-xl); }\n " ], "template": "@if (state().categoriesError) {\n \n} @else {\n @if (state().backgroundSyncAvailable === false) {\n \n }\n @for (c of state().categories; track c.categoryId) {\n \n }\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "previewUrlFor", "deprecated": false, "deprecationMessage": "", "type": "(documentId: string) => string | undefined", "indexKey": "", "optional": false, "description": "

Optional: builds a preview/download URL for a completed upload's documentId.

\n", "line": 41, "rawdescription": "\nOptional: builds a preview/download URL for a completed upload's documentId.", "required": false }, { "name": "state", "deprecated": false, "deprecationMessage": "", "type": "UploadState", "indexKey": "", "optional": false, "description": "", "line": 39, "required": true } ], "outputsClass": [ { "name": "channelChange", "deprecated": false, "deprecationMessage": "", "type": "{ categoryId: string; channel: DeliveryChannel }", "indexKey": "", "optional": false, "description": "", "line": 47, "required": false }, { "name": "deleteUpload", "deprecated": false, "deprecationMessage": "", "type": "{ localId: string; documentId: string }", "indexKey": "", "optional": false, "description": "", "line": 46, "required": false }, { "name": "fileSelected", "deprecated": false, "deprecationMessage": "", "type": "{ categoryId: string; files: File[] }", "indexKey": "", "optional": false, "description": "", "line": 43, "required": false }, { "name": "removeUpload", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 44, "required": false }, { "name": "retryUpload", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 45, "required": false } ], "propertiesClass": [ { "name": "foregroundOnlyMessage", "defaultValue": "$localize`:@@upload.foregroundOnly:Uploads gaan alleen door zolang deze pagina open blijft.`", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 49, "modifierKind": [ 124, 148 ] } ], "methodsClass": [ { "name": "channelFor", "args": [ { "name": "categoryId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "DeliveryChannel", "typeParameters": [], "line": 54, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "categoryId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "uploadsFor", "args": [ { "name": "categoryId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "any", "typeParameters": [], "line": 51, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "categoryId", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "DocumentCategoryComponent", "type": "component" }, { "name": "UploadStatusBannerComponent", "type": "component" } ], "description": "

Organism: the full document-upload step — the category list, or a load-error\nbanner. Pure UI: re-exposes the category events, tagging each with its category\nwhere the parent needs it. The container wires these to the upload reducer.

\n", "rawdescription": "\nOrganism: the full document-upload step — the category list, or a load-error\nbanner. Pure UI: re-exposes the category events, tagging each with its category\nwhere the parent needs it. The container wires these to the upload reducer.", "type": "component", "sourceCode": "import { Component, input, output } from '@angular/core';\nimport type { DeliveryChannel, UploadState } from '@shared/upload/upload.machine';\nimport { DocumentCategoryComponent } from '../document-category/document-category.component';\nimport { UploadStatusBannerComponent } from '../upload-status-banner/upload-status-banner.component';\n\n/** Organism: the full document-upload step — the category list, or a load-error\n banner. Pure UI: re-exposes the category events, tagging each with its category\n where the parent needs it. The container wires these to the upload reducer. */\n@Component({\n selector: 'app-document-upload',\n imports: [DocumentCategoryComponent, UploadStatusBannerComponent],\n styles: [`\n :host { display: flex; flex-direction: column; gap: var(--rhc-space-max-xl); }\n `],\n template: `\n @if (state().categoriesError) {\n \n } @else {\n @if (state().backgroundSyncAvailable === false) {\n \n }\n @for (c of state().categories; track c.categoryId) {\n \n }\n }\n `,\n})\nexport class DocumentUploadComponent {\n state = input.required();\n /** Optional: builds a preview/download URL for a completed upload's documentId. */\n previewUrlFor = input<(documentId: string) => string | undefined>();\n\n fileSelected = output<{ categoryId: string; files: File[] }>();\n removeUpload = output();\n retryUpload = output();\n deleteUpload = output<{ localId: string; documentId: string }>();\n channelChange = output<{ categoryId: string; channel: DeliveryChannel }>();\n\n protected readonly foregroundOnlyMessage = $localize`:@@upload.foregroundOnly:Uploads gaan alleen door zolang deze pagina open blijft.`;\n\n protected uploadsFor(categoryId: string) {\n return this.state().uploads.filter((u) => u.categoryId === categoryId);\n }\n protected channelFor(categoryId: string): DeliveryChannel {\n return this.state().deliveryChannel[categoryId] ?? 'digital';\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host { display: flex; flex-direction: column; gap: var(--rhc-space-max-xl); }\n \n", "extends": [] }, { "name": "FileInputComponent", "id": "component-FileInputComponent-92b1ede7856887c52081a7046df080753952cec4430e039277285f00c6fade6270dc0ff8abf940274e28f26b324e1ffbea9fa796cea25f888327ee065a1b8d18", "file": "src/app/shared/ui/upload/file-input/file-input.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-file-input", "styleUrls": [], "styles": [ "\n :host { display: inline-block; }\n .field { position: relative; display: inline-flex; }\n input[type='file'] {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n }\n input[type='file']:disabled { cursor: not-allowed; }\n .label {\n pointer-events: none;\n display: inline-flex;\n align-items: center;\n gap: var(--rhc-space-max-sm);\n }\n " ], "template": "\n \n \n \n {{ label() }}\n \n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "accept", "defaultValue": "[]", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": false, "description": "", "line": 48, "required": false }, { "name": "disabled", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 50, "required": false }, { "name": "inputId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 51, "required": true }, { "name": "label", "defaultValue": "$localize`:@@upload.fileInput.label:Bestand kiezen`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "

Accessible name + button text; the domain caller supplies a per-category label.

\n", "line": 53, "rawdescription": "\nAccessible name + button text; the domain caller supplies a per-category label.", "required": false }, { "name": "multiple", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 49, "required": false } ], "outputsClass": [ { "name": "filesSelected", "deprecated": false, "deprecationMessage": "", "type": "File[]", "indexKey": "", "optional": false, "description": "", "line": 55, "required": false } ], "propertiesClass": [ { "name": "fileInput", "defaultValue": "viewChild.required>('fileInput')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 57, "modifierKind": [ 123 ] } ], "methodsClass": [ { "name": "onChange", "args": [ { "name": "event", "type": "Event", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 59, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "event", "type": "Event", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: a styled file picker. Wraps a native <input type="file"> and emits the\nselected files; resets its value after each change so re-picking the same file\nre-fires. Pure UI — no validation, no upload.

\n", "rawdescription": "\nAtom: a styled file picker. Wraps a native `` and emits the\nselected files; resets its value after each change so re-picking the same file\nre-fires. Pure UI — no validation, no upload.", "type": "component", "sourceCode": "import { Component, ElementRef, input, output, viewChild } from '@angular/core';\n\n/** Atom: a styled file picker. Wraps a native `` and emits the\n selected files; resets its value after each change so re-picking the same file\n re-fires. Pure UI — no validation, no upload. */\n@Component({\n selector: 'app-file-input',\n styles: [`\n :host { display: inline-block; }\n .field { position: relative; display: inline-flex; }\n input[type='file'] {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n }\n input[type='file']:disabled { cursor: not-allowed; }\n .label {\n pointer-events: none;\n display: inline-flex;\n align-items: center;\n gap: var(--rhc-space-max-sm);\n }\n `],\n template: `\n \n \n \n \n {{ label() }}\n \n \n `,\n})\nexport class FileInputComponent {\n accept = input([]);\n multiple = input(false);\n disabled = input(false);\n inputId = input.required();\n /** Accessible name + button text; the domain caller supplies a per-category label. */\n label = input($localize`:@@upload.fileInput.label:Bestand kiezen`);\n\n filesSelected = output();\n\n private fileInput = viewChild.required>('fileInput');\n\n onChange(event: Event) {\n const input = event.target as HTMLInputElement;\n this.filesSelected.emit(Array.from(input.files ?? []));\n this.fileInput().nativeElement.value = '';\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host { display: inline-block; }\n .field { position: relative; display: inline-flex; }\n input[type='file'] {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n }\n input[type='file']:disabled { cursor: not-allowed; }\n .label {\n pointer-events: none;\n display: inline-flex;\n align-items: center;\n gap: var(--rhc-space-max-sm);\n }\n \n", "extends": [] }, { "name": "FormFieldComponent", "id": "component-FormFieldComponent-04221c4dcd81abadd6cc00b00f537477e513615e81c5a60d97d2ecfab8c1259527e52af6a78217fd233d50fce3b3ed6b5a079fb00ac188e7db8d9b1cb3ee50d2", "file": "src/app/shared/ui/form-field/form-field.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-form-field", "styleUrls": [], "styles": [ "\n :host{display:block}\n .label{display:block;font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-end:var(--rhc-space-max-sm)}\n .req{font-weight:var(--rhc-text-font-weight-regular);color:var(--rhc-color-foreground-subtle)}\n .desc{color:var(--rhc-color-foreground-subtle);font-size:var(--rhc-text-font-size-sm);margin-block-end:var(--rhc-space-max-sm)}\n .error{color:var(--rhc-color-foreground-default);font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-start:var(--rhc-space-max-sm);border-inline-start:var(--rhc-border-width-md) solid var(--rhc-color-rood-500);padding-inline-start:var(--rhc-space-max-md)}\n " ], "template": "
\n \n @if (description()) {\n
{{ description() }}
\n }\n \n @if (error()) {\n
{{ error() }}
\n }\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "description", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 32, "required": false }, { "name": "error", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 33, "required": false }, { "name": "fieldId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 31, "required": true }, { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 30, "required": true }, { "name": "required", "defaultValue": "false, { transform: booleanAttribute }", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 34, "required": false } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Molecule: form field = label + projected control + optional error/description.\nReused by both the login form and the change-request form.

\n", "rawdescription": "\nMolecule: form field = label + projected control + optional error/description.\nReused by both the login form and the change-request form.", "type": "component", "sourceCode": "import { Component, booleanAttribute, input } from '@angular/core';\n\n/** Molecule: form field = label + projected control + optional error/description.\n Reused by both the login form and the change-request form. */\n@Component({\n selector: 'app-form-field',\n styles: [`\n :host{display:block}\n .label{display:block;font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-end:var(--rhc-space-max-sm)}\n .req{font-weight:var(--rhc-text-font-weight-regular);color:var(--rhc-color-foreground-subtle)}\n .desc{color:var(--rhc-color-foreground-subtle);font-size:var(--rhc-text-font-size-sm);margin-block-end:var(--rhc-space-max-sm)}\n .error{color:var(--rhc-color-foreground-default);font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-start:var(--rhc-space-max-sm);border-inline-start:var(--rhc-border-width-md) solid var(--rhc-color-rood-500);padding-inline-start:var(--rhc-space-max-md)}\n `],\n template: `\n
\n \n @if (description()) {\n
{{ description() }}
\n }\n \n @if (error()) {\n
{{ error() }}
\n }\n
\n `,\n})\nexport class FormFieldComponent {\n label = input.required();\n fieldId = input.required();\n description = input();\n error = input();\n required = input(false, { transform: booleanAttribute });\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .label{display:block;font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-end:var(--rhc-space-max-sm)}\n .req{font-weight:var(--rhc-text-font-weight-regular);color:var(--rhc-color-foreground-subtle)}\n .desc{color:var(--rhc-color-foreground-subtle);font-size:var(--rhc-text-font-size-sm);margin-block-end:var(--rhc-space-max-sm)}\n .error{color:var(--rhc-color-foreground-default);font-weight:var(--rhc-text-font-weight-semi-bold);margin-block-start:var(--rhc-space-max-sm);border-inline-start:var(--rhc-border-width-md) solid var(--rhc-color-rood-500);padding-inline-start:var(--rhc-space-max-md)}\n \n", "extends": [] }, { "name": "HeadingComponent", "id": "component-HeadingComponent-0f0b442fc9ccbfde8481137b728000bb093868ddc931f507bbd4a86ee528820cf4c6dab36a9a82b4a940bb96c2355f42bc34a94700acc7df3e7dfeea627be67c", "file": "src/app/shared/ui/heading/heading.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-heading", "styleUrls": [], "styles": [], "template": "\n@switch (level()) {\n @case (1) {

}\n @case (2) {

}\n @case (3) {

}\n @case (4) {

}\n @default {
}\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "level", "defaultValue": "2", "deprecated": false, "deprecationMessage": "", "type": "1 | 2 | 3 | 4 | 5", "indexKey": "", "optional": false, "description": "", "line": 22, "required": false } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "NgTemplateOutlet" } ], "description": "

Atom: heading. Renders the right h1..h5 with RHC heading styling.\nSingle captured in a template — multiple ng-content across

\n", "rawdescription": "\nAtom: heading. Renders the right h1..h5 with RHC heading styling.\nSingle captured in a template — multiple ng-content across", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/** Atom: heading. Renders the right h1..h5 with RHC heading styling.\n Single captured in a template — multiple ng-content across\n @switch branches silently drops the projected content. */\n@Component({\n selector: 'app-heading',\n imports: [NgTemplateOutlet],\n template: `\n \n @switch (level()) {\n @case (1) {

}\n @case (2) {

}\n @case (3) {

}\n @case (4) {

}\n @default {
}\n }\n `,\n})\nexport class HeadingComponent {\n level = input<1 | 2 | 3 | 4 | 5>(2);\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "HerregistratiePage", "id": "component-HerregistratiePage-23bf19b0f7fd99695a5e0dbe2f95356aac393a1fbedc30ac3a1721a676b89abbb43935d9d0889dde5bf8d3ac1db668ba45c80e94f08b9fc650717b1bc295bd87", "file": "src/app/herregistratie/ui/herregistratie.page.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-herregistratie-page", "styleUrls": [], "styles": [], "template": "\n \n \n @if (eligible) {\n \n Uw huidige registratie verloopt binnenkort. Vraag tijdig herregistratie aan.\n \n
\n \n
\n } @else {\n \n Voor uw huidige registratiestatus is herregistratie niet mogelijk.\n \n }\n
\n
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [ { "name": "eligibility", "defaultValue": "computed(() =>\n map(this.store.decisions(), (d) => d.eligibleForHerregistratie),\n )", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 40, "modifierKind": [ 124 ] }, { "name": "store", "defaultValue": "inject(BigProfileStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 37, "modifierKind": [ 123 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "PageShellComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "ASYNC" }, { "name": "HerregistratieWizardComponent", "type": "component" } ], "description": "

A whole new page built from existing building blocks. Eligibility is a\nSERVER-computed decision read from the aggregated view — the frontend renders\nit, it does not recompute the rule.

\n", "rawdescription": "\nA whole new page built from existing building blocks. Eligibility is a\nSERVER-computed decision read from the aggregated view — the frontend renders\nit, it does not recompute the rule.", "type": "component", "sourceCode": "import { Component, computed, inject } from '@angular/core';\nimport { PageShellComponent } from '@shared/layout/page-shell/page-shell.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { ASYNC } from '@shared/ui/async/async.component';\nimport { map } from '@shared/application/remote-data';\nimport { BigProfileStore } from '@registratie/application/big-profile.store';\nimport { HerregistratieWizardComponent } from '@herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component';\n\n/** A whole new page built from existing building blocks. Eligibility is a\n SERVER-computed decision read from the aggregated view — the frontend renders\n it, it does not recompute the rule. */\n@Component({\n selector: 'app-herregistratie-page',\n imports: [PageShellComponent, AlertComponent, ...ASYNC, HerregistratieWizardComponent],\n template: `\n \n \n \n @if (eligible) {\n \n Uw huidige registratie verloopt binnenkort. Vraag tijdig herregistratie aan.\n \n
\n \n
\n } @else {\n \n Voor uw huidige registratiestatus is herregistratie niet mogelijk.\n \n }\n
\n
\n
\n `,\n})\nexport class HerregistratiePage {\n private store = inject(BigProfileStore);\n // The eligibility decision comes from the server (decisions block), not a\n // client-side rule. The UI just reads the boolean.\n protected eligibility = computed(() =>\n map(this.store.decisions(), (d) => d.eligibleForHerregistratie),\n );\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "HerregistratieWizardComponent", "id": "component-HerregistratieWizardComponent-3cba7756d175155533a8745298192c123627c0c20937a60226e715f3459f5fea5dfde4be4ecb96a109c73c280ff86d0027167834734999f6a1c76954f38e0bc9", "file": "src/app/herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-herregistratie-wizard", "styleUrls": [], "styles": [], "template": " 1\"\n [errors]=\"errorList()\"\n [errorMessage]=\"errorMessage()\"\n (primary)=\"onPrimary()\"\n (back)=\"dispatch({ tag: 'Back' })\"\n (cancel)=\"restart()\"\n (retry)=\"onRetry()\">\n\n @switch (step()) {\n @case (1) {\n \n \n \n \n \n \n }\n @case (2) {\n \n \n \n }\n @case (3) {\n \n @if (errDocumenten()) {\n {{ errDocumenten() }}\n }\n }\n }\n\n
\n Uw aanvraag tot herregistratie is ontvangen.\n
\n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "seed", "defaultValue": "initial", "deprecated": false, "deprecationMessage": "", "type": "WizardState", "indexKey": "", "optional": false, "description": "

Optional seed so Storybook / the showcase can mount any state directly.

\n", "line": 90, "rawdescription": "\nOptional seed so Storybook / the showcase can mount any state directly.", "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "dispatch", "defaultValue": "this.store.dispatch", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 93, "modifierKind": [ 124 ] }, { "name": "draft", "defaultValue": "computed(() => this.editing()?.draft ?? { uren: '', jaren: '', punten: '' })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 115, "modifierKind": [ 124 ] }, { "name": "draftSync", "defaultValue": "createDraftSync({\n type: 'herregistratie',\n snapshot: () => {\n const s = this.state();\n if (s.tag !== 'Editing' || !hasProgress(s)) return null;\n const documentIds = deliveryRefs(s.upload).filter((r) => r.channel === 'digital' && r.documentId).map((r) => r.documentId!);\n return { draft: s, stepIndex: s.step - 1, stepCount: this.stepLabels.length, documentIds };\n },\n onResume: (draft) => this.dispatch({ tag: 'Seed', state: (draft as WizardState | null) ?? initial }),\n enabled: () => this.seed() === initial,\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 97, "modifierKind": [ 123 ] }, { "name": "editing", "defaultValue": "computed(() => whenTag(this.state(), 'Editing'))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 113, "modifierKind": [ 123 ] }, { "name": "errDocumenten", "defaultValue": "computed(() => this.editing()?.errors.documenten ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 120, "modifierKind": [ 124 ] }, { "name": "errJaren", "defaultValue": "computed(() => this.editing()?.errors.jaren ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 118, "modifierKind": [ 124 ] }, { "name": "errorList", "defaultValue": "computed(() => {\n const e = this.editing()?.errors ?? {};\n return (Object.keys(e) as (keyof typeof e)[])\n .filter((k) => e[k])\n .map((k) => ({ id: k, message: e[k]! }));\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Current step's field errors, flattened for the shell's error summary.

\n", "line": 141, "rawdescription": "\nCurrent step's field errors, flattened for the shell's error summary.", "modifierKind": [ 124 ] }, { "name": "errorMessage", "defaultValue": "computed(() => $localize`:@@wizard.indienenMislukt:Indienen mislukt:` + ` ${this.failedError()}`)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 131, "modifierKind": [ 124 ] }, { "name": "errPunten", "defaultValue": "computed(() => this.editing()?.errors.punten ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 119, "modifierKind": [ 124 ] }, { "name": "errUren", "defaultValue": "computed(() => this.editing()?.errors.uren ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 117, "modifierKind": [ 124 ] }, { "name": "failedError", "defaultValue": "computed(() => whenTag(this.state(), 'Failed')?.error ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 121, "modifierKind": [ 124 ] }, { "name": "previewUrlFor", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Preview/download link for a completed upload; dev-simulation demo-* ids have\nno stored bytes, so they get no link.

\n", "line": 86, "rawdescription": "\nPreview/download link for a completed upload; dev-simulation `demo-*` ids have\nno stored bytes, so they get no link.", "modifierKind": [ 124 ] }, { "name": "primaryLabel", "defaultValue": "computed(() => (this.step() < 3 ? $localize`:@@wizard.volgende:Volgende` : $localize`:@@herregWizard.indienen:Herregistratie aanvragen`))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 130, "modifierKind": [ 124 ] }, { "name": "profile", "defaultValue": "inject(BigProfileStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 80, "modifierKind": [ 123 ] }, { "name": "shellStatus", "defaultValue": "computed(() => {\n switch (this.state().tag) {\n case 'Editing': return 'editing';\n case 'Submitting': return 'submitting';\n case 'Submitted': return 'submitted';\n case 'Failed': return 'failed';\n }\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 132, "modifierKind": [ 124 ] }, { "name": "state", "defaultValue": "this.store.model", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 92, "modifierKind": [ 148 ] }, { "name": "step", "defaultValue": "computed(() => this.editing()?.step ?? 1)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 114, "modifierKind": [ 124 ] }, { "name": "stepLabels", "defaultValue": "[$localize`:@@herregWizard.step.werkervaring:Werkervaring`, $localize`:@@herregWizard.step.nascholing:Nascholing`, $localize`:@@herregWizard.step.documenten:Documenten`]", "deprecated": false, "deprecationMessage": "", "type": "[]", "indexKey": "", "optional": false, "description": "", "line": 110, "modifierKind": [ 148 ] }, { "name": "stepTitle", "defaultValue": "computed(() => this.stepTitles[this.step() - 1])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 129, "modifierKind": [ 124 ] }, { "name": "stepTitles", "defaultValue": "[$localize`:@@herregWizard.title.werkervaring:Werkervaring (afgelopen 5 jaar)`, $localize`:@@herregWizard.title.nascholing:Nascholing`, $localize`:@@herregWizard.title.documenten:Documenten aanleveren`]", "deprecated": false, "deprecationMessage": "", "type": "[]", "indexKey": "", "optional": false, "description": "", "line": 111, "modifierKind": [ 123 ] }, { "name": "store", "defaultValue": "createStore(initial, reduce)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 82, "modifierKind": [ 123 ] }, { "name": "upload", "defaultValue": "computed(() => this.editing()?.upload ?? initialUpload)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 116, "modifierKind": [ 124 ] }, { "name": "uploadAdapter", "defaultValue": "inject(UploadAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 81, "modifierKind": [ 123 ] }, { "name": "uploadCtl", "defaultValue": "createUploadController({\n wizardId: 'herregistratie',\n getUpload: () => this.upload(),\n dispatch: (msg) => this.dispatch({ tag: 'Upload', msg }),\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 122, "modifierKind": [ 124 ] } ], "methodsClass": [ { "name": "onPrimary", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 155, "deprecated": false, "deprecationMessage": "" }, { "name": "onRetry", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 162, "deprecated": false, "deprecationMessage": "" }, { "name": "restart", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 168, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nReset the wizard to a fresh, empty start.", "description": "

Reset the wizard to a fresh, empty start.

\n" }, { "name": "runIfSubmitting", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 175, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nThe effect: when we entered Submitting, submit through the aanvraag lifecycle,\nflip the optimistic cross-page flag, then dispatch the result (commit/rollback).", "description": "

The effect: when we entered Submitting, submit through the aanvraag lifecycle,\nflip the optimistic cross-page flag, then dispatch the result (commit/rollback).

\n", "modifierKind": [ 123, 134 ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "FormsModule", "type": "module" }, { "name": "FormFieldComponent", "type": "component" }, { "name": "TextInputComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "WizardShellComponent", "type": "component" }, { "name": "DocumentUploadComponent", "type": "component" } ], "description": "

Organism: multi-step herregistratie wizard. ALL state lives in one signal\ndriven by the pure reduce function (see herregistratie.machine.ts) via an\nElm-style store. The UI just sends messages and folds over the state's tag —\nno booleans like submitting/submitted that could contradict each other.\nSubmitting also flips an optimistic flag on the shared BigProfileStore, so\nthe dashboard shows "in behandeling" immediately.

\n", "rawdescription": "\nOrganism: multi-step herregistratie wizard. ALL state lives in one signal\ndriven by the pure `reduce` function (see herregistratie.machine.ts) via an\nElm-style store. The UI just sends messages and folds over the state's tag —\nno booleans like `submitting`/`submitted` that could contradict each other.\nSubmitting also flips an optimistic flag on the shared BigProfileStore, so\nthe dashboard shows \"in behandeling\" immediately.", "type": "component", "sourceCode": "import { Component, computed, inject, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldComponent } from '@shared/ui/form-field/form-field.component';\nimport { TextInputComponent } from '@shared/ui/text-input/text-input.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { WizardShellComponent, WizardError, WizardStatus } from '@shared/layout/wizard-shell/wizard-shell.component';\nimport { createStore } from '@shared/application/store';\nimport { whenTag } from '@shared/kernel/fp';\nimport { BigProfileStore } from '@registratie/application/big-profile.store';\nimport { WizardState, WizardMsg, Draft, initial, reduce, hasProgress } from '@herregistratie/domain/herregistratie.machine';\nimport { createDraftSync } from '@registratie/application/draft-sync';\nimport { DocumentUploadComponent } from '@shared/ui/upload/document-upload/document-upload.component';\nimport { createUploadController } from '@shared/upload/upload-controller';\nimport { UploadAdapter } from '@shared/upload/upload.adapter';\nimport { UploadState, initialUpload, deliveryRefs } from '@shared/upload/upload.machine';\n\n/** Organism: multi-step herregistratie wizard. ALL state lives in one signal\n driven by the pure `reduce` function (see herregistratie.machine.ts) via an\n Elm-style store. The UI just sends messages and folds over the state's tag —\n no booleans like `submitting`/`submitted` that could contradict each other.\n Submitting also flips an optimistic flag on the shared BigProfileStore, so\n the dashboard shows \"in behandeling\" immediately. */\n@Component({\n selector: 'app-herregistratie-wizard',\n imports: [FormsModule, FormFieldComponent, TextInputComponent, AlertComponent, WizardShellComponent, DocumentUploadComponent],\n template: `\n 1\"\n [errors]=\"errorList()\"\n [errorMessage]=\"errorMessage()\"\n (primary)=\"onPrimary()\"\n (back)=\"dispatch({ tag: 'Back' })\"\n (cancel)=\"restart()\"\n (retry)=\"onRetry()\">\n\n @switch (step()) {\n @case (1) {\n \n \n \n \n \n \n }\n @case (2) {\n \n \n \n }\n @case (3) {\n \n @if (errDocumenten()) {\n {{ errDocumenten() }}\n }\n }\n }\n\n
\n Uw aanvraag tot herregistratie is ontvangen.\n
\n \n `,\n})\nexport class HerregistratieWizardComponent {\n private profile = inject(BigProfileStore);\n private uploadAdapter = inject(UploadAdapter);\n private store = createStore(initial, reduce);\n\n /** Preview/download link for a completed upload; dev-simulation `demo-*` ids have\n no stored bytes, so they get no link. */\n protected previewUrlFor = (documentId: string): string | undefined =>\n documentId.startsWith('demo-') ? undefined : this.uploadAdapter.contentUrl(documentId);\n\n /** Optional seed so Storybook / the showcase can mount any state directly. */\n seed = input(initial);\n\n readonly state = this.store.model; // public so the showcase can highlight the live state\n protected dispatch = this.store.dispatch;\n\n // Backend draft-sync (new persistence for this wizard): create a Concept on first\n // progress, debounced-sync the snapshot, resume by `?aanvraag=`.\n private draftSync = createDraftSync({\n type: 'herregistratie',\n snapshot: () => {\n const s = this.state();\n if (s.tag !== 'Editing' || !hasProgress(s)) return null;\n const documentIds = deliveryRefs(s.upload).filter((r) => r.channel === 'digital' && r.documentId).map((r) => r.documentId!);\n return { draft: s, stepIndex: s.step - 1, stepCount: this.stepLabels.length, documentIds };\n },\n onResume: (draft) => this.dispatch({ tag: 'Seed', state: (draft as WizardState | null) ?? initial }),\n enabled: () => this.seed() === initial,\n });\n\n // Stepper labels + per-step heading titles (presentational only).\n readonly stepLabels = [$localize`:@@herregWizard.step.werkervaring:Werkervaring`, $localize`:@@herregWizard.step.nascholing:Nascholing`, $localize`:@@herregWizard.step.documenten:Documenten`];\n private stepTitles = [$localize`:@@herregWizard.title.werkervaring:Werkervaring (afgelopen 5 jaar)`, $localize`:@@herregWizard.title.nascholing:Nascholing`, $localize`:@@herregWizard.title.documenten:Documenten aanleveren`];\n\n private editing = computed(() => whenTag(this.state(), 'Editing'));\n protected step = computed(() => this.editing()?.step ?? 1);\n protected draft = computed(() => this.editing()?.draft ?? { uren: '', jaren: '', punten: '' });\n protected upload = computed(() => this.editing()?.upload ?? initialUpload);\n protected errUren = computed(() => this.editing()?.errors.uren ?? '');\n protected errJaren = computed(() => this.editing()?.errors.jaren ?? '');\n protected errPunten = computed(() => this.editing()?.errors.punten ?? '');\n protected errDocumenten = computed(() => this.editing()?.errors.documenten ?? '');\n protected failedError = computed(() => whenTag(this.state(), 'Failed')?.error ?? '');\n protected uploadCtl = createUploadController({\n wizardId: 'herregistratie',\n getUpload: () => this.upload(),\n dispatch: (msg) => this.dispatch({ tag: 'Upload', msg }),\n });\n\n // --- Presentational wiring for the shared wizard shell ---------------------\n protected stepTitle = computed(() => this.stepTitles[this.step() - 1]);\n protected primaryLabel = computed(() => (this.step() < 3 ? $localize`:@@wizard.volgende:Volgende` : $localize`:@@herregWizard.indienen:Herregistratie aanvragen`));\n protected errorMessage = computed(() => $localize`:@@wizard.indienenMislukt:Indienen mislukt:` + ` ${this.failedError()}`);\n protected shellStatus = computed(() => {\n switch (this.state().tag) {\n case 'Editing': return 'editing';\n case 'Submitting': return 'submitting';\n case 'Submitted': return 'submitted';\n case 'Failed': return 'failed';\n }\n });\n /** Current step's field errors, flattened for the shell's error summary. */\n protected errorList = computed(() => {\n const e = this.editing()?.errors ?? {};\n return (Object.keys(e) as (keyof typeof e)[])\n .filter((k) => e[k])\n .map((k) => ({ id: k, message: e[k]! }));\n });\n\n constructor() {\n // An explicit seed (stories/tests) wins; otherwise resume the backend draft\n // (`?aanvraag=`) or start fresh. Persistence is the draftSync controller's job.\n const seeded = this.seed();\n queueMicrotask(() => (seeded !== initial ? this.dispatch({ tag: 'Seed', state: seeded }) : this.draftSync.resume()));\n }\n\n onPrimary() {\n const s = this.state();\n if (s.tag !== 'Editing') return;\n this.dispatch(s.step < 3 ? { tag: 'Next' } : { tag: 'Submit' });\n this.runIfSubmitting();\n }\n\n onRetry() {\n this.dispatch({ tag: 'Retry' });\n this.runIfSubmitting();\n }\n\n /** Reset the wizard to a fresh, empty start. */\n restart() {\n this.draftSync.reset();\n this.dispatch({ tag: 'Seed', state: initial });\n }\n\n /** The effect: when we entered Submitting, submit through the aanvraag lifecycle,\n flip the optimistic cross-page flag, then dispatch the result (commit/rollback). */\n private async runIfSubmitting() {\n const s = this.state();\n if (s.tag !== 'Submitting') return;\n this.profile.beginHerregistratie();\n const r = await this.draftSync.submit({ uren: s.data.uren, documents: s.data.documents });\n if (r.ok) {\n this.dispatch({ tag: 'SubmitConfirmed' });\n this.profile.confirmHerregistratie();\n } else {\n this.dispatch({ tag: 'SubmitFailed', error: r.error });\n this.profile.rollbackHerregistratie();\n }\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [], "line": 146 }, "extends": [] }, { "name": "IntakePage", "id": "component-IntakePage-0e1d34cb0e699276f13fa0f1017015cc2acfde47fdcb7e2c7e84b79784bbb59d46c690227744aa51d0e5e7c62ba8921cc2697e22992878d92a02106c69be5381", "file": "src/app/herregistratie/ui/intake.page.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-intake-page", "styleUrls": [], "styles": [], "template": "\n \n Een paar vragen bepalen welke gegevens we nodig hebben. Afhankelijk van uw\n antwoorden verschijnen er extra vragen. Uw antwoorden blijven bewaard als u\n de pagina herlaadt.\n \n
\n \n
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "PageShellComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "IntakeWizardComponent", "type": "component" } ], "description": "

Page: the branching intake questionnaire. Built entirely from existing\nbuilding blocks (page shell + alert + the intake-wizard organism).

\n", "rawdescription": "\nPage: the branching intake questionnaire. Built entirely from existing\nbuilding blocks (page shell + alert + the intake-wizard organism).", "type": "component", "sourceCode": "import { Component } from '@angular/core';\nimport { PageShellComponent } from '@shared/layout/page-shell/page-shell.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { IntakeWizardComponent } from '@herregistratie/ui/intake-wizard/intake-wizard.component';\n\n/** Page: the branching intake questionnaire. Built entirely from existing\n building blocks (page shell + alert + the intake-wizard organism). */\n@Component({\n selector: 'app-intake-page',\n imports: [PageShellComponent, AlertComponent, IntakeWizardComponent],\n template: `\n \n \n Een paar vragen bepalen welke gegevens we nodig hebben. Afhankelijk van uw\n antwoorden verschijnen er extra vragen. Uw antwoorden blijven bewaard als u\n de pagina herlaadt.\n \n
\n \n
\n
\n `,\n})\nexport class IntakePage {}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "IntakeWizardComponent", "id": "component-IntakeWizardComponent-73418b26ac5b24a22ca67ae89a7a7a861fc7bd76999c6b55906268d1e52133db126bcd19bcda8702a3c89a29857732caea69435c05ec3e0b259cf59d08b0df1d", "file": "src/app/herregistratie/ui/intake-wizard/intake-wizard.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-intake-wizard", "styleUrls": [], "styles": [], "template": " 0\"\n [errors]=\"errorList()\"\n [errorMessage]=\"errorMessage()\"\n (primary)=\"onPrimary()\"\n (back)=\"dispatch({ tag: 'Back' })\"\n (cancel)=\"restart()\"\n (retry)=\"onRetry()\">\n\n @switch (step()) {\n @case ('buitenland') {\n \n \n \n @if (answers().buitenlandGewerkt === 'ja') {\n \n \n \n \n \n \n }\n }\n @case ('werk') {\n \n \n \n @if (scholingZichtbaar()) {\n \n \n \n }\n @if (answers().scholingGevolgd === 'ja') {\n \n \n \n }\n }\n @case ('review') {\n Controleer uw antwoorden en dien de aanvraag in.\n
\n \n @if (answers().buitenlandGewerkt === 'ja') {\n \n \n }\n \n @if (scholingZichtbaar()) {\n \n }\n @if (answers().scholingGevolgd === 'ja') {\n \n }\n
\n }\n }\n\n
\n Uw aanvraag tot herregistratie is ontvangen.\n
\n Opnieuw beginnen\n
\n
\n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "seed", "defaultValue": "initial", "deprecated": false, "deprecationMessage": "", "type": "IntakeState", "indexKey": "", "optional": false, "description": "

Optional seed so Storybook / the showcase can mount any state directly.

\n", "line": 120, "rawdescription": "\nOptional seed so Storybook / the showcase can mount any state directly.", "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "answering", "defaultValue": "computed(() => whenTag(this.state(), 'Answering'))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 138, "modifierKind": [ 123 ] }, { "name": "answers", "defaultValue": "computed(() => this.answering()?.answers ?? {})", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 142, "modifierKind": [ 124 ] }, { "name": "cursor", "defaultValue": "computed(() => this.answering()?.cursor ?? 0)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 141, "modifierKind": [ 124 ] }, { "name": "dispatch", "defaultValue": "this.store.dispatch", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 124, "modifierKind": [ 148 ] }, { "name": "draftSync", "defaultValue": "createDraftSync({\n type: 'intake',\n snapshot: () => {\n const s = this.state();\n if (s.tag !== 'Answering' || !hasProgress(s)) return null;\n return { draft: s, stepIndex: s.cursor, stepCount: STEPS.length, documentIds: [] };\n },\n onResume: (draft) => this.dispatch({ tag: 'Seed', state: (draft as IntakeState | null) ?? initial }),\n enabled: () => this.seed() === initial,\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 127, "modifierKind": [ 123 ] }, { "name": "err", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 177, "modifierKind": [ 124 ] }, { "name": "errorList", "defaultValue": "computed(() => {\n const e = this.answering()?.errors ?? {};\n return (Object.keys(e) as (keyof Answers)[])\n .filter((k) => e[k])\n .map((k) => ({ id: k, message: e[k]! }));\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Current step's field errors, flattened for the shell's error summary. The\nfield ids match the answer keys, so the summary anchors jump to the field.

\n", "line": 170, "rawdescription": "\nCurrent step's field errors, flattened for the shell's error summary. The\nfield ids match the answer keys, so the summary anchors jump to the field.", "modifierKind": [ 124 ] }, { "name": "errorMessage", "defaultValue": "computed(() => $localize`:@@wizard.indienenMislukt:Indienen mislukt:` + ` ${this.failedError()}`)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 159, "modifierKind": [ 124 ] }, { "name": "failedError", "defaultValue": "computed(() => whenTag(this.state(), 'Failed')?.error ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 148, "modifierKind": [ 124 ] }, { "name": "jaNee", "defaultValue": "JA_NEE", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 122, "modifierKind": [ 148 ] }, { "name": "policy", "defaultValue": "inject(IntakePolicyAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 112, "modifierKind": [ 123 ] }, { "name": "policyRes", "defaultValue": "this.policy.policyResource()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 117, "modifierKind": [ 123 ] }, { "name": "primaryLabel", "defaultValue": "computed(() => (this.step() === 'review' ? $localize`:@@intake.indienen:Aanvraag indienen` : $localize`:@@wizard.volgende:Volgende`))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 158, "modifierKind": [ 124 ] }, { "name": "profile", "defaultValue": "inject(BigProfileStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 111, "modifierKind": [ 123 ] }, { "name": "scholingThreshold", "defaultValue": "computed(() => this.answering()?.scholingThreshold ?? SCHOLING_THRESHOLD_DEFAULT)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Server-owned threshold from the policy endpoint (mirrored into machine state).

\n", "line": 145, "rawdescription": "\nServer-owned threshold from the policy endpoint (mirrored into machine state).", "modifierKind": [ 124 ] }, { "name": "scholingZichtbaar", "defaultValue": "computed(() => lageUren(this.answers(), this.scholingThreshold()))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Whether the inline scholing question is shown (and required) in the 'werk' step.

\n", "line": 147, "rawdescription": "\nWhether the inline scholing question is shown (and required) in the 'werk' step.", "modifierKind": [ 124 ] }, { "name": "set", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 178, "modifierKind": [ 124 ] }, { "name": "shellStatus", "defaultValue": "computed(() => {\n switch (this.state().tag) {\n case 'Answering': return 'editing';\n case 'Submitting': return 'submitting';\n case 'Submitted': return 'submitted';\n case 'Failed': return 'failed';\n }\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 160, "modifierKind": [ 124 ] }, { "name": "state", "defaultValue": "this.store.model", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 123, "modifierKind": [ 148 ] }, { "name": "step", "defaultValue": "computed(() => STEPS[Math.min(this.cursor(), STEPS.length - 1)])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 143, "modifierKind": [ 124 ] }, { "name": "stepLabels", "defaultValue": "[$localize`:@@intake.step.buitenland:Buitenland`, $localize`:@@intake.step.werk:Werk`, $localize`:@@intake.step.controle:Controle`]", "deprecated": false, "deprecationMessage": "", "type": "[]", "indexKey": "", "optional": false, "description": "", "line": 151, "modifierKind": [ 148 ] }, { "name": "steps", "defaultValue": "STEPS", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Public so the showcase can render the (fixed) step list next to the wizard.

\n", "line": 140, "rawdescription": "\nPublic so the showcase can render the (fixed) step list next to the wizard.", "modifierKind": [ 148 ] }, { "name": "stepTitle", "defaultValue": "computed(() => this.stepTitles[this.step()])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 157, "modifierKind": [ 124 ] }, { "name": "stepTitles", "defaultValue": "{\n buitenland: $localize`:@@intake.title.buitenland:Werken in het buitenland`,\n werk: $localize`:@@intake.title.werk:Werkervaring in Nederland`,\n review: $localize`:@@intake.title.review:Controleren en indienen`,\n }", "deprecated": false, "deprecationMessage": "", "type": "Record", "indexKey": "", "optional": false, "description": "", "line": 152, "modifierKind": [ 123 ] }, { "name": "store", "defaultValue": "createStore(initial, reduce)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 113, "modifierKind": [ 123 ] } ], "methodsClass": [ { "name": "onPrimary", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 194, "deprecated": false, "deprecationMessage": "" }, { "name": "onRetry", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 201, "deprecated": false, "deprecationMessage": "" }, { "name": "restart", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 206, "deprecated": false, "deprecationMessage": "" }, { "name": "runIfSubmitting", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 213, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nThe effect: when we enter Submitting, submit through the aanvraag lifecycle,\nflip the optimistic cross-page flag, then dispatch the outcome (commit/rollback).", "description": "

The effect: when we enter Submitting, submit through the aanvraag lifecycle,\nflip the optimistic cross-page flag, then dispatch the outcome (commit/rollback).

\n", "modifierKind": [ 123, 134 ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "FormsModule", "type": "module" }, { "name": "FormFieldComponent", "type": "component" }, { "name": "TextInputComponent", "type": "component" }, { "name": "RadioGroupComponent", "type": "component" }, { "name": "ButtonComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "DataRowComponent", "type": "component" }, { "name": "WizardShellComponent", "type": "component" } ], "description": "

Organism: a BRANCHING intake questionnaire. All state lives in one signal\ndriven by the pure reduce (intake.machine.ts). Which step renders is derived\nfrom the answers via visibleSteps, never stored — so editing an earlier\nanswer immediately changes the remaining steps. Answers are persisted to\nsessionStorage so a page reload keeps the user's progress (cleared on tab close).

\n", "rawdescription": "\nOrganism: a BRANCHING intake questionnaire. All state lives in one signal\ndriven by the pure `reduce` (intake.machine.ts). Which step renders is derived\nfrom the answers via `visibleSteps`, never stored — so editing an earlier\nanswer immediately changes the remaining steps. Answers are persisted to\nsessionStorage so a page reload keeps the user's progress (cleared on tab close).", "type": "component", "sourceCode": "import { Component, computed, effect, inject, input, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldComponent } from '@shared/ui/form-field/form-field.component';\nimport { TextInputComponent } from '@shared/ui/text-input/text-input.component';\nimport { RadioGroupComponent, JA_NEE } from '@shared/ui/radio-group/radio-group.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { DataRowComponent } from '@shared/ui/data-row/data-row.component';\nimport { WizardShellComponent, WizardError, WizardStatus } from '@shared/layout/wizard-shell/wizard-shell.component';\nimport { createStore } from '@shared/application/store';\nimport { whenTag } from '@shared/kernel/fp';\nimport { BigProfileStore } from '@registratie/application/big-profile.store';\nimport {\n IntakeState,\n IntakeMsg,\n Answers,\n StepId,\n initial,\n reduce,\n STEPS,\n lageUren,\n hasProgress,\n SCHOLING_THRESHOLD_DEFAULT,\n} from '@herregistratie/domain/intake.machine';\nimport { createDraftSync } from '@registratie/application/draft-sync';\nimport { IntakePolicyAdapter } from '@herregistratie/infrastructure/intake-policy.adapter';\n\n/** Organism: a BRANCHING intake questionnaire. All state lives in one signal\n driven by the pure `reduce` (intake.machine.ts). Which step renders is derived\n from the answers via `visibleSteps`, never stored — so editing an earlier\n answer immediately changes the remaining steps. Answers are persisted to\n sessionStorage so a page reload keeps the user's progress (cleared on tab close). */\n@Component({\n selector: 'app-intake-wizard',\n imports: [FormsModule, FormFieldComponent, TextInputComponent, RadioGroupComponent, ButtonComponent, AlertComponent, DataRowComponent, WizardShellComponent],\n template: `\n 0\"\n [errors]=\"errorList()\"\n [errorMessage]=\"errorMessage()\"\n (primary)=\"onPrimary()\"\n (back)=\"dispatch({ tag: 'Back' })\"\n (cancel)=\"restart()\"\n (retry)=\"onRetry()\">\n\n @switch (step()) {\n @case ('buitenland') {\n \n \n \n @if (answers().buitenlandGewerkt === 'ja') {\n \n \n \n \n \n \n }\n }\n @case ('werk') {\n \n \n \n @if (scholingZichtbaar()) {\n \n \n \n }\n @if (answers().scholingGevolgd === 'ja') {\n \n \n \n }\n }\n @case ('review') {\n Controleer uw antwoorden en dien de aanvraag in.\n
\n \n @if (answers().buitenlandGewerkt === 'ja') {\n \n \n }\n \n @if (scholingZichtbaar()) {\n \n }\n @if (answers().scholingGevolgd === 'ja') {\n \n }\n
\n }\n }\n\n
\n Uw aanvraag tot herregistratie is ontvangen.\n
\n Opnieuw beginnen\n
\n
\n \n `,\n})\nexport class IntakeWizardComponent {\n private profile = inject(BigProfileStore);\n private policy = inject(IntakePolicyAdapter);\n private store = createStore(initial, reduce);\n\n // Server-owned policy: the scholing threshold is fetched from the backend, not\n // hardcoded. The backend stays the authority and re-validates on submit.\n private policyRes = this.policy.policyResource();\n\n /** Optional seed so Storybook / the showcase can mount any state directly. */\n seed = input(initial);\n\n readonly jaNee = JA_NEE;\n readonly state = this.store.model;\n readonly dispatch = this.store.dispatch;\n\n // Backend draft-sync (replaces sessionStorage); the intake has no uploads.\n private draftSync = createDraftSync({\n type: 'intake',\n snapshot: () => {\n const s = this.state();\n if (s.tag !== 'Answering' || !hasProgress(s)) return null;\n return { draft: s, stepIndex: s.cursor, stepCount: STEPS.length, documentIds: [] };\n },\n onResume: (draft) => this.dispatch({ tag: 'Seed', state: (draft as IntakeState | null) ?? initial }),\n enabled: () => this.seed() === initial,\n });\n\n private answering = computed(() => whenTag(this.state(), 'Answering'));\n /** Public so the showcase can render the (fixed) step list next to the wizard. */\n readonly steps = STEPS;\n protected cursor = computed(() => this.answering()?.cursor ?? 0);\n protected answers = computed(() => this.answering()?.answers ?? {});\n protected step = computed(() => STEPS[Math.min(this.cursor(), STEPS.length - 1)]);\n /** Server-owned threshold from the policy endpoint (mirrored into machine state). */\n protected scholingThreshold = computed(() => this.answering()?.scholingThreshold ?? SCHOLING_THRESHOLD_DEFAULT);\n /** Whether the inline scholing question is shown (and required) in the 'werk' step. */\n protected scholingZichtbaar = computed(() => lageUren(this.answers(), this.scholingThreshold()));\n protected failedError = computed(() => whenTag(this.state(), 'Failed')?.error ?? '');\n\n // --- Presentational wiring for the shared wizard shell ---------------------\n readonly stepLabels = [$localize`:@@intake.step.buitenland:Buitenland`, $localize`:@@intake.step.werk:Werk`, $localize`:@@intake.step.controle:Controle`];\n private stepTitles: Record = {\n buitenland: $localize`:@@intake.title.buitenland:Werken in het buitenland`,\n werk: $localize`:@@intake.title.werk:Werkervaring in Nederland`,\n review: $localize`:@@intake.title.review:Controleren en indienen`,\n };\n protected stepTitle = computed(() => this.stepTitles[this.step()]);\n protected primaryLabel = computed(() => (this.step() === 'review' ? $localize`:@@intake.indienen:Aanvraag indienen` : $localize`:@@wizard.volgende:Volgende`));\n protected errorMessage = computed(() => $localize`:@@wizard.indienenMislukt:Indienen mislukt:` + ` ${this.failedError()}`);\n protected shellStatus = computed(() => {\n switch (this.state().tag) {\n case 'Answering': return 'editing';\n case 'Submitting': return 'submitting';\n case 'Submitted': return 'submitted';\n case 'Failed': return 'failed';\n }\n });\n /** Current step's field errors, flattened for the shell's error summary. The\n field ids match the answer keys, so the summary anchors jump to the field. */\n protected errorList = computed(() => {\n const e = this.answering()?.errors ?? {};\n return (Object.keys(e) as (keyof Answers)[])\n .filter((k) => e[k])\n .map((k) => ({ id: k, message: e[k]! }));\n });\n\n protected err = (k: keyof Answers) => this.answering()?.errors[k] ?? '';\n protected set = (key: keyof Answers, value: string) => this.dispatch({ tag: 'SetAnswer', key, value });\n\n constructor() {\n // An explicit seed (stories/tests) wins; otherwise resume the backend draft\n // (`?aanvraag=`) or start fresh. Persistence is the draftSync controller's job.\n const seeded = this.seed();\n queueMicrotask(() => (seeded !== initial ? this.dispatch({ tag: 'Seed', state: seeded }) : this.draftSync.resume()));\n // Apply the server-owned threshold into machine state as it arrives. Track\n // only the policy value; untrack the dispatch (it reads the state signal\n // internally, which would otherwise make this effect loop on its own write).\n effect(() => {\n const scholingThreshold = this.policyRes.value()?.scholingThreshold ?? SCHOLING_THRESHOLD_DEFAULT;\n untracked(() => this.dispatch({ tag: 'SetPolicy', scholingThreshold }));\n });\n }\n\n onPrimary() {\n const s = this.state();\n if (s.tag !== 'Answering') return;\n this.dispatch(this.step() === 'review' ? { tag: 'Submit' } : { tag: 'Next' });\n this.runIfSubmitting();\n }\n\n onRetry() {\n this.dispatch({ tag: 'Retry' });\n this.runIfSubmitting();\n }\n\n restart() {\n this.draftSync.reset();\n this.dispatch({ tag: 'Seed', state: initial });\n }\n\n /** The effect: when we enter Submitting, submit through the aanvraag lifecycle,\n flip the optimistic cross-page flag, then dispatch the outcome (commit/rollback). */\n private async runIfSubmitting() {\n const s = this.state();\n if (s.tag !== 'Submitting') return;\n this.profile.beginHerregistratie();\n const r = await this.draftSync.submit({ uren: s.data.uren });\n if (r.ok) {\n this.dispatch({ tag: 'SubmitConfirmed' });\n this.profile.confirmHerregistratie();\n } else {\n this.dispatch({ tag: 'SubmitFailed', error: r.error });\n this.profile.rollbackHerregistratie();\n }\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [], "line": 178 }, "extends": [] }, { "name": "LinkComponent", "id": "component-LinkComponent-81d97782386b884f56c43d583cbf6d1005dda96974f169366a9af853aeb8b8f4e99f9cce2f9a7ef0fdafce32f51e6049483a44ab35614c486f82535b65ce2818", "file": "src/app/shared/ui/link/link.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-link", "styleUrls": [], "styles": [], "template": "", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "to", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 11, "required": true } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "RouterLink" } ], "description": "

Atom: link. Internal router link styled as an RHC/Utrecht link.

\n", "rawdescription": "\nAtom: link. Internal router link styled as an RHC/Utrecht link.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n/** Atom: link. Internal router link styled as an RHC/Utrecht link. */\n@Component({\n selector: 'app-link',\n imports: [RouterLink],\n template: ``,\n})\nexport class LinkComponent {\n to = input.required();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "LoginFormComponent", "id": "component-LoginFormComponent-a686fcffd7d24f1cfe21f4e6308aa698b319bffdb9ba9dab515953969a0ef53f378dd5c751806cd68c104f5fd89c4eadf6eb8da6796ceafd59501fa4767f29c2", "file": "src/app/auth/ui/login-form/login-form.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-login-form", "styleUrls": [], "styles": [], "template": "
\n \n \n \n\n \n \n \n\n Inloggen met DigiD\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [ { "name": "submitted", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 28, "required": false } ], "propertiesClass": [ { "name": "bsn", "defaultValue": "''", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 26 }, { "name": "password", "defaultValue": "''", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 27 } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "FormsModule", "type": "module" }, { "name": "FormFieldComponent", "type": "component" }, { "name": "TextInputComponent", "type": "component" }, { "name": "ButtonComponent", "type": "component" } ], "description": "

Organism: DigiD-style mock login. No real auth — just composes atoms/molecules.

\n", "rawdescription": "\nOrganism: DigiD-style mock login. No real auth — just composes atoms/molecules.", "type": "component", "sourceCode": "import { Component, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldComponent } from '@shared/ui/form-field/form-field.component';\nimport { TextInputComponent } from '@shared/ui/text-input/text-input.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\n\n/** Organism: DigiD-style mock login. No real auth — just composes atoms/molecules. */\n@Component({\n selector: 'app-login-form',\n imports: [FormsModule, FormFieldComponent, TextInputComponent, ButtonComponent],\n template: `\n
\n \n \n \n\n \n \n \n\n Inloggen met DigiD\n
\n `,\n})\nexport class LoginFormComponent {\n bsn = '';\n password = '';\n submitted = output();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "LoginPage", "id": "component-LoginPage-8360ce09834f323691c650e3c682e57f431504c3660e1269b832feb8fe109f04f5b9e120b6e4fdcf7a06006d42ead8797359133b3354f01545a5175df38a4f11", "file": "src/app/auth/ui/login.page.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-login-page", "styleUrls": [], "styles": [], "template": "\n @if (error()) { {{ error() }} }\n \n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [ { "name": "error", "defaultValue": "signal('')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 22 }, { "name": "router", "defaultValue": "inject(Router)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 21, "modifierKind": [ 123 ] }, { "name": "store", "defaultValue": "inject(SessionStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 20, "modifierKind": [ 123 ] } ], "methodsClass": [ { "name": "login", "args": [ { "name": "bsn", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "any", "typeParameters": [], "line": 24, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 134 ], "jsdoctags": [ { "name": "bsn", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "PageShellComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "LoginFormComponent", "type": "component" } ], "description": "", "rawdescription": "\n", "type": "component", "sourceCode": "import { Component, inject, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { PageShellComponent } from '@shared/layout/page-shell/page-shell.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { LoginFormComponent } from '@auth/ui/login-form/login-form.component';\nimport { SessionStore } from '@auth/application/session.store';\n\n@Component({\n selector: 'app-login-page',\n imports: [PageShellComponent, AlertComponent, LoginFormComponent],\n template: `\n \n @if (error()) { {{ error() }} }\n \n \n `,\n})\nexport class LoginPage {\n private store = inject(SessionStore);\n private router = inject(Router);\n error = signal('');\n\n async login(bsn: string) {\n const r = await this.store.login(bsn);\n if (r.ok) this.router.navigate(['/dashboard']);\n else this.error.set(r.error);\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "PageShellComponent", "id": "component-PageShellComponent-b863d58c6a1bfb770578f4a70b3e9902293ba864ae010d7484b135d15183893c2337adbcf46ee8bf2f492d1096603e8215272b6aa0ca31cc1cec4cfd6fb22734", "file": "src/app/shared/layout/page-shell/page-shell.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-page-shell", "styleUrls": [], "styles": [ "\n :host{display:block}\n .body--narrow{max-inline-size:var(--app-form-narrow)}\n .back{margin:0 0 var(--rhc-space-max-lg)}\n .intro{margin-block:var(--rhc-space-max-md) var(--rhc-space-max-2xl);max-inline-size:42rem;color:var(--rhc-color-foreground-subtle)}\n " ], "template": "
\n @if (backLink()) {\n

← {{ backLabel() }}

\n }\n {{ heading() }}\n @if (intro()) {\n

{{ intro() }}

\n }\n \n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "backLabel", "defaultValue": "$localize`:@@pageShell.backLabel:Terug naar overzicht`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 35, "required": false }, { "name": "backLink", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 34, "required": false }, { "name": "heading", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 32, "required": true }, { "name": "intro", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 33, "required": false }, { "name": "width", "defaultValue": "'default'", "deprecated": false, "deprecationMessage": "", "type": "\"default\" | \"narrow\"", "indexKey": "", "optional": false, "description": "", "line": 36, "required": false } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "HeadingComponent", "type": "component" }, { "name": "LinkComponent", "type": "component" } ], "description": "

Template: standard page body — optional back-link, a heading, optional intro,\nand projected content. The breadcrumb lives in the site header (blue bar), so\nit's not repeated here. Rendered inside the persistent ShellComponent via the\nrouter outlet, so it owns only the content (not chrome).

\n", "rawdescription": "\nTemplate: standard page body — optional back-link, a heading, optional intro,\nand projected content. The breadcrumb lives in the site header (blue bar), so\nit's not repeated here. Rendered inside the persistent ShellComponent via the\nrouter outlet, so it owns only the content (not chrome).", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { HeadingComponent } from '@shared/ui/heading/heading.component';\nimport { LinkComponent } from '@shared/ui/link/link.component';\n\n/** Template: standard page body — optional back-link, a heading, optional intro,\n and projected content. The breadcrumb lives in the site header (blue bar), so\n it's not repeated here. Rendered inside the persistent ShellComponent via the\n router outlet, so it owns only the content (not chrome). */\n@Component({\n selector: 'app-page-shell',\n imports: [HeadingComponent, LinkComponent],\n styles: [`\n :host{display:block}\n .body--narrow{max-inline-size:var(--app-form-narrow)}\n .back{margin:0 0 var(--rhc-space-max-lg)}\n .intro{margin-block:var(--rhc-space-max-md) var(--rhc-space-max-2xl);max-inline-size:42rem;color:var(--rhc-color-foreground-subtle)}\n `],\n template: `\n
\n @if (backLink()) {\n

← {{ backLabel() }}

\n }\n {{ heading() }}\n @if (intro()) {\n

{{ intro() }}

\n }\n \n
\n `,\n})\nexport class PageShellComponent {\n heading = input.required();\n intro = input();\n backLink = input();\n backLabel = input($localize`:@@pageShell.backLabel:Terug naar overzicht`);\n width = input<'default' | 'narrow'>('default');\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .body--narrow{max-inline-size:var(--app-form-narrow)}\n .back{margin:0 0 var(--rhc-space-max-lg)}\n .intro{margin-block:var(--rhc-space-max-md) var(--rhc-space-max-2xl);max-inline-size:42rem;color:var(--rhc-color-foreground-subtle)}\n \n", "extends": [] }, { "name": "RadioGroupComponent", "id": "component-RadioGroupComponent-6203162055a34b4133e76690b148d45884cd1f41bf3d478fb1a54123a7aeb725b01d619611cf73b9807dd8144cc9d276b36a7e8f90d0b3191e1948a4452929fd", "file": "src/app/shared/ui/radio-group/radio-group.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [ { "name": ")" } ], "selector": "app-radio-group", "styleUrls": [], "styles": [ "\n .rhc-radio-option {\n display: flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n }\n " ], "template": "\n @for (opt of options(); track opt.value) {\n \n }\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "invalid", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 57, "required": false }, { "name": "name", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 56, "required": true }, { "name": "options", "deprecated": false, "deprecationMessage": "", "type": "RadioOption[]", "indexKey": "", "optional": false, "description": "", "line": 55, "required": true } ], "outputsClass": [], "propertiesClass": [ { "name": "disabled", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 60 }, { "name": "onChange", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "", "line": 61 }, { "name": "onTouched", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "", "line": 62 }, { "name": "value", "defaultValue": "''", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 59 } ], "methodsClass": [ { "name": "registerOnChange", "args": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ] } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 69, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "tagName": { "text": "param" } } ] }, { "name": "registerOnTouched", "args": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [] } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 70, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [], "tagName": { "text": "param" } } ] }, { "name": "select", "args": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 64, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setDisabledState", "args": [ { "name": "d", "type": "boolean", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 71, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "d", "type": "boolean", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "writeValue", "args": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 68, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: a radio group. Thin wrapper over the Utrecht/RHC radio CSS, wired as a\nform control so it works with ngModel just like the text-input atom.

\n", "rawdescription": "\nAtom: a radio group. Thin wrapper over the Utrecht/RHC radio CSS, wired as a\nform control so it works with ngModel just like the text-input atom.", "type": "component", "sourceCode": "import { Component, forwardRef, input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport interface RadioOption {\n value: string;\n label: string;\n}\n\n/** The ubiquitous yes/no option pair. Language-agnostic now the labels are\n localized, so it lives next to RadioOption and both wizards import it. */\nexport const JA_NEE: RadioOption[] = [\n { value: 'ja', label: $localize`:@@common.ja:Ja` },\n { value: 'nee', label: $localize`:@@common.nee:Nee` },\n];\n\n/** Atom: a radio group. Thin wrapper over the Utrecht/RHC radio CSS, wired as a\n form control so it works with ngModel just like the text-input atom. */\n@Component({\n selector: 'app-radio-group',\n styles: [`\n .rhc-radio-option {\n display: flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n }\n `],\n template: `\n \n @for (opt of options(); track opt.value) {\n \n }\n
\n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true }],\n})\nexport class RadioGroupComponent implements ControlValueAccessor {\n options = input.required();\n name = input.required();\n invalid = input(false);\n\n value = '';\n disabled = false;\n onChange: (v: string) => void = () => {};\n onTouched: () => void = () => {};\n\n select(v: string) {\n this.value = v;\n this.onChange(v);\n }\n writeValue(v: string) { this.value = v ?? ''; }\n registerOnChange(fn: (v: string) => void) { this.onChange = fn; }\n registerOnTouched(fn: () => void) { this.onTouched = fn; }\n setDisabledState(d: boolean) { this.disabled = d; }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n .rhc-radio-option {\n display: flex;\n align-items: center;\n gap: var(--rhc-space-max-md);\n padding-block: var(--rhc-space-max-sm);\n }\n \n", "extends": [], "implements": [ "ControlValueAccessor" ] }, { "name": "RegistratiePage", "id": "component-RegistratiePage-df4e1ca6ac40fac3e82ebc188b2e213e7320f222b9ced7084ed695ce313bc0a654bf1cdff8929f68b9f6e0f4786a31c0edb401bde1cf57be7bcaa9e078b5190f", "file": "src/app/registratie/ui/registratie.page.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-registratie-page", "styleUrls": [], "styles": [], "template": "\n \n In drie stappen schrijft u zich in: uw adres en correspondentievoorkeur, het\n diploma waarmee u zich registreert, en een controle. Uw gegevens blijven bewaard\n als u de pagina herlaadt.\n \n
\n \n
\n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "PageShellComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "RegistratieWizardComponent", "type": "component" } ], "description": "

Page: register in the BIG-register. Built entirely from existing building\nblocks (page shell + alert + the registratie-wizard organism).

\n", "rawdescription": "\nPage: register in the BIG-register. Built entirely from existing building\nblocks (page shell + alert + the registratie-wizard organism).", "type": "component", "sourceCode": "import { Component } from '@angular/core';\nimport { PageShellComponent } from '@shared/layout/page-shell/page-shell.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { RegistratieWizardComponent } from '@registratie/ui/registratie-wizard/registratie-wizard.component';\n\n/** Page: register in the BIG-register. Built entirely from existing building\n blocks (page shell + alert + the registratie-wizard organism). */\n@Component({\n selector: 'app-registratie-page',\n imports: [PageShellComponent, AlertComponent, RegistratieWizardComponent],\n template: `\n \n \n In drie stappen schrijft u zich in: uw adres en correspondentievoorkeur, het\n diploma waarmee u zich registreert, en een controle. Uw gegevens blijven bewaard\n als u de pagina herlaadt.\n \n
\n \n
\n \n `,\n})\nexport class RegistratiePage {}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "RegistratieWizardComponent", "id": "component-RegistratieWizardComponent-6699582faf33f53f52e163a7d6139c619837873bdcde4759036630ad0c8e0a15066f7014e097e562d31c15d08b8ba68c5c5e4fcbd1ccffb7ea60f2c2aecccdc4", "file": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-registratie-wizard", "styleUrls": [], "styles": [], "template": " 0\"\n [errors]=\"errorList()\"\n [errorMessage]=\"errorMessage()\"\n i18n-submittingLabel=\"@@regWizard.submitting\" submittingLabel=\"Uw registratie wordt verwerkt…\"\n (primary)=\"onPrimary()\"\n (back)=\"dispatch({ tag: 'Back' })\"\n (cancel)=\"restart()\"\n (retry)=\"onRetry()\">\n\n @switch (step()) {\n @case ('adres') {\n @if (adresStatus() === 'laden') {\n \n } @else {\n @switch (adresStatus()) {\n @case ('gevonden') {\n Vooraf ingevuld op basis van de BRP. Controleer en pas zo nodig aan.\n }\n @case ('geen') {\n We vonden geen adres in de BRP. Vul uw adres hieronder handmatig in.\n }\n @case ('fout') {\n We konden de BRP nu niet bereiken. Vul uw adres hieronder handmatig in.\n }\n }\n \n \n \n \n @if (draft().correspondentie === 'email') {\n \n \n \n }\n }\n }\n @case ('beroep') {\n \n \n \n \n \n\n @if (handmatigActief()) {\n Een handmatig ingevoerd diploma kan niet automatisch worden geverifieerd. Kies uw beroep en beantwoord de aanvullende vragen; uw aanvraag wordt daarna handmatig beoordeeld.\n \n \n \n } @else if (draft().beroep) {\n
\n \n
\n }\n\n @for (q of actieveVragen($any(data)); track q.id) {\n \n @if (q.type === 'ja-nee') {\n \n } @else {\n \n }\n \n }\n
\n \n \n \n
\n\n \n @if (err('documenten')) {\n {{ err('documenten') }}\n }\n }\n @case ('controle') {\n Controleer uw gegevens en dien de registratie in.\n
\n \n \n \n @if (draft().correspondentie === 'email') {\n \n }\n \n \n @for (item of samenvattingVragen(); track item.vraag) {\n \n }\n
\n
\n Adres wijzigen\n Diploma wijzigen\n
\n }\n }\n\n
\n Uw registratie is ontvangen. Uw referentienummer is {{ referentie() }}. Bewaar dit nummer voor uw administratie.\n
\n Nieuwe registratie starten\n
\n
\n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "seed", "defaultValue": "initial", "deprecated": false, "deprecationMessage": "", "type": "RegistratieState", "indexKey": "", "optional": false, "description": "

Optional seed so Storybook / tests can mount any state directly.

\n", "line": 200, "rawdescription": "\nOptional seed so Storybook / tests can mount any state directly.", "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "actieveVragen", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

The policy questions that apply to the current choice (server-decided).

\n", "line": 314, "rawdescription": "\nThe policy questions that apply to the current choice (server-decided).", "modifierKind": [ 124 ] }, { "name": "adresHerkomstLabel", "defaultValue": "computed(() => ({ brp: $localize`:@@regWizard.herkomst.adresBrp:Automatisch uit de BRP`, handmatig: $localize`:@@regWizard.herkomst.adresHandmatig:Handmatig ingevoerd` }[this.draft().adresHerkomst ?? 'handmatig']))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 263, "modifierKind": [ 124 ] }, { "name": "adresRes", "defaultValue": "this.brp.adresResource()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 196, "modifierKind": [ 124 ] }, { "name": "adresSamenvatting", "defaultValue": "computed(() => {\n const d = this.draft();\n return [d.straat, [d.postcode, d.woonplaats].filter(Boolean).join(' ')].filter(Boolean).join(', ');\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 258, "modifierKind": [ 124 ] }, { "name": "adresStatus", "defaultValue": "computed<'laden' | 'gevonden' | 'geen' | 'fout'>(() => {\n const st = this.adresRes.status();\n if (st === 'loading' || st === 'reloading') return 'laden';\n if (st === 'error') return 'fout';\n const json = this.adresRes.value();\n const parsed = json !== undefined ? parseBrpAddress(json) : null;\n return parsed && parsed.ok && parsed.value.gevonden ? 'gevonden' : 'geen';\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

BRP lookup outcome. A failure or "geen adres" never blocks the wizard — both\nfall back to manual entry (PRD §7). 'geen' covers both no-address-found and a\nmalformed response; 'fout' is an unreachable BRP.

\n", "line": 270, "rawdescription": "\nBRP lookup outcome. A failure or \"geen adres\" never blocks the wizard — both\nfall back to manual entry (PRD §7). 'geen' covers both no-address-found and a\nmalformed response; 'fout' is an unreachable BRP.", "modifierKind": [ 124 ] }, { "name": "beroepOptions", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 311, "modifierKind": [ 124 ] }, { "name": "brp", "defaultValue": "inject(BrpAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 186, "modifierKind": [ 123 ] }, { "name": "correspondentieLabel", "defaultValue": "computed(() => ({ email: $localize`:@@regWizard.corr.email:Per e-mail`, post: $localize`:@@regWizard.corr.post:Per post` }[this.draft().correspondentie ?? 'post']))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 264, "modifierKind": [ 124 ] }, { "name": "cursor", "defaultValue": "computed(() => this.invullen()?.cursor ?? 0)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 209, "modifierKind": [ 124 ] }, { "name": "diplomaHerkomstLabel", "defaultValue": "computed(() => ({ duo: $localize`:@@regWizard.herkomst.diplomaDuo:Geverifieerd via DUO`, handmatig: $localize`:@@regWizard.herkomst.diplomaHandmatig:Handmatig ingevoerd (wordt beoordeeld)` }[this.draft().diplomaHerkomst ?? 'handmatig']))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 265, "modifierKind": [ 124 ] }, { "name": "diplomaKeuze", "defaultValue": "computed(() => (this.handmatigActief() ? HANDMATIG : this.draft().diplomaId ?? ''))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

The radio selection: a diploma id, or the "not listed" sentinel in manual mode.

\n", "line": 304, "rawdescription": "\nThe radio selection: a diploma id, or the \"not listed\" sentinel in manual mode.", "modifierKind": [ 124 ] }, { "name": "diplomaOptions", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 306, "modifierKind": [ 124 ] }, { "name": "diplomasRes", "defaultValue": "this.duo.diplomasResource()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 197, "modifierKind": [ 123 ] }, { "name": "dispatch", "defaultValue": "this.store.dispatch", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 206, "modifierKind": [ 148 ] }, { "name": "draft", "defaultValue": "computed(() => this.invullen()?.draft ?? { antwoorden: {} })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 210, "modifierKind": [ 124 ] }, { "name": "draftSync", "defaultValue": "createDraftSync({\n type: 'registratie',\n snapshot: () => {\n const s = this.state();\n if (s.tag !== 'Invullen' || !hasProgress(s)) return null;\n const documentIds = deliveryRefs(s.upload).filter((r) => r.channel === 'digital' && r.documentId).map((r) => r.documentId!);\n return { draft: s, stepIndex: s.cursor, stepCount: STEPS.length, documentIds };\n },\n onResume: (draft) => this.dispatch({ tag: 'Seed', state: (draft as RegistratieState | null) ?? initial }),\n enabled: () => this.seed() === initial,\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 219, "modifierKind": [ 123 ] }, { "name": "duo", "defaultValue": "inject(DuoAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 187, "modifierKind": [ 123 ] }, { "name": "duoData", "defaultValue": "computed(() => {\n const rd = this.lookupRd();\n return rd.tag === 'Success' ? rd.value : null;\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Parsed lookup as a plain value (or null) — used outside the beroep step (the\ncontrole summary) where the template variable isn't in scope.

\n", "line": 289, "rawdescription": "\nParsed lookup as a plain value (or null) — used outside the beroep step (the\ncontrole summary) where the template variable isn't in scope.", "modifierKind": [ 123 ] }, { "name": "err", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 296, "modifierKind": [ 124 ] }, { "name": "errorList", "defaultValue": "computed(() => {\n const e = this.invullen()?.errors ?? {};\n const out: WizardError[] = [];\n for (const [k, v] of Object.entries(e)) {\n if (k !== 'antwoorden' && typeof v === 'string' && v) out.push({ id: k, message: v });\n }\n for (const [qid, msg] of Object.entries(e.antwoorden ?? {})) {\n if (msg) out.push({ id: 'vraag-' + qid, message: msg });\n }\n return out;\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Current step's errors (incl. per-question), flattened for the error summary.

\n", "line": 247, "rawdescription": "\nCurrent step's errors (incl. per-question), flattened for the error summary.", "modifierKind": [ 124 ] }, { "name": "errorMessage", "defaultValue": "computed(() => $localize`:@@regWizard.indienenMislukt:Het indienen is niet gelukt:` + ` ${this.failedError()}`)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 237, "modifierKind": [ 124 ] }, { "name": "failedError", "defaultValue": "computed(() => whenTag(this.state(), 'Mislukt')?.error ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 233, "modifierKind": [ 124 ] }, { "name": "handmatigActief", "defaultValue": "computed(() => this.draft().diplomaHerkomst === 'handmatig')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

True while the user is entering a diploma manually (not in the DUO list).

\n", "line": 302, "rawdescription": "\nTrue while the user is entering a diploma manually (not in the DUO list).", "modifierKind": [ 124 ] }, { "name": "invullen", "defaultValue": "computed(() => whenTag(this.state(), 'Invullen'))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 208, "modifierKind": [ 123 ] }, { "name": "jaNee", "defaultValue": "JA_NEE", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 294, "modifierKind": [ 148 ] }, { "name": "kanalen", "defaultValue": "KANALEN", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 202, "modifierKind": [ 148 ] }, { "name": "lookupRd", "defaultValue": "computed>(() => {\n const rd = fromResource(this.diplomasRes);\n if (rd.tag !== 'Success') return rd;\n const parsed = parseDuoLookup(rd.value);\n return parsed.ok ? { tag: 'Success', value: parsed.value } : { tag: 'Failure', error: new Error(parsed.error) };\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

The DUO lookup (diplomas + manual fallback), validated at the trust boundary.

\n", "line": 280, "rawdescription": "\nThe DUO lookup (diplomas + manual fallback), validated at the trust boundary.", "modifierKind": [ 124 ] }, { "name": "previewUrlFor", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Preview/download link for a completed upload; the dev-simulation demo-* ids\nhave no stored bytes, so they get no link.

\n", "line": 193, "rawdescription": "\nPreview/download link for a completed upload; the dev-simulation `demo-*` ids\nhave no stored bytes, so they get no link.", "modifierKind": [ 124 ] }, { "name": "primaryLabel", "defaultValue": "computed(() => (this.step() === 'controle' ? $localize`:@@regWizard.indienen:Registratie indienen` : $localize`:@@wizard.volgende:Volgende`))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 236, "modifierKind": [ 124 ] }, { "name": "referentie", "defaultValue": "computed(() => whenTag(this.state(), 'Ingediend')?.referentie ?? '')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 232, "modifierKind": [ 124 ] }, { "name": "samenvattingVragen", "defaultValue": "computed(() => {\n const data = this.duoData();\n const d = this.draft();\n if (!data) return [] as { vraag: string; antwoord: string }[];\n const alle = [...data.diplomas.flatMap((x) => x.policyQuestions), ...data.handmatig.policyQuestions];\n return (d.vraagIds ?? []).map((id) => ({ vraag: alle.find((q) => q.id === id)?.vraag ?? id, antwoord: d.antwoorden[id] ?? '' }));\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Answered policy questions for the controle summary (question text + answer).

\n", "line": 320, "rawdescription": "\nAnswered policy questions for the controle summary (question text + answer).", "modifierKind": [ 124 ] }, { "name": "set", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 298, "modifierKind": [ 124 ] }, { "name": "setKanaal", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 299, "modifierKind": [ 124 ] }, { "name": "shellStatus", "defaultValue": "computed(() => {\n switch (this.state().tag) {\n case 'Invullen': return 'editing';\n case 'Indienen': return 'submitting';\n case 'Ingediend': return 'submitted';\n case 'Mislukt': return 'failed';\n }\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 238, "modifierKind": [ 124 ] }, { "name": "state", "defaultValue": "this.store.model", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 205, "modifierKind": [ 148 ] }, { "name": "step", "defaultValue": "computed(() => STEPS[Math.min(this.cursor(), STEPS.length - 1)])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 230, "modifierKind": [ 124 ] }, { "name": "stepLabels", "defaultValue": "[$localize`:@@regWizard.step.adres:Adres`, $localize`:@@regWizard.step.beroep:Beroep`, $localize`:@@regWizard.step.controle:Controle`]", "deprecated": false, "deprecationMessage": "", "type": "[]", "indexKey": "", "optional": false, "description": "", "line": 203, "modifierKind": [ 148 ] }, { "name": "stepTitle", "defaultValue": "computed(() => this.stepTitles[Math.min(this.cursor(), this.stepTitles.length - 1)])", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 231, "modifierKind": [ 124 ] }, { "name": "stepTitles", "defaultValue": "[$localize`:@@regWizard.title.adres:Adres en correspondentievoorkeur`, $localize`:@@regWizard.title.beroep:Beroep op basis van uw diploma`, $localize`:@@regWizard.title.controle:Controleren en indienen`]", "deprecated": false, "deprecationMessage": "", "type": "[]", "indexKey": "", "optional": false, "description": "", "line": 204, "modifierKind": [ 123 ] }, { "name": "store", "defaultValue": "createStore(initial, reduce)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 189, "modifierKind": [ 123 ] }, { "name": "upload", "defaultValue": "computed(() => this.invullen()?.upload ?? initialUpload)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 211, "modifierKind": [ 124 ] }, { "name": "uploadAdapter", "defaultValue": "inject(UploadAdapter)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 188, "modifierKind": [ 123 ] }, { "name": "uploadCtl", "defaultValue": "createUploadController({\n wizardId: 'registratie',\n getUpload: () => this.upload(),\n dispatch: (msg) => this.dispatch({ tag: 'Upload', msg }),\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 212, "modifierKind": [ 124 ] }, { "name": "vraagErr", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 297, "modifierKind": [ 124 ] } ], "methodsClass": [ { "name": "onDiplomaKeuze", "args": [ { "name": "data", "type": "DuoLookupDto", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 328, "deprecated": false, "deprecationMessage": "", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "data", "type": "DuoLookupDto", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "onPrimary", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 363, "deprecated": false, "deprecationMessage": "" }, { "name": "onRetry", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 370, "deprecated": false, "deprecationMessage": "" }, { "name": "restart", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 377, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nReset the wizard to a fresh start. Reload the BRP lookup so the address\nre-prefills, keeping the form and the \"vooraf ingevuld\" note consistent.", "description": "

Reset the wizard to a fresh start. Reload the BRP lookup so the address\nre-prefills, keeping the form and the "vooraf ingevuld" note consistent.

\n" }, { "name": "runIfIndienen", "args": [], "optional": false, "returnType": "any", "typeParameters": [], "line": 385, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nThe effect: when we enter Indienen, submit through the aanvraag lifecycle\n(duo → auto-approve, handmatig → manual), then dispatch the outcome.", "description": "

The effect: when we enter Indienen, submit through the aanvraag lifecycle\n(duo → auto-approve, handmatig → manual), then dispatch the outcome.

\n", "modifierKind": [ 123, 134 ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "FormsModule", "type": "module" }, { "name": "FormFieldComponent", "type": "component" }, { "name": "TextInputComponent", "type": "component" }, { "name": "RadioGroupComponent", "type": "component" }, { "name": "ButtonComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "SkeletonComponent", "type": "component" }, { "name": "DataRowComponent", "type": "component" }, { "name": "WizardShellComponent", "type": "component" }, { "name": "AddressFieldsComponent", "type": "component" }, { "name": "DocumentUploadComponent", "type": "component" }, { "name": "ASYNC" } ], "description": "

Organism: the BIG-registration wizard. All state lives in one signal driven by\nthe pure reduce (registratie-wizard.machine.ts). The BRP address prefills the\ndraft via an effect; the DUO diploma list renders through ; choosing\na diploma reveals its server-derived beroep. The draft is persisted to the\nbackend as a Concept aanvraag (createDraftSync) so a reload — or a "Verder gaan"\nfrom the dashboard via ?aanvraag=<id> — resumes progress. Built from existing\natoms/molecules.

\n", "rawdescription": "\nOrganism: the BIG-registration wizard. All state lives in one signal driven by\nthe pure `reduce` (registratie-wizard.machine.ts). The BRP address prefills the\ndraft via an effect; the DUO diploma list renders through ; choosing\na diploma reveals its server-derived beroep. The draft is persisted to the\nbackend as a Concept aanvraag (createDraftSync) so a reload — or a \"Verder gaan\"\nfrom the dashboard via `?aanvraag=` — resumes progress. Built from existing\natoms/molecules.", "type": "component", "sourceCode": "import { Component, computed, effect, inject, input, untracked } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { FormFieldComponent } from '@shared/ui/form-field/form-field.component';\nimport { TextInputComponent } from '@shared/ui/text-input/text-input.component';\nimport { RadioGroupComponent, JA_NEE } from '@shared/ui/radio-group/radio-group.component';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component';\nimport { DataRowComponent } from '@shared/ui/data-row/data-row.component';\nimport { WizardShellComponent, WizardError, WizardStatus } from '@shared/layout/wizard-shell/wizard-shell.component';\nimport { ASYNC } from '@shared/ui/async/async.component';\nimport { AddressFieldsComponent } from '@registratie/ui/address-fields/address-fields.component';\nimport { createStore } from '@shared/application/store';\nimport { whenTag } from '@shared/kernel/fp';\nimport { RemoteData, fromResource } from '@shared/application/remote-data';\nimport { BrpAdapter, parseBrpAddress } from '@registratie/infrastructure/brp.adapter';\nimport { DuoAdapter, parseDuoLookup } from '@registratie/infrastructure/duo.adapter';\nimport { DuoLookupDto, PolicyQuestionDto } from '@registratie/contracts/duo-diplomas.dto';\nimport {\n RegistratieState,\n RegistratieMsg,\n Draft,\n DraftField,\n Correspondentie,\n StepId,\n initial,\n reduce,\n hasProgress,\n STEPS,\n} from '@registratie/domain/registratie-wizard.machine';\nimport { createDraftSync } from '@registratie/application/draft-sync';\nimport { DocumentUploadComponent } from '@shared/ui/upload/document-upload/document-upload.component';\nimport { createUploadController } from '@shared/upload/upload-controller';\nimport { UploadAdapter } from '@shared/upload/upload.adapter';\nimport { UploadState, initialUpload, deliveryRefs } from '@shared/upload/upload.machine';\n\nconst KANALEN = [\n { value: 'email', label: $localize`:@@registratie.kanaalEmail:E-mail` },\n { value: 'post', label: $localize`:@@registratie.kanaalPost:Post` },\n];\nconst HANDMATIG = '__handmatig__'; // sentinel option: \"my diploma isn't listed\"\n\n/** Organism: the BIG-registration wizard. All state lives in one signal driven by\n the pure `reduce` (registratie-wizard.machine.ts). The BRP address prefills the\n draft via an effect; the DUO diploma list renders through ; choosing\n a diploma reveals its server-derived beroep. The draft is persisted to the\n backend as a Concept aanvraag (createDraftSync) so a reload — or a \"Verder gaan\"\n from the dashboard via `?aanvraag=` — resumes progress. Built from existing\n atoms/molecules. */\n@Component({\n selector: 'app-registratie-wizard',\n imports: [\n FormsModule, FormFieldComponent, TextInputComponent, RadioGroupComponent, ButtonComponent,\n AlertComponent, SkeletonComponent, DataRowComponent, WizardShellComponent,\n AddressFieldsComponent, DocumentUploadComponent, ...ASYNC,\n ],\n template: `\n 0\"\n [errors]=\"errorList()\"\n [errorMessage]=\"errorMessage()\"\n i18n-submittingLabel=\"@@regWizard.submitting\" submittingLabel=\"Uw registratie wordt verwerkt…\"\n (primary)=\"onPrimary()\"\n (back)=\"dispatch({ tag: 'Back' })\"\n (cancel)=\"restart()\"\n (retry)=\"onRetry()\">\n\n @switch (step()) {\n @case ('adres') {\n @if (adresStatus() === 'laden') {\n \n } @else {\n @switch (adresStatus()) {\n @case ('gevonden') {\n Vooraf ingevuld op basis van de BRP. Controleer en pas zo nodig aan.\n }\n @case ('geen') {\n We vonden geen adres in de BRP. Vul uw adres hieronder handmatig in.\n }\n @case ('fout') {\n We konden de BRP nu niet bereiken. Vul uw adres hieronder handmatig in.\n }\n }\n \n \n \n \n @if (draft().correspondentie === 'email') {\n \n \n \n }\n }\n }\n @case ('beroep') {\n \n \n \n \n \n\n @if (handmatigActief()) {\n Een handmatig ingevoerd diploma kan niet automatisch worden geverifieerd. Kies uw beroep en beantwoord de aanvullende vragen; uw aanvraag wordt daarna handmatig beoordeeld.\n \n \n \n } @else if (draft().beroep) {\n
\n \n
\n }\n\n @for (q of actieveVragen($any(data)); track q.id) {\n \n @if (q.type === 'ja-nee') {\n \n } @else {\n \n }\n \n }\n
\n \n \n \n
\n\n \n @if (err('documenten')) {\n {{ err('documenten') }}\n }\n }\n @case ('controle') {\n Controleer uw gegevens en dien de registratie in.\n
\n \n \n \n @if (draft().correspondentie === 'email') {\n \n }\n \n \n @for (item of samenvattingVragen(); track item.vraag) {\n \n }\n
\n
\n Adres wijzigen\n Diploma wijzigen\n
\n }\n }\n\n
\n Uw registratie is ontvangen. Uw referentienummer is {{ referentie() }}. Bewaar dit nummer voor uw administratie.\n
\n Nieuwe registratie starten\n
\n
\n \n `,\n})\nexport class RegistratieWizardComponent {\n private brp = inject(BrpAdapter);\n private duo = inject(DuoAdapter);\n private uploadAdapter = inject(UploadAdapter);\n private store = createStore(initial, reduce);\n\n /** Preview/download link for a completed upload; the dev-simulation `demo-*` ids\n have no stored bytes, so they get no link. */\n protected previewUrlFor = (documentId: string): string | undefined =>\n documentId.startsWith('demo-') ? undefined : this.uploadAdapter.contentUrl(documentId);\n\n protected adresRes = this.brp.adresResource();\n private diplomasRes = this.duo.diplomasResource();\n\n /** Optional seed so Storybook / tests can mount any state directly. */\n seed = input(initial);\n\n readonly kanalen = KANALEN;\n readonly stepLabels = [$localize`:@@regWizard.step.adres:Adres`, $localize`:@@regWizard.step.beroep:Beroep`, $localize`:@@regWizard.step.controle:Controle`]; // short labels for the stepper\n private stepTitles = [$localize`:@@regWizard.title.adres:Adres en correspondentievoorkeur`, $localize`:@@regWizard.title.beroep:Beroep op basis van uw diploma`, $localize`:@@regWizard.title.controle:Controleren en indienen`];\n readonly state = this.store.model;\n readonly dispatch = this.store.dispatch;\n\n private invullen = computed(() => whenTag(this.state(), 'Invullen'));\n protected cursor = computed(() => this.invullen()?.cursor ?? 0);\n protected draft = computed(() => this.invullen()?.draft ?? { antwoorden: {} });\n protected upload = computed(() => this.invullen()?.upload ?? initialUpload);\n protected uploadCtl = createUploadController({\n wizardId: 'registratie',\n getUpload: () => this.upload(),\n dispatch: (msg) => this.dispatch({ tag: 'Upload', msg }),\n });\n // Backend draft-sync (replaces sessionStorage): create a Concept once the user has\n // made progress, then debounced-sync the whole machine snapshot; resume by `?aanvraag`.\n private draftSync = createDraftSync({\n type: 'registratie',\n snapshot: () => {\n const s = this.state();\n if (s.tag !== 'Invullen' || !hasProgress(s)) return null;\n const documentIds = deliveryRefs(s.upload).filter((r) => r.channel === 'digital' && r.documentId).map((r) => r.documentId!);\n return { draft: s, stepIndex: s.cursor, stepCount: STEPS.length, documentIds };\n },\n onResume: (draft) => this.dispatch({ tag: 'Seed', state: (draft as RegistratieState | null) ?? initial }),\n enabled: () => this.seed() === initial,\n });\n protected step = computed(() => STEPS[Math.min(this.cursor(), STEPS.length - 1)]);\n protected stepTitle = computed(() => this.stepTitles[Math.min(this.cursor(), this.stepTitles.length - 1)]);\n protected referentie = computed(() => whenTag(this.state(), 'Ingediend')?.referentie ?? '');\n protected failedError = computed(() => whenTag(this.state(), 'Mislukt')?.error ?? '');\n\n // --- Presentational wiring for the shared wizard shell ---------------------\n protected primaryLabel = computed(() => (this.step() === 'controle' ? $localize`:@@regWizard.indienen:Registratie indienen` : $localize`:@@wizard.volgende:Volgende`));\n protected errorMessage = computed(() => $localize`:@@regWizard.indienenMislukt:Het indienen is niet gelukt:` + ` ${this.failedError()}`);\n protected shellStatus = computed(() => {\n switch (this.state().tag) {\n case 'Invullen': return 'editing';\n case 'Indienen': return 'submitting';\n case 'Ingediend': return 'submitted';\n case 'Mislukt': return 'failed';\n }\n });\n /** Current step's errors (incl. per-question), flattened for the error summary. */\n protected errorList = computed(() => {\n const e = this.invullen()?.errors ?? {};\n const out: WizardError[] = [];\n for (const [k, v] of Object.entries(e)) {\n if (k !== 'antwoorden' && typeof v === 'string' && v) out.push({ id: k, message: v });\n }\n for (const [qid, msg] of Object.entries(e.antwoorden ?? {})) {\n if (msg) out.push({ id: 'vraag-' + qid, message: msg });\n }\n return out;\n });\n protected adresSamenvatting = computed(() => {\n const d = this.draft();\n return [d.straat, [d.postcode, d.woonplaats].filter(Boolean).join(' ')].filter(Boolean).join(', ');\n });\n // Readable labels for the controle summary (instead of raw enum values).\n protected adresHerkomstLabel = computed(() => ({ brp: $localize`:@@regWizard.herkomst.adresBrp:Automatisch uit de BRP`, handmatig: $localize`:@@regWizard.herkomst.adresHandmatig:Handmatig ingevoerd` }[this.draft().adresHerkomst ?? 'handmatig']));\n protected correspondentieLabel = computed(() => ({ email: $localize`:@@regWizard.corr.email:Per e-mail`, post: $localize`:@@regWizard.corr.post:Per post` }[this.draft().correspondentie ?? 'post']));\n protected diplomaHerkomstLabel = computed(() => ({ duo: $localize`:@@regWizard.herkomst.diplomaDuo:Geverifieerd via DUO`, handmatig: $localize`:@@regWizard.herkomst.diplomaHandmatig:Handmatig ingevoerd (wordt beoordeeld)` }[this.draft().diplomaHerkomst ?? 'handmatig']));\n\n /** BRP lookup outcome. A failure or \"geen adres\" never blocks the wizard — both\n fall back to manual entry (PRD §7). 'geen' covers both no-address-found and a\n malformed response; 'fout' is an unreachable BRP. */\n protected adresStatus = computed<'laden' | 'gevonden' | 'geen' | 'fout'>(() => {\n const st = this.adresRes.status();\n if (st === 'loading' || st === 'reloading') return 'laden';\n if (st === 'error') return 'fout';\n const json = this.adresRes.value();\n const parsed = json !== undefined ? parseBrpAddress(json) : null;\n return parsed && parsed.ok && parsed.value.gevonden ? 'gevonden' : 'geen';\n });\n\n /** The DUO lookup (diplomas + manual fallback), validated at the trust boundary. */\n protected lookupRd = computed>(() => {\n const rd = fromResource(this.diplomasRes);\n if (rd.tag !== 'Success') return rd;\n const parsed = parseDuoLookup(rd.value);\n return parsed.ok ? { tag: 'Success', value: parsed.value } : { tag: 'Failure', error: new Error(parsed.error) };\n });\n\n /** Parsed lookup as a plain value (or null) — used outside the beroep step (the\n controle summary) where the template variable isn't in scope. */\n private duoData = computed(() => {\n const rd = this.lookupRd();\n return rd.tag === 'Success' ? rd.value : null;\n });\n\n readonly jaNee = JA_NEE;\n\n protected err = (k: DraftField | 'correspondentie' | 'diploma' | 'documenten') => this.invullen()?.errors[k] ?? '';\n protected vraagErr = (id: string) => this.invullen()?.errors.antwoorden?.[id] ?? '';\n protected set = (key: DraftField, value: string) => this.dispatch({ tag: 'SetField', key, value });\n protected setKanaal = (value: string) => this.dispatch({ tag: 'SetCorrespondentie', value: value as Correspondentie });\n\n /** True while the user is entering a diploma manually (not in the DUO list). */\n protected handmatigActief = computed(() => this.draft().diplomaHerkomst === 'handmatig');\n /** The radio selection: a diploma id, or the \"not listed\" sentinel in manual mode. */\n protected diplomaKeuze = computed(() => (this.handmatigActief() ? HANDMATIG : this.draft().diplomaId ?? ''));\n\n protected diplomaOptions = (data: DuoLookupDto) => [\n ...data.diplomas.map((d) => ({ value: d.id, label: `${d.naam} — ${d.instelling} (${d.jaar})` })),\n { value: HANDMATIG, label: $localize`:@@regWizard.diplomaNietBij:Mijn diploma staat er niet bij` },\n ];\n\n protected beroepOptions = (data: DuoLookupDto) => data.handmatig.beroepen.map((b) => ({ value: b, label: b }));\n\n /** The policy questions that apply to the current choice (server-decided). */\n protected actieveVragen = (data: DuoLookupDto): PolicyQuestionDto[] => {\n if (this.handmatigActief()) return data.handmatig.policyQuestions;\n return data.diplomas.find((d) => d.id === this.draft().diplomaId)?.policyQuestions ?? [];\n };\n\n /** Answered policy questions for the controle summary (question text + answer). */\n protected samenvattingVragen = computed(() => {\n const data = this.duoData();\n const d = this.draft();\n if (!data) return [] as { vraag: string; antwoord: string }[];\n const alle = [...data.diplomas.flatMap((x) => x.policyQuestions), ...data.handmatig.policyQuestions];\n return (d.vraagIds ?? []).map((id) => ({ vraag: alle.find((q) => q.id === id)?.vraag ?? id, antwoord: d.antwoorden[id] ?? '' }));\n });\n\n protected onDiplomaKeuze(data: DuoLookupDto, id: string) {\n if (id === HANDMATIG) {\n this.dispatch({ tag: 'KiesHandmatig', vraagIds: data.handmatig.policyQuestions.map((q) => q.id) });\n return;\n }\n const d = data.diplomas.find((x) => x.id === id);\n if (d) this.dispatch({ tag: 'KiesDiploma', diplomaId: d.id, beroep: d.beroep, vraagIds: d.policyQuestions.map((q) => q.id) });\n }\n\n constructor() {\n // An explicit seed (stories/tests) wins; otherwise resume from the backend draft\n // (`?aanvraag=`), or start fresh. Persistence is the draftSync controller's job.\n const seeded = this.seed();\n queueMicrotask(() => (seeded !== initial ? this.dispatch({ tag: 'Seed', state: seeded }) : this.draftSync.resume()));\n // Prefill the address from the BRP lookup as it arrives. Track only the resource\n // value; untrack the dispatch (it reads the state signal, which would otherwise\n // make this effect loop on its own write). Don't clobber edits/restored data.\n effect(() => {\n const json = this.adresRes.value();\n if (!json) return;\n const parsed = parseBrpAddress(json);\n untracked(() => {\n const s = this.state();\n if (s.tag !== 'Invullen' || s.draft.straat) return;\n // ponytail: slice 2 handles gevonden === false -> manual entry stays handmatig.\n if (parsed.ok && parsed.value.gevonden && parsed.value.adres) {\n const a = parsed.value.adres;\n this.dispatch({ tag: 'PrefillAdres', straat: a.straat, postcode: a.postcode, woonplaats: a.woonplaats });\n }\n });\n });\n // A11y: focus management (step heading on step change, error summary on a\n // failed submit) now lives in the shared WizardShellComponent.\n }\n\n onPrimary() {\n const s = this.state();\n if (s.tag !== 'Invullen') return;\n this.dispatch(this.step() === 'controle' ? { tag: 'Submit' } : { tag: 'Next' });\n this.runIfIndienen();\n }\n\n onRetry() {\n this.dispatch({ tag: 'Retry' });\n this.runIfIndienen();\n }\n\n /** Reset the wizard to a fresh start. Reload the BRP lookup so the address\n re-prefills, keeping the form and the \"vooraf ingevuld\" note consistent. */\n restart() {\n this.draftSync.reset(); // detach from the old Concept; next progress creates a new one\n this.dispatch({ tag: 'Seed', state: initial });\n this.adresRes.reload();\n }\n\n /** The effect: when we enter Indienen, submit through the aanvraag lifecycle\n (duo → auto-approve, handmatig → manual), then dispatch the outcome. */\n private async runIfIndienen() {\n const s = this.state();\n if (s.tag !== 'Indienen') return;\n const r = await this.draftSync.submit({ diplomaHerkomst: s.data.diplomaHerkomst, documents: s.data.documents });\n if (r.ok) this.dispatch({ tag: 'SubmitConfirmed', referentie: r.value.referentie ?? '' });\n else this.dispatch({ tag: 'SubmitFailed', error: r.error });\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [], "line": 335 }, "extends": [] }, { "name": "RegistrationDetailPage", "id": "component-RegistrationDetailPage-0b50be0253fc369bd6181ffcaccda334bf0cd0da280205bed4f1c09fd7e4543feba7fc28033cce9908257482bf69c50c346656ea4fe232ed7a7ecd61de102b21", "file": "src/app/registratie/ui/registration-detail.page.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-registration-detail-page", "styleUrls": [], "styles": [], "template": "\n \n \n \n \n \n \n \n \n\n
\n \n
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [ { "name": "store", "defaultValue": "inject(BigProfileStore)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 33, "modifierKind": [ 124 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "PageShellComponent", "type": "component" }, { "name": "SkeletonComponent", "type": "component" }, { "name": "ASYNC" }, { "name": "RegistrationSummaryComponent", "type": "component" }, { "name": "ChangeRequestFormComponent", "type": "component" } ], "description": "", "rawdescription": "\n", "type": "component", "sourceCode": "import { Component, inject } from '@angular/core';\nimport { PageShellComponent } from '@shared/layout/page-shell/page-shell.component';\nimport { SkeletonComponent } from '@shared/ui/skeleton/skeleton.component';\nimport { ASYNC } from '@shared/ui/async/async.component';\nimport { RegistrationSummaryComponent } from '@registratie/ui/registration-summary/registration-summary.component';\nimport { ChangeRequestFormComponent } from '@registratie/ui/change-request-form/change-request-form.component';\nimport { BigProfileStore } from '@registratie/application/big-profile.store';\n\n@Component({\n selector: 'app-registration-detail-page',\n imports: [\n PageShellComponent, SkeletonComponent, ...ASYNC,\n RegistrationSummaryComponent, ChangeRequestFormComponent,\n ],\n template: `\n \n \n \n \n \n \n \n \n \n\n
\n \n
\n
\n `,\n})\nexport class RegistrationDetailPage {\n protected store = inject(BigProfileStore);\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "RegistrationSummaryComponent", "id": "component-RegistrationSummaryComponent-d8ecfd76e7748369d4dfa5f2d4d36a4de884f43ab7bb95c4c7983b1e4890cdb0ba10024357a341f7634dd8327f5487a8c2f22188d6e43383b637b1b2a1535ad3", "file": "src/app/registratie/ui/registration-summary/registration-summary.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-registration-summary", "styleUrls": [], "styles": [], "template": "\n
\n \n \n \n \n \n \n \n \n @switch (reg().status.tag) {\n @case ('Geregistreerd') {\n \n }\n @case ('Geschorst') {\n \n \n }\n @case ('Doorgehaald') {\n \n \n }\n }\n
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "reg", "deprecated": false, "deprecationMessage": "", "type": "Registration", "indexKey": "", "optional": false, "description": "", "line": 42, "required": true } ], "outputsClass": [], "propertiesClass": [ { "name": "color", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 44, "modifierKind": [ 124 ] }, { "name": "label", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 43, "modifierKind": [ 124 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "DatePipe", "type": "pipe" }, { "name": "DataRowComponent", "type": "component" }, { "name": "StatusBadgeComponent", "type": "component" }, { "name": "CardComponent", "type": "component" } ], "description": "

Organism: registration summary card. Composes data-row molecules + status-badge atom.

\n", "rawdescription": "\nOrganism: registration summary card. Composes data-row molecules + status-badge atom.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { Registration } from '@registratie/domain/registration';\nimport { statusColor, statusLabel } from '@registratie/domain/registration.policy';\nimport { DataRowComponent } from '@shared/ui/data-row/data-row.component';\nimport { StatusBadgeComponent } from '@shared/ui/status-badge/status-badge.component';\nimport { CardComponent } from '@shared/ui/card/card.component';\n\n/** Organism: registration summary card. Composes data-row molecules + status-badge atom. */\n@Component({\n selector: 'app-registration-summary',\n imports: [DatePipe, DataRowComponent, StatusBadgeComponent, CardComponent],\n template: `\n \n
\n \n \n \n \n \n \n \n \n @switch (reg().status.tag) {\n @case ('Geregistreerd') {\n \n }\n @case ('Geschorst') {\n \n \n }\n @case ('Doorgehaald') {\n \n \n }\n }\n
\n
\n `,\n})\nexport class RegistrationSummaryComponent {\n reg = input.required();\n protected label = () => statusLabel(this.reg().status.tag);\n protected color = () => statusColor(this.reg().status.tag);\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "RegistrationTableComponent", "id": "component-RegistrationTableComponent-1456e903accd17e94b631ad74915c9a021e91caa782c375d193a6122be0bba5651f2698f3d1ace22dd77bffb2ae88d23452874b0ed52cc189da9da4de3c425f6", "file": "src/app/registratie/ui/registration-table/registration-table.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-registration-table", "styleUrls": [], "styles": [], "template": "
\n \n \n \n \n \n \n \n \n \n @for (row of rows(); track row.omschrijving) {\n \n \n \n \n \n }\n \n
TypeOmschrijvingDatum
{{ row.type }}{{ row.omschrijving }}{{ row.datum | date:'mediumDate' }}
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "rows", "deprecated": false, "deprecationMessage": "", "type": "Aantekening[]", "indexKey": "", "optional": false, "description": "", "line": 33, "required": true } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "DatePipe", "type": "pipe" } ], "description": "

Organism: table of specialismen/aantekeningen.

\n", "rawdescription": "\nOrganism: table of specialismen/aantekeningen.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { Aantekening } from '@registratie/domain/registration';\n\n/** Organism: table of specialismen/aantekeningen. */\n@Component({\n selector: 'app-registration-table',\n imports: [DatePipe],\n template: `\n
\n \n \n \n \n \n \n \n \n \n @for (row of rows(); track row.omschrijving) {\n \n \n \n \n \n }\n \n
TypeOmschrijvingDatum
{{ row.type }}{{ row.omschrijving }}{{ row.datum | date:'mediumDate' }}
\n
\n `,\n})\nexport class RegistrationTableComponent {\n rows = input.required();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "ShellComponent", "id": "component-ShellComponent-746a968b2771f790a902663b5441f57f8bc03551dfe1a5fa21b1c1d012352aea187d7f68a30057c479be792e2af94d3d57ed203123f6292ee3c6547de5380638", "file": "src/app/shared/layout/shell/shell.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-shell", "styleUrls": [], "styles": [ "\n :host{display:block}\n .skip{position:absolute;left:var(--app-skip-link-offset)}\n .layout{min-block-size:100vh;align-items:stretch}\n .main{flex:1;inline-size:100%;box-sizing:border-box}\n .content{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-3xl) var(--rhc-space-max-2xl);box-sizing:border-box}\n " ], "template": "Naar de inhoud\n
\n \n
\n
\n \n
\n
\n \n
\n@if (isDev) {\n \n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [ { "name": "isDev", "defaultValue": "isDevMode()", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 36, "modifierKind": [ 124, 148 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "RouterOutlet" }, { "name": "SiteHeaderComponent", "type": "component" }, { "name": "SiteFooterComponent", "type": "component" }, { "name": "DebugStateComponent", "type": "component" } ], "description": "

Template: persistent app chrome. Header + footer mount once; only the routed\ncontent inside changes (and cross-fades — see styles.scss).

\n", "rawdescription": "\nTemplate: persistent app chrome. Header + footer mount once; only the routed\ncontent inside changes (and cross-fades — see styles.scss).", "type": "component", "sourceCode": "import { Component, isDevMode } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { SiteHeaderComponent } from '@shared/layout/site-header/site-header.component';\nimport { SiteFooterComponent } from '@shared/layout/site-footer/site-footer.component';\nimport { DebugStateComponent } from '@shared/ui/debug-state/debug-state.component';\n\n/** Template: persistent app chrome. Header + footer mount once; only the routed\n content inside changes (and cross-fades — see styles.scss). */\n@Component({\n selector: 'app-shell',\n imports: [RouterOutlet, SiteHeaderComponent, SiteFooterComponent, DebugStateComponent],\n styles: [`\n :host{display:block}\n .skip{position:absolute;left:var(--app-skip-link-offset)}\n .layout{min-block-size:100vh;align-items:stretch}\n .main{flex:1;inline-size:100%;box-sizing:border-box}\n .content{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-3xl) var(--rhc-space-max-2xl);box-sizing:border-box}\n `],\n template: `\n Naar de inhoud\n
\n \n
\n
\n \n
\n
\n \n
\n @if (isDev) {\n \n }\n `,\n})\nexport class ShellComponent {\n protected readonly isDev = isDevMode();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .skip{position:absolute;left:var(--app-skip-link-offset)}\n .layout{min-block-size:100vh;align-items:stretch}\n .main{flex:1;inline-size:100%;box-sizing:border-box}\n .content{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-3xl) var(--rhc-space-max-2xl);box-sizing:border-box}\n \n", "extends": [] }, { "name": "SideNavComponent", "id": "component-SideNavComponent-9a0c974f175932b74bac6b9499d52109b91e008e20aad37498229296c31027ce1e8d9451f5e195926b0514ff3961eb9c0632cdf710292f5b143d4233c1358e45", "file": "src/app/shared/layout/side-nav/side-nav.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-side-nav", "styleUrls": [], "styles": [ "\n :host{display:block}\n .list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-xs)}\n .item{\n display:block;\n padding:var(--rhc-space-max-md) var(--rhc-space-max-lg);\n color:var(--rhc-color-foreground-default);\n text-decoration:none;\n border-radius:var(--rhc-border-radius-sm);\n border-inline-start:var(--rhc-border-width-md) solid transparent;\n }\n .item:hover{background:var(--rhc-color-cool-grey-100)}\n .item.active{\n background:var(--rhc-color-lintblauw-100);\n border-inline-start-color:var(--rhc-color-lintblauw-700);\n color:var(--rhc-color-lintblauw-700);\n font-weight:var(--rhc-text-font-weight-semi-bold);\n }\n " ], "template": "\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "ariaLabel", "defaultValue": "$localize`:@@sideNav.aria:Mijn omgeving`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 49, "required": false }, { "name": "items", "deprecated": false, "deprecationMessage": "", "type": "NavItem[]", "indexKey": "", "optional": false, "description": "", "line": 48, "required": true } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "RouterLink" }, { "name": "RouterLinkActive" } ], "description": "

Organism: vertical side navigation for the "Mijn omgeving" portal. The active\nroute is marked with routerLinkActive. Domain-free — the caller supplies the\nitems (English-named shared chrome).

\n", "rawdescription": "\nOrganism: vertical side navigation for the \"Mijn omgeving\" portal. The active\nroute is marked with `routerLinkActive`. Domain-free — the caller supplies the\nitems (English-named shared chrome).", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { RouterLink, RouterLinkActive } from '@angular/router';\n\nexport interface NavItem {\n readonly label: string;\n readonly to: string;\n}\n\n/** Organism: vertical side navigation for the \"Mijn omgeving\" portal. The active\n route is marked with `routerLinkActive`. Domain-free — the caller supplies the\n items (English-named shared chrome). */\n@Component({\n selector: 'app-side-nav',\n imports: [RouterLink, RouterLinkActive],\n styles: [`\n :host{display:block}\n .list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-xs)}\n .item{\n display:block;\n padding:var(--rhc-space-max-md) var(--rhc-space-max-lg);\n color:var(--rhc-color-foreground-default);\n text-decoration:none;\n border-radius:var(--rhc-border-radius-sm);\n border-inline-start:var(--rhc-border-width-md) solid transparent;\n }\n .item:hover{background:var(--rhc-color-cool-grey-100)}\n .item.active{\n background:var(--rhc-color-lintblauw-100);\n border-inline-start-color:var(--rhc-color-lintblauw-700);\n color:var(--rhc-color-lintblauw-700);\n font-weight:var(--rhc-text-font-weight-semi-bold);\n }\n `],\n template: `\n \n `,\n})\nexport class SideNavComponent {\n items = input.required();\n ariaLabel = input($localize`:@@sideNav.aria:Mijn omgeving`);\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-xs)}\n .item{\n display:block;\n padding:var(--rhc-space-max-md) var(--rhc-space-max-lg);\n color:var(--rhc-color-foreground-default);\n text-decoration:none;\n border-radius:var(--rhc-border-radius-sm);\n border-inline-start:var(--rhc-border-width-md) solid transparent;\n }\n .item:hover{background:var(--rhc-color-cool-grey-100)}\n .item.active{\n background:var(--rhc-color-lintblauw-100);\n border-inline-start-color:var(--rhc-color-lintblauw-700);\n color:var(--rhc-color-lintblauw-700);\n font-weight:var(--rhc-text-font-weight-semi-bold);\n }\n \n", "extends": [] }, { "name": "SingleUploadComponent", "id": "component-SingleUploadComponent-432f76299a1d6d60d3b04597214545fc4e6d5bd59538657435310065fb5d24a177e0ecfee20b7d369aaddcdf58e3209535d51a965eb67dc74a0b990d0f5b4ce6", "file": "src/app/shared/ui/upload/single-upload/single-upload.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-single-upload", "styleUrls": [], "styles": [ "\n :host { display: flex; flex-direction: column; gap: var(--rhc-space-max-sm); }\n " ], "template": "\n@if (progressPct() !== null) {\n \n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "previewUrlFor", "deprecated": false, "deprecationMessage": "", "type": "(documentId: string) => string | undefined", "indexKey": "", "optional": false, "description": "

Builds a preview URL for a completed upload's documentId (undefined = no link).

\n", "line": 29, "rawdescription": "\nBuilds a preview URL for a completed upload's documentId (undefined = no link).", "required": false }, { "name": "upload", "deprecated": false, "deprecationMessage": "", "type": "Upload", "indexKey": "", "optional": false, "description": "", "line": 27, "required": true } ], "outputsClass": [ { "name": "remove", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 42, "required": false }, { "name": "retry", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 43, "required": false } ], "propertiesClass": [ { "name": "previewUrl", "defaultValue": "computed(() => {\n const status = this.upload().status;\n return status.type === 'complete' ? this.previewUrlFor()?.(status.documentId) : undefined;\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 37, "modifierKind": [ 124, 148 ] }, { "name": "progressPct", "defaultValue": "computed(() => {\n const status = this.upload().status;\n return status.type === 'uploading' ? status.progressPct : null;\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "

Narrow the status union once, in TS, so the template stays type-safe.

\n", "line": 32, "rawdescription": "\nNarrow the status union once, in TS, so the template stays type-safe.", "modifierKind": [ 124, 148 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "DocumentChipComponent", "type": "component" }, { "name": "UploadProgressBarComponent", "type": "component" } ], "description": "

Molecule: one upload row — its chip plus a progress bar while uploading. Pure UI:\nforwards remove/retry from the chip.

\n", "rawdescription": "\nMolecule: one upload row — its chip plus a progress bar while uploading. Pure UI:\nforwards `remove`/`retry` from the chip.", "type": "component", "sourceCode": "import { Component, computed, input, output } from '@angular/core';\nimport type { Upload } from '@shared/upload/upload.machine';\nimport { DocumentChipComponent } from '../document-chip/document-chip.component';\nimport { UploadProgressBarComponent } from '../upload-progress-bar/upload-progress-bar.component';\n\n/** Molecule: one upload row — its chip plus a progress bar while uploading. Pure UI:\n forwards `remove`/`retry` from the chip. */\n@Component({\n selector: 'app-single-upload',\n imports: [DocumentChipComponent, UploadProgressBarComponent],\n styles: [`\n :host { display: flex; flex-direction: column; gap: var(--rhc-space-max-sm); }\n `],\n template: `\n \n @if (progressPct() !== null) {\n \n }\n `,\n})\nexport class SingleUploadComponent {\n upload = input.required();\n /** Builds a preview URL for a completed upload's documentId (undefined = no link). */\n previewUrlFor = input<(documentId: string) => string | undefined>();\n\n /** Narrow the status union once, in TS, so the template stays type-safe. */\n protected readonly progressPct = computed(() => {\n const status = this.upload().status;\n return status.type === 'uploading' ? status.progressPct : null;\n });\n\n protected readonly previewUrl = computed(() => {\n const status = this.upload().status;\n return status.type === 'complete' ? this.previewUrlFor()?.(status.documentId) : undefined;\n });\n\n remove = output();\n retry = output();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host { display: flex; flex-direction: column; gap: var(--rhc-space-max-sm); }\n \n", "extends": [] }, { "name": "SiteFooterComponent", "id": "component-SiteFooterComponent-9277557434faa066d6b9c9f6015f5cf7b8834a928200b0eaa07dfd703b2c20640f3a1332a46095ee7cc65bd22bb7eb5d289b2640167f47b9150525b6cd5cf74c", "file": "src/app/shared/layout/site-footer/site-footer.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-site-footer", "styleUrls": [], "styles": [ "\n :host{display:block}\n .bar{background:var(--rhc-color-donkerblauw-700);color:var(--rhc-color-foreground-on-primary);margin-block-start:var(--rhc-space-max-5xl);inline-size:100%}\n .inner{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-3xl) var(--rhc-space-max-2xl);box-sizing:border-box;display:flex;gap:var(--rhc-space-max-3xl);flex-wrap:wrap;justify-content:space-between}\n .tagline{font-style:italic;font-weight:var(--rhc-text-font-weight-semi-bold);font-size:var(--rhc-text-font-size-lg);max-inline-size:18rem}\n .ministry{margin-block-start:var(--rhc-space-max-md);font-size:var(--rhc-text-font-size-sm);color:var(--rhc-color-foreground-on-primary)}\n .col h2{margin:0 0 var(--rhc-space-max-md);font-size:var(--rhc-text-font-size-sm);font-weight:var(--rhc-text-font-weight-bold);text-transform:uppercase;letter-spacing:.04em}\n .links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-sm);font-size:var(--rhc-text-font-size-sm)}\n .links a{color:var(--rhc-color-foreground-on-primary);text-decoration:none}\n .links a:hover{text-decoration:underline}\n .meta{inline-size:100%;border-block-start:var(--rhc-border-width-sm) solid var(--rhc-color-lintblauw-600);margin-block-start:var(--rhc-space-max-xl);padding-block-start:var(--rhc-space-max-lg);font-size:var(--rhc-text-font-size-sm);opacity:.85}\n " ], "template": "
\n
\n
\n
De Rijksoverheid. Voor Nederland.
\n
CIBG — Ministerie van Volksgezondheid, Welzijn en Sport
\n
\n \n
Demo / POC — geen echte gegevens.
\n
\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Organism: Rijksoverheid-style site footer — dark-blue, with the\n"De Rijksoverheid. Voor Nederland." tagline, responsible-ministry attribution,\nand a small "Over deze site" link column. ponytail: links point at the real\nrijksoverheid.nl pages, not a fabricated dead-link forest.

\n", "rawdescription": "\nOrganism: Rijksoverheid-style site footer — dark-blue, with the\n\"De Rijksoverheid. Voor Nederland.\" tagline, responsible-ministry attribution,\nand a small \"Over deze site\" link column. ponytail: links point at the real\nrijksoverheid.nl pages, not a fabricated dead-link forest.", "type": "component", "sourceCode": "import { Component } from '@angular/core';\n\n/** Organism: Rijksoverheid-style site footer — dark-blue, with the\n \"De Rijksoverheid. Voor Nederland.\" tagline, responsible-ministry attribution,\n and a small \"Over deze site\" link column. ponytail: links point at the real\n rijksoverheid.nl pages, not a fabricated dead-link forest. */\n@Component({\n selector: 'app-site-footer',\n styles: [`\n :host{display:block}\n .bar{background:var(--rhc-color-donkerblauw-700);color:var(--rhc-color-foreground-on-primary);margin-block-start:var(--rhc-space-max-5xl);inline-size:100%}\n .inner{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-3xl) var(--rhc-space-max-2xl);box-sizing:border-box;display:flex;gap:var(--rhc-space-max-3xl);flex-wrap:wrap;justify-content:space-between}\n .tagline{font-style:italic;font-weight:var(--rhc-text-font-weight-semi-bold);font-size:var(--rhc-text-font-size-lg);max-inline-size:18rem}\n .ministry{margin-block-start:var(--rhc-space-max-md);font-size:var(--rhc-text-font-size-sm);color:var(--rhc-color-foreground-on-primary)}\n .col h2{margin:0 0 var(--rhc-space-max-md);font-size:var(--rhc-text-font-size-sm);font-weight:var(--rhc-text-font-weight-bold);text-transform:uppercase;letter-spacing:.04em}\n .links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-sm);font-size:var(--rhc-text-font-size-sm)}\n .links a{color:var(--rhc-color-foreground-on-primary);text-decoration:none}\n .links a:hover{text-decoration:underline}\n .meta{inline-size:100%;border-block-start:var(--rhc-border-width-sm) solid var(--rhc-color-lintblauw-600);margin-block-start:var(--rhc-space-max-xl);padding-block-start:var(--rhc-space-max-lg);font-size:var(--rhc-text-font-size-sm);opacity:.85}\n `],\n template: `\n
\n
\n
\n
De Rijksoverheid. Voor Nederland.
\n
CIBG — Ministerie van Volksgezondheid, Welzijn en Sport
\n
\n \n
Demo / POC — geen echte gegevens.
\n
\n
\n `,\n})\nexport class SiteFooterComponent {}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .bar{background:var(--rhc-color-donkerblauw-700);color:var(--rhc-color-foreground-on-primary);margin-block-start:var(--rhc-space-max-5xl);inline-size:100%}\n .inner{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-3xl) var(--rhc-space-max-2xl);box-sizing:border-box;display:flex;gap:var(--rhc-space-max-3xl);flex-wrap:wrap;justify-content:space-between}\n .tagline{font-style:italic;font-weight:var(--rhc-text-font-weight-semi-bold);font-size:var(--rhc-text-font-size-lg);max-inline-size:18rem}\n .ministry{margin-block-start:var(--rhc-space-max-md);font-size:var(--rhc-text-font-size-sm);color:var(--rhc-color-foreground-on-primary)}\n .col h2{margin:0 0 var(--rhc-space-max-md);font-size:var(--rhc-text-font-size-sm);font-weight:var(--rhc-text-font-weight-bold);text-transform:uppercase;letter-spacing:.04em}\n .links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-sm);font-size:var(--rhc-text-font-size-sm)}\n .links a{color:var(--rhc-color-foreground-on-primary);text-decoration:none}\n .links a:hover{text-decoration:underline}\n .meta{inline-size:100%;border-block-start:var(--rhc-border-width-sm) solid var(--rhc-color-lintblauw-600);margin-block-start:var(--rhc-space-max-xl);padding-block-start:var(--rhc-space-max-lg);font-size:var(--rhc-text-font-size-sm);opacity:.85}\n \n", "extends": [] }, { "name": "SiteHeaderComponent", "id": "component-SiteHeaderComponent-35a3fcd73778e62ff04f299edaa3cde5490b2800314762ac4b7fe01a68af79246c6fda70c45e0113ac7cb2ec0a81f2405c14a6c2a92a7a1f21f1b2f57ea1042f", "file": "src/app/shared/layout/site-header/site-header.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-site-header", "styleUrls": [], "styles": [ "\n :host{display:block}\n /* Tier 1 — white brand bar */\n .brandbar{background:var(--rhc-color-wit);border-block-end:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);inline-size:100%}\n .brandbar .inner{display:flex;align-items:center;gap:var(--rhc-space-max-xl);max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-lg) var(--rhc-space-max-2xl);box-sizing:border-box}\n .brand{display:flex;align-items:center;gap:var(--rhc-space-max-lg);color:var(--rhc-color-foreground-default);text-decoration:none}\n .mark{display:inline-block;inline-size:var(--rhc-space-max-md);block-size:var(--rhc-space-max-4xl);background:var(--rhc-color-lintblauw-700)}\n .name{font-weight:var(--rhc-text-font-weight-bold);line-height:var(--rhc-text-line-height-sm)}\n .sub{font-weight:var(--rhc-text-font-weight-regular);font-size:var(--rhc-text-font-size-sm);color:var(--rhc-color-foreground-subtle)}\n .session{margin-inline-start:auto;display:flex;align-items:center;gap:var(--rhc-space-max-lg);font-size:var(--rhc-text-font-size-sm)}\n .user{color:var(--rhc-color-foreground-subtle)}\n .logout{background:none;border:0;padding:0;cursor:pointer;color:var(--rhc-color-foreground-link);text-decoration:underline;font:inherit}\n .logout:hover{color:var(--rhc-color-foreground-link-hover)}\n /* Tier 2 — blue breadcrumb bar */\n .navbar{background:var(--rhc-color-lintblauw-700);color:var(--rhc-color-foreground-on-primary);inline-size:100%}\n .navbar .inner{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-md) var(--rhc-space-max-2xl);box-sizing:border-box}\n " ], "template": "
\n
\n \n \n Rijksoverheid
BIG-register
\n
\n {{ subtitle() }}\n @if (session(); as s) {\n \n Ingelogd als {{ s.naam }}\n \n \n }\n
\n
\n@if (trail().length) {\n
\n
\n \n
\n
\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "subtitle", "defaultValue": "$localize`:@@header.subtitle:Mijn omgeving`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 59, "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "router", "defaultValue": "inject(Router)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 61, "modifierKind": [ 123 ] }, { "name": "session", "defaultValue": "computed(() => this.sessionPort?.session() ?? null)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 64, "modifierKind": [ 148 ] }, { "name": "sessionPort", "defaultValue": "inject(SESSION_PORT, { optional: true })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 62, "modifierKind": [ 123 ] }, { "name": "trail", "defaultValue": "computed(() => trailFor(this.url()))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 69, "modifierKind": [ 124 ] }, { "name": "url", "defaultValue": "toSignal(\n this.router.events.pipe(filter((e) => e instanceof NavigationEnd), map(() => this.router.url)),\n { initialValue: this.router.url },\n )", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 65, "modifierKind": [ 123 ] } ], "methodsClass": [ { "name": "logout", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 71, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "RouterLink" }, { "name": "BreadcrumbComponent", "type": "component" } ], "description": "

Organism: Rijksoverheid-style site header. Two tiers, like rijksoverheid.nl:\na white brand bar (wordmark + session/logout) over a lint-blue bar carrying\nthe breadcrumb. ponytail: text wordmark, not the licensed Rijksoverheid logo;\nno search box (no search feature yet).

\n", "rawdescription": "\nOrganism: Rijksoverheid-style site header. Two tiers, like rijksoverheid.nl:\na white brand bar (wordmark + session/logout) over a lint-blue bar carrying\nthe breadcrumb. ponytail: text wordmark, not the licensed Rijksoverheid logo;\nno search box (no search feature yet).", "type": "component", "sourceCode": "import { Component, computed, inject, input } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationEnd, Router, RouterLink } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { SESSION_PORT } from '@shared/application/session.port';\nimport { BreadcrumbComponent } from '@shared/layout/breadcrumb/breadcrumb.component';\nimport { trailFor } from '@shared/layout/breadcrumb/breadcrumb-trail';\n\n/** Organism: Rijksoverheid-style site header. Two tiers, like rijksoverheid.nl:\n a white brand bar (wordmark + session/logout) over a lint-blue bar carrying\n the breadcrumb. ponytail: text wordmark, not the licensed Rijksoverheid logo;\n no search box (no search feature yet). */\n@Component({\n selector: 'app-site-header',\n imports: [RouterLink, BreadcrumbComponent],\n styles: [`\n :host{display:block}\n /* Tier 1 — white brand bar */\n .brandbar{background:var(--rhc-color-wit);border-block-end:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);inline-size:100%}\n .brandbar .inner{display:flex;align-items:center;gap:var(--rhc-space-max-xl);max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-lg) var(--rhc-space-max-2xl);box-sizing:border-box}\n .brand{display:flex;align-items:center;gap:var(--rhc-space-max-lg);color:var(--rhc-color-foreground-default);text-decoration:none}\n .mark{display:inline-block;inline-size:var(--rhc-space-max-md);block-size:var(--rhc-space-max-4xl);background:var(--rhc-color-lintblauw-700)}\n .name{font-weight:var(--rhc-text-font-weight-bold);line-height:var(--rhc-text-line-height-sm)}\n .sub{font-weight:var(--rhc-text-font-weight-regular);font-size:var(--rhc-text-font-size-sm);color:var(--rhc-color-foreground-subtle)}\n .session{margin-inline-start:auto;display:flex;align-items:center;gap:var(--rhc-space-max-lg);font-size:var(--rhc-text-font-size-sm)}\n .user{color:var(--rhc-color-foreground-subtle)}\n .logout{background:none;border:0;padding:0;cursor:pointer;color:var(--rhc-color-foreground-link);text-decoration:underline;font:inherit}\n .logout:hover{color:var(--rhc-color-foreground-link-hover)}\n /* Tier 2 — blue breadcrumb bar */\n .navbar{background:var(--rhc-color-lintblauw-700);color:var(--rhc-color-foreground-on-primary);inline-size:100%}\n .navbar .inner{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-md) var(--rhc-space-max-2xl);box-sizing:border-box}\n `],\n template: `\n
\n
\n \n \n Rijksoverheid
BIG-register
\n
\n {{ subtitle() }}\n @if (session(); as s) {\n \n Ingelogd als {{ s.naam }}\n \n \n }\n
\n
\n @if (trail().length) {\n
\n
\n \n
\n
\n }\n `,\n})\nexport class SiteHeaderComponent {\n subtitle = input($localize`:@@header.subtitle:Mijn omgeving`);\n\n private router = inject(Router);\n private sessionPort = inject(SESSION_PORT, { optional: true });\n\n readonly session = computed(() => this.sessionPort?.session() ?? null);\n private url = toSignal(\n this.router.events.pipe(filter((e) => e instanceof NavigationEnd), map(() => this.router.url)),\n { initialValue: this.router.url },\n );\n protected trail = computed(() => trailFor(this.url()));\n\n logout() {\n this.sessionPort?.logout();\n this.router.navigate(['/login']);\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n /* Tier 1 — white brand bar */\n .brandbar{background:var(--rhc-color-wit);border-block-end:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);inline-size:100%}\n .brandbar .inner{display:flex;align-items:center;gap:var(--rhc-space-max-xl);max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-lg) var(--rhc-space-max-2xl);box-sizing:border-box}\n .brand{display:flex;align-items:center;gap:var(--rhc-space-max-lg);color:var(--rhc-color-foreground-default);text-decoration:none}\n .mark{display:inline-block;inline-size:var(--rhc-space-max-md);block-size:var(--rhc-space-max-4xl);background:var(--rhc-color-lintblauw-700)}\n .name{font-weight:var(--rhc-text-font-weight-bold);line-height:var(--rhc-text-line-height-sm)}\n .sub{font-weight:var(--rhc-text-font-weight-regular);font-size:var(--rhc-text-font-size-sm);color:var(--rhc-color-foreground-subtle)}\n .session{margin-inline-start:auto;display:flex;align-items:center;gap:var(--rhc-space-max-lg);font-size:var(--rhc-text-font-size-sm)}\n .user{color:var(--rhc-color-foreground-subtle)}\n .logout{background:none;border:0;padding:0;cursor:pointer;color:var(--rhc-color-foreground-link);text-decoration:underline;font:inherit}\n .logout:hover{color:var(--rhc-color-foreground-link-hover)}\n /* Tier 2 — blue breadcrumb bar */\n .navbar{background:var(--rhc-color-lintblauw-700);color:var(--rhc-color-foreground-on-primary);inline-size:100%}\n .navbar .inner{max-inline-size:var(--app-content-max);margin-inline:auto;padding:var(--rhc-space-max-md) var(--rhc-space-max-2xl);box-sizing:border-box}\n \n", "extends": [] }, { "name": "SkeletonComponent", "id": "component-SkeletonComponent-d2768b972782fa90a72f8142960ff79ff9f04fc345e50775c982bcb5f646c5b14d64c013ee0cd03616032c9789e8d6cb3829cee2d296fb2c573d693d0d419fc7", "file": "src/app/shared/ui/skeleton/skeleton.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-skeleton", "styleUrls": [], "styles": [ "\n :host{display:block}\n .sk{background:linear-gradient(90deg,var(--rhc-color-cool-grey-200) 25%,var(--rhc-color-cool-grey-100) 37%,var(--rhc-color-cool-grey-200) 63%);\n background-size:400% 100%;animation:sh 1.4s ease infinite;border-radius:var(--rhc-border-radius-md);\n margin-block-end:var(--rhc-space-max-lg)}\n @keyframes sh{0%{background-position:100% 0}100%{background-position:0 0}}\n " ], "template": "@if (visible()) {\n @for (l of lines(); track $index) {\n
\n }\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "count", "defaultValue": "1", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 25, "required": false }, { "name": "delay", "defaultValue": "150", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 26, "required": false }, { "name": "height", "defaultValue": "'1rem'", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 24, "required": false }, { "name": "width", "defaultValue": "'100%'", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 23, "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "lines", "defaultValue": "computed(() => Array(this.count()).fill(0))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 28, "modifierKind": [ 124 ] }, { "name": "timer", "deprecated": false, "deprecationMessage": "", "type": "ReturnType", "indexKey": "", "optional": true, "description": "", "line": 29, "modifierKind": [ 123 ] }, { "name": "visible", "defaultValue": "signal(false)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 27, "modifierKind": [ 124 ] } ], "methodsClass": [ { "name": "ngOnDestroy", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 32, "deprecated": false, "deprecationMessage": "" }, { "name": "ngOnInit", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 31, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: skeleton placeholder (grey shimmer). Delay-gated so it never flashes\non fast responses. Render count lines shaped roughly like the content.

\n", "rawdescription": "\nAtom: skeleton placeholder (grey shimmer). Delay-gated so it never flashes\non fast responses. Render `count` lines shaped roughly like the content.", "type": "component", "sourceCode": "import { Component, OnDestroy, OnInit, computed, input, signal } from '@angular/core';\n\n/** Atom: skeleton placeholder (grey shimmer). Delay-gated so it never flashes\n on fast responses. Render `count` lines shaped roughly like the content. */\n@Component({\n selector: 'app-skeleton',\n styles: [`\n :host{display:block}\n .sk{background:linear-gradient(90deg,var(--rhc-color-cool-grey-200) 25%,var(--rhc-color-cool-grey-100) 37%,var(--rhc-color-cool-grey-200) 63%);\n background-size:400% 100%;animation:sh 1.4s ease infinite;border-radius:var(--rhc-border-radius-md);\n margin-block-end:var(--rhc-space-max-lg)}\n @keyframes sh{0%{background-position:100% 0}100%{background-position:0 0}}\n `],\n template: `\n @if (visible()) {\n @for (l of lines(); track $index) {\n
\n }\n }\n `,\n})\nexport class SkeletonComponent implements OnInit, OnDestroy {\n width = input('100%');\n height = input('1rem');\n count = input(1);\n delay = input(150);\n protected visible = signal(false);\n protected lines = computed(() => Array(this.count()).fill(0));\n private timer?: ReturnType;\n\n ngOnInit() { this.timer = setTimeout(() => this.visible.set(true), this.delay()); }\n ngOnDestroy() { clearTimeout(this.timer); }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .sk{background:linear-gradient(90deg,var(--rhc-color-cool-grey-200) 25%,var(--rhc-color-cool-grey-100) 37%,var(--rhc-color-cool-grey-200) 63%);\n background-size:400% 100%;animation:sh 1.4s ease infinite;border-radius:var(--rhc-border-radius-md);\n margin-block-end:var(--rhc-space-max-lg)}\n @keyframes sh{0%{background-position:100% 0}100%{background-position:0 0}}\n \n", "extends": [], "implements": [ "OnInit", "OnDestroy" ] }, { "name": "SpinnerComponent", "id": "component-SpinnerComponent-8d0c8af4a5bb0383f4ea3446e6e05c6c5f82642ff439a6fc7344372cf065e6808f080d311c669647e9f7cf7ecbe499b7b59804eda2389dcc31696fe5e603699f", "file": "src/app/shared/ui/spinner/spinner.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-spinner", "styleUrls": [], "styles": [ "\n :host{display:block}\n .sp{inline-size:var(--rhc-space-max-3xl);block-size:var(--rhc-space-max-3xl);border-radius:var(--rhc-border-radius-round);\n border:var(--rhc-space-max-xs) solid var(--rhc-color-cool-grey-300);\n border-block-start-color:var(--rhc-color-lintblauw-700);\n animation:sp 0.8s linear infinite;margin:var(--rhc-space-max-2xl) auto}\n @keyframes sp{to{transform:rotate(360deg)}}\n " ], "template": "@if (visible()) {\n
\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "delay", "defaultValue": "250", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 22, "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "timer", "deprecated": false, "deprecationMessage": "", "type": "ReturnType", "indexKey": "", "optional": true, "description": "", "line": 24, "modifierKind": [ 123 ] }, { "name": "visible", "defaultValue": "signal(false)", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 23, "modifierKind": [ 124 ] } ], "methodsClass": [ { "name": "ngOnDestroy", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 27, "deprecated": false, "deprecationMessage": "" }, { "name": "ngOnInit", "args": [], "optional": false, "returnType": "void", "typeParameters": [], "line": 26, "deprecated": false, "deprecationMessage": "" } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: spinner that only appears after delay ms — fast responses never\nflash a spinner, slow ones get feedback.

\n", "rawdescription": "\nAtom: spinner that only appears after `delay` ms — fast responses never\nflash a spinner, slow ones get feedback.", "type": "component", "sourceCode": "import { Component, OnDestroy, OnInit, input, signal } from '@angular/core';\n\n/** Atom: spinner that only appears after `delay` ms — fast responses never\n flash a spinner, slow ones get feedback. */\n@Component({\n selector: 'app-spinner',\n styles: [`\n :host{display:block}\n .sp{inline-size:var(--rhc-space-max-3xl);block-size:var(--rhc-space-max-3xl);border-radius:var(--rhc-border-radius-round);\n border:var(--rhc-space-max-xs) solid var(--rhc-color-cool-grey-300);\n border-block-start-color:var(--rhc-color-lintblauw-700);\n animation:sp 0.8s linear infinite;margin:var(--rhc-space-max-2xl) auto}\n @keyframes sp{to{transform:rotate(360deg)}}\n `],\n template: `\n @if (visible()) {\n
\n }\n `,\n})\nexport class SpinnerComponent implements OnInit, OnDestroy {\n delay = input(250);\n protected visible = signal(false);\n private timer?: ReturnType;\n\n ngOnInit() { this.timer = setTimeout(() => this.visible.set(true), this.delay()); }\n ngOnDestroy() { clearTimeout(this.timer); }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .sp{inline-size:var(--rhc-space-max-3xl);block-size:var(--rhc-space-max-3xl);border-radius:var(--rhc-border-radius-round);\n border:var(--rhc-space-max-xs) solid var(--rhc-color-cool-grey-300);\n border-block-start-color:var(--rhc-color-lintblauw-700);\n animation:sp 0.8s linear infinite;margin:var(--rhc-space-max-2xl) auto}\n @keyframes sp{to{transform:rotate(360deg)}}\n \n", "extends": [], "implements": [ "OnInit", "OnDestroy" ] }, { "name": "StatusBadgeComponent", "id": "component-StatusBadgeComponent-d676e2f81945ad5a6ae182822c7739effac5631c595651ab0ece77aa868063dc41d50d27773dc7448d1c5267030644b434bbd609600127ba78b4237e371066c6", "file": "src/app/shared/ui/status-badge/status-badge.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-status-badge", "styleUrls": [], "styles": [ ".badge{display:inline-flex;align-items:center;gap:var(--rhc-space-max-md)}" ], "template": "\n \n {{ label() }}\n\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "color", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 18, "required": true }, { "name": "label", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 17, "required": true } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: a coloured dot + label. Purely presentational and domain-free — the\ncaller decides what colour and label mean (e.g. via registration.policy).\nThis keeps the shared UI kernel free of any domain knowledge.

\n", "rawdescription": "\nAtom: a coloured dot + label. Purely presentational and domain-free — the\ncaller decides what colour and label mean (e.g. via registration.policy).\nThis keeps the shared UI kernel free of any domain knowledge.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\n\n/** Atom: a coloured dot + label. Purely presentational and domain-free — the\n caller decides what colour and label mean (e.g. via registration.policy).\n This keeps the shared UI kernel free of any domain knowledge. */\n@Component({\n selector: 'app-status-badge',\n styles: [`.badge{display:inline-flex;align-items:center;gap:var(--rhc-space-max-md)}`],\n template: `\n \n \n {{ label() }}\n \n `,\n})\nexport class StatusBadgeComponent {\n label = input.required();\n color = input.required();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": ".badge{display:inline-flex;align-items:center;gap:var(--rhc-space-max-md)}\n", "extends": [] }, { "name": "StepperComponent", "id": "component-StepperComponent-d75583b2e9c1502dec4aeeb7aae521c12cc920db861cf649f72040b83361ee60caef4b553eaccb5bdfdf16c79fc7e5db584f3c99d9db15052a631320735fce16", "file": "src/app/shared/ui/stepper/stepper.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-stepper", "styleUrls": [], "styles": [ "\n :host{display:block}\n .sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n .steps{display:flex;list-style:none;margin:0;padding:0}\n .step{\n flex:1 1 0;min-inline-size:0;position:relative;\n display:flex;flex-direction:column;align-items:center;gap:var(--rhc-space-max-sm);\n text-align:center;color:var(--rhc-color-foreground-subtle);\n }\n /* connector line to the previous step, drawn behind the circles */\n .step::before{\n content:'';position:absolute;z-index:0;\n inset-block-start:calc(var(--rhc-space-max-4xl) / 2);\n inset-inline-start:-50%;inline-size:100%;block-size:var(--rhc-border-width-md);\n background:var(--rhc-color-cool-grey-300);\n }\n .step:first-child::before{display:none}\n .step--done::before,.step--current::before{background:var(--rhc-color-lintblauw-500)}\n .num{\n position:relative;z-index:1;display:grid;place-items:center;\n inline-size:var(--rhc-space-max-4xl);block-size:var(--rhc-space-max-4xl);\n border-radius:var(--rhc-border-radius-round);\n border:var(--rhc-border-width-md) solid var(--rhc-color-cool-grey-300);\n background:var(--rhc-color-wit);\n font-weight:var(--rhc-text-font-weight-bold);\n }\n .label{font-size:var(--rhc-text-font-size-sm);padding-inline:var(--rhc-space-max-sm)}\n .step--done .num{background:var(--rhc-color-lintblauw-500);border-color:var(--rhc-color-lintblauw-500);color:var(--rhc-color-foreground-on-primary)}\n .step--current{color:var(--rhc-color-foreground-default)}\n .step--current .num{background:var(--rhc-color-lintblauw-700);border-color:var(--rhc-color-lintblauw-700);color:var(--rhc-color-foreground-on-primary)}\n .step--current .label{font-weight:var(--rhc-text-font-weight-semi-bold)}\n " ], "template": "\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "current", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 60, "required": true }, { "name": "steps", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": false, "description": "", "line": 59, "required": true } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Molecule: a horizontal step indicator for a multi-step flow. Visual progress\nplus accessible semantics — an ordered list with aria-current="step" on the\nactive step and a visually-hidden "Stap X van Y" summary. Domain-free.

\n", "rawdescription": "\nMolecule: a horizontal step indicator for a multi-step flow. Visual progress\nplus accessible semantics — an ordered list with `aria-current=\"step\"` on the\nactive step and a visually-hidden \"Stap X van Y\" summary. Domain-free.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\n\n/** Molecule: a horizontal step indicator for a multi-step flow. Visual progress\n plus accessible semantics — an ordered list with `aria-current=\"step\"` on the\n active step and a visually-hidden \"Stap X van Y\" summary. Domain-free. */\n@Component({\n selector: 'app-stepper',\n styles: [`\n :host{display:block}\n .sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n .steps{display:flex;list-style:none;margin:0;padding:0}\n .step{\n flex:1 1 0;min-inline-size:0;position:relative;\n display:flex;flex-direction:column;align-items:center;gap:var(--rhc-space-max-sm);\n text-align:center;color:var(--rhc-color-foreground-subtle);\n }\n /* connector line to the previous step, drawn behind the circles */\n .step::before{\n content:'';position:absolute;z-index:0;\n inset-block-start:calc(var(--rhc-space-max-4xl) / 2);\n inset-inline-start:-50%;inline-size:100%;block-size:var(--rhc-border-width-md);\n background:var(--rhc-color-cool-grey-300);\n }\n .step:first-child::before{display:none}\n .step--done::before,.step--current::before{background:var(--rhc-color-lintblauw-500)}\n .num{\n position:relative;z-index:1;display:grid;place-items:center;\n inline-size:var(--rhc-space-max-4xl);block-size:var(--rhc-space-max-4xl);\n border-radius:var(--rhc-border-radius-round);\n border:var(--rhc-border-width-md) solid var(--rhc-color-cool-grey-300);\n background:var(--rhc-color-wit);\n font-weight:var(--rhc-text-font-weight-bold);\n }\n .label{font-size:var(--rhc-text-font-size-sm);padding-inline:var(--rhc-space-max-sm)}\n .step--done .num{background:var(--rhc-color-lintblauw-500);border-color:var(--rhc-color-lintblauw-500);color:var(--rhc-color-foreground-on-primary)}\n .step--current{color:var(--rhc-color-foreground-default)}\n .step--current .num{background:var(--rhc-color-lintblauw-700);border-color:var(--rhc-color-lintblauw-700);color:var(--rhc-color-foreground-on-primary)}\n .step--current .label{font-weight:var(--rhc-text-font-weight-semi-bold)}\n `],\n template: `\n \n `,\n})\nexport class StepperComponent {\n steps = input.required();\n current = input.required();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n .steps{display:flex;list-style:none;margin:0;padding:0}\n .step{\n flex:1 1 0;min-inline-size:0;position:relative;\n display:flex;flex-direction:column;align-items:center;gap:var(--rhc-space-max-sm);\n text-align:center;color:var(--rhc-color-foreground-subtle);\n }\n /* connector line to the previous step, drawn behind the circles */\n .step::before{\n content:'';position:absolute;z-index:0;\n inset-block-start:calc(var(--rhc-space-max-4xl) / 2);\n inset-inline-start:-50%;inline-size:100%;block-size:var(--rhc-border-width-md);\n background:var(--rhc-color-cool-grey-300);\n }\n .step:first-child::before{display:none}\n .step--done::before,.step--current::before{background:var(--rhc-color-lintblauw-500)}\n .num{\n position:relative;z-index:1;display:grid;place-items:center;\n inline-size:var(--rhc-space-max-4xl);block-size:var(--rhc-space-max-4xl);\n border-radius:var(--rhc-border-radius-round);\n border:var(--rhc-border-width-md) solid var(--rhc-color-cool-grey-300);\n background:var(--rhc-color-wit);\n font-weight:var(--rhc-text-font-weight-bold);\n }\n .label{font-size:var(--rhc-text-font-size-sm);padding-inline:var(--rhc-space-max-sm)}\n .step--done .num{background:var(--rhc-color-lintblauw-500);border-color:var(--rhc-color-lintblauw-500);color:var(--rhc-color-foreground-on-primary)}\n .step--current{color:var(--rhc-color-foreground-default)}\n .step--current .num{background:var(--rhc-color-lintblauw-700);border-color:var(--rhc-color-lintblauw-700);color:var(--rhc-color-foreground-on-primary)}\n .step--current .label{font-weight:var(--rhc-text-font-weight-semi-bold)}\n \n", "extends": [] }, { "name": "TaskListComponent", "id": "component-TaskListComponent-0de17745750573b2f302d6355409064bc5a2cd3835cbb67b5935992409efa3154c91acd23eea7fe469c1837582f24c0d8b14aa8bad0761bd63e1231b2cd427a4", "file": "src/app/shared/ui/task-list/task-list.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-task-list", "styleUrls": [], "styles": [ "\n :host{display:block}\n .tasks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-md)}\n .task{\n display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md) var(--rhc-space-max-xl);\n align-items:center;justify-content:space-between;\n background:var(--rhc-color-wit);\n border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-inline-start:var(--rhc-border-width-md) solid var(--rhc-color-lintblauw-700);\n border-radius:var(--rhc-border-radius-md);\n padding:var(--rhc-space-max-lg) var(--rhc-space-max-xl);\n }\n .title{margin:0 0 var(--rhc-space-max-xs);font-weight:var(--rhc-text-font-weight-semi-bold)}\n .desc{margin:0;color:var(--rhc-color-foreground-subtle);font-size:var(--rhc-text-font-size-sm)}\n .cta{flex:0 0 auto}\n " ], "template": "
    \n @for (t of tasks(); track t.title) {\n
  • \n
    \n

    {{ t.title }}

    \n

    {{ t.description }}

    \n
    \n {{ t.actionLabel }} →\n
  • \n }\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "tasks", "deprecated": false, "deprecationMessage": "", "type": "readonly TaskItem[]", "indexKey": "", "optional": false, "description": "", "line": 50, "required": true } ], "outputsClass": [], "propertiesClass": [], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "LinkComponent", "type": "component" } ], "description": "

Molecule: the "Wat moet ik regelen" action list (NL Design System "Mijn\nomgeving" pattern). Each task is a titled row with a call to action.

\n", "rawdescription": "\nMolecule: the \"Wat moet ik regelen\" action list (NL Design System \"Mijn\nomgeving\" pattern). Each task is a titled row with a call to action.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\nimport { LinkComponent } from '@shared/ui/link/link.component';\n\n/** Presentational task shape — what \"Wat moet ik regelen\" renders. Domain-free so\n shared/ stays independent of any context (a context's task type that has these\n fields is structurally assignable). */\nexport interface TaskItem {\n readonly title: string;\n readonly description: string;\n readonly to: string;\n readonly actionLabel: string;\n}\n\n/** Molecule: the \"Wat moet ik regelen\" action list (NL Design System \"Mijn\n omgeving\" pattern). Each task is a titled row with a call to action. */\n@Component({\n selector: 'app-task-list',\n imports: [LinkComponent],\n styles: [`\n :host{display:block}\n .tasks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-md)}\n .task{\n display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md) var(--rhc-space-max-xl);\n align-items:center;justify-content:space-between;\n background:var(--rhc-color-wit);\n border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-inline-start:var(--rhc-border-width-md) solid var(--rhc-color-lintblauw-700);\n border-radius:var(--rhc-border-radius-md);\n padding:var(--rhc-space-max-lg) var(--rhc-space-max-xl);\n }\n .title{margin:0 0 var(--rhc-space-max-xs);font-weight:var(--rhc-text-font-weight-semi-bold)}\n .desc{margin:0;color:var(--rhc-color-foreground-subtle);font-size:var(--rhc-text-font-size-sm)}\n .cta{flex:0 0 auto}\n `],\n template: `\n
    \n @for (t of tasks(); track t.title) {\n
  • \n
    \n

    {{ t.title }}

    \n

    {{ t.description }}

    \n
    \n {{ t.actionLabel }} →\n
  • \n }\n
\n `,\n})\nexport class TaskListComponent {\n tasks = input.required();\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n .tasks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--rhc-space-max-md)}\n .task{\n display:flex;flex-wrap:wrap;gap:var(--rhc-space-max-md) var(--rhc-space-max-xl);\n align-items:center;justify-content:space-between;\n background:var(--rhc-color-wit);\n border:var(--rhc-border-width-sm) solid var(--rhc-color-border-subtle);\n border-inline-start:var(--rhc-border-width-md) solid var(--rhc-color-lintblauw-700);\n border-radius:var(--rhc-border-radius-md);\n padding:var(--rhc-space-max-lg) var(--rhc-space-max-xl);\n }\n .title{margin:0 0 var(--rhc-space-max-xs);font-weight:var(--rhc-text-font-weight-semi-bold)}\n .desc{margin:0;color:var(--rhc-color-foreground-subtle);font-size:var(--rhc-text-font-size-sm)}\n .cta{flex:0 0 auto}\n \n", "extends": [] }, { "name": "TextInputComponent", "id": "component-TextInputComponent-0e6897888b2e40769cd04df49da0c12c685fecc687185c0e3995862e60c9e55cce5d47721c3bedc8ce874c717eee9c94252fe007d5943446bf57b4d6fe7ee93a", "file": "src/app/shared/ui/text-input/text-input.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [ { "name": ")" } ], "selector": "app-text-input", "styleUrls": [], "styles": [ "\n :host{display:block}\n input{inline-size:100%;box-sizing:border-box}\n " ], "template": "\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "inputId", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 31, "required": false }, { "name": "invalid", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 30, "required": false }, { "name": "placeholder", "defaultValue": "''", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 29, "required": false }, { "name": "type", "defaultValue": "'text'", "deprecated": false, "deprecationMessage": "", "type": "\"text\" | \"password\" | \"email\"", "indexKey": "", "optional": false, "description": "", "line": 28, "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "disabled", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 34 }, { "name": "onChange", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "", "line": 35 }, { "name": "onTouched", "defaultValue": "() => {...}", "deprecated": false, "deprecationMessage": "", "type": "function", "indexKey": "", "optional": false, "description": "", "line": 36 }, { "name": "value", "defaultValue": "''", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 33 } ], "methodsClass": [ { "name": "onInput", "args": [ { "name": "e", "type": "Event", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 38, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "e", "type": "Event", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "registerOnChange", "args": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ] } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 43, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "tagName": { "text": "param" } } ] }, { "name": "registerOnTouched", "args": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [] } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 44, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "fn", "type": "function", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "function": [], "tagName": { "text": "param" } } ] }, { "name": "setDisabledState", "args": [ { "name": "d", "type": "boolean", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 45, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "d", "type": "boolean", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "writeValue", "args": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 42, "deprecated": false, "deprecationMessage": "", "jsdoctags": [ { "name": "v", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: text input. Utrecht textbox wired up as a form control (ngModel/reactive).

\n", "rawdescription": "\nAtom: text input. Utrecht textbox wired up as a form control (ngModel/reactive).", "type": "component", "sourceCode": "import { Component, forwardRef, input } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/** Atom: text input. Utrecht textbox wired up as a form control (ngModel/reactive). */\n@Component({\n selector: 'app-text-input',\n styles: [`\n :host{display:block}\n input{inline-size:100%;box-sizing:border-box}\n `],\n template: `\n \n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextInputComponent), multi: true }],\n})\nexport class TextInputComponent implements ControlValueAccessor {\n type = input<'text' | 'password' | 'email'>('text');\n placeholder = input('');\n invalid = input(false);\n inputId = input();\n\n value = '';\n disabled = false;\n onChange: (v: string) => void = () => {};\n onTouched: () => void = () => {};\n\n onInput(e: Event) {\n this.value = (e.target as HTMLInputElement).value;\n this.onChange(this.value);\n }\n writeValue(v: string) { this.value = v ?? ''; }\n registerOnChange(fn: (v: string) => void) { this.onChange = fn; }\n registerOnTouched(fn: () => void) { this.onTouched = fn; }\n setDisabledState(d: boolean) { this.disabled = d; }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host{display:block}\n input{inline-size:100%;box-sizing:border-box}\n \n", "extends": [], "implements": [ "ControlValueAccessor" ] }, { "name": "UploadProgressBarComponent", "id": "component-UploadProgressBarComponent-c7954b5fe8ca64e3554479c2677f523b46486b0b6ac132beef94a068b90b0e3647a74fe452cb3152a121b546b2a3dd5ea8fadd9ffcdbcaef039c826ac98fb0e6", "file": "src/app/shared/ui/upload/upload-progress-bar/upload-progress-bar.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-upload-progress-bar", "styleUrls": [], "styles": [ "\n :host { display: flex; align-items: center; gap: var(--rhc-space-max-md); }\n progress { flex: 1; height: var(--rhc-space-max-md); }\n .pct { font-size: var(--rhc-text-font-size-sm); color: var(--rhc-color-foreground-subtle); min-width: 3ch; text-align: end; }\n " ], "template": "\n{{ progressPct() }}%\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "progressPct", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 21, "required": true } ], "outputsClass": [], "propertiesClass": [ { "name": "progressLabel", "defaultValue": "$localize`:@@upload.progress.label:Uploadvoortgang`", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 23, "modifierKind": [ 124, 148 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: native progress bar for an in-flight upload. Pure UI — the caller supplies\nthe percentage.

\n", "rawdescription": "\nAtom: native progress bar for an in-flight upload. Pure UI — the caller supplies\nthe percentage.", "type": "component", "sourceCode": "import { Component, input } from '@angular/core';\n\n/** Atom: native progress bar for an in-flight upload. Pure UI — the caller supplies\n the percentage. */\n@Component({\n selector: 'app-upload-progress-bar',\n styles: [`\n :host { display: flex; align-items: center; gap: var(--rhc-space-max-md); }\n progress { flex: 1; height: var(--rhc-space-max-md); }\n .pct { font-size: var(--rhc-text-font-size-sm); color: var(--rhc-color-foreground-subtle); min-width: 3ch; text-align: end; }\n `],\n template: `\n \n {{ progressPct() }}%\n `,\n})\nexport class UploadProgressBarComponent {\n progressPct = input.required();\n\n protected readonly progressLabel = $localize`:@@upload.progress.label:Uploadvoortgang`;\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n :host { display: flex; align-items: center; gap: var(--rhc-space-max-md); }\n progress { flex: 1; height: var(--rhc-space-max-md); }\n .pct { font-size: var(--rhc-text-font-size-sm); color: var(--rhc-color-foreground-subtle); min-width: 3ch; text-align: end; }\n \n", "extends": [] }, { "name": "UploadStatusBannerComponent", "id": "component-UploadStatusBannerComponent-bd43a8ab3e3102bf27f08c6969f36192f05089712c019bd99cb63bfd83c158174c8a9e71d9c48550de2ead19eb78bfaa2c49baa85be1880adb487129f632174c", "file": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-upload-status-banner", "styleUrls": [], "styles": [], "template": "
\n {{ message() }}\n
\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "message", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 19, "required": true }, { "name": "type", "defaultValue": "'info'", "deprecated": false, "deprecationMessage": "", "type": "BannerType", "indexKey": "", "optional": false, "description": "", "line": 20, "required": false } ], "outputsClass": [], "propertiesClass": [ { "name": "alertType", "defaultValue": "computed(() => (this.type() === 'info' ? 'info' : this.type()))", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 22, "modifierKind": [ 124, 148 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "AlertComponent", "type": "component" } ], "description": "

Molecule: a polite, announced status banner. Wraps the alert atom and maps the\nbanner type to an alert type. Pure UI: the container computes the message.

\n", "rawdescription": "\nMolecule: a polite, announced status banner. Wraps the alert atom and maps the\nbanner type to an alert type. Pure UI: the container computes the message.", "type": "component", "sourceCode": "import { Component, computed, input } from '@angular/core';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\n\ntype BannerType = 'info' | 'warning' | 'error';\ntype AlertType = 'info' | 'ok' | 'warning' | 'error';\n\n/** Molecule: a polite, announced status banner. Wraps the alert atom and maps the\n banner type to an alert type. Pure UI: the container computes the message. */\n@Component({\n selector: 'app-upload-status-banner',\n imports: [AlertComponent],\n template: `\n
\n {{ message() }}\n
\n `,\n})\nexport class UploadStatusBannerComponent {\n message = input.required();\n type = input('info');\n\n protected readonly alertType = computed(() => (this.type() === 'info' ? 'info' : this.type()));\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "", "extends": [] }, { "name": "UploadStatusIconComponent", "id": "component-UploadStatusIconComponent-bc824192fb4b5b1e5ca46093e18a138c2c643d35be29ea257636d0b96b1867c3aa6d37f84437e9315f4e8157cdd99351b9bb1fe0f58adadd7cafca9c69d46185", "file": "src/app/shared/ui/upload/upload-status-icon/upload-status-icon.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-upload-status-icon", "styleUrls": [], "styles": [ "\n .glyph { font-weight: var(--rhc-text-font-weight-semi-bold); }\n " ], "template": "@if (glyph()) {\n \n {{ glyph()!.char }}\n \n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "UploadStatus['type']", "indexKey": "", "optional": false, "description": "", "line": 26, "required": true } ], "outputsClass": [], "propertiesClass": [ { "name": "glyph", "defaultValue": "computed(() => {\n switch (this.status()) {\n case 'queued':\n return { char: '…', label: $localize`:@@upload.status.queued:In wachtrij`, color: 'var(--rhc-color-foreground-subtle)' };\n case 'uploading':\n return { char: '↑', label: $localize`:@@upload.status.uploading:Bezig met uploaden`, color: 'var(--rhc-color-lintblauw-600)' };\n case 'complete':\n return { char: '✓', label: $localize`:@@upload.status.complete:Geüpload`, color: 'var(--rhc-color-groen-500)' };\n case 'failed':\n return { char: '✕', label: $localize`:@@upload.status.failed:Mislukt`, color: 'var(--rhc-color-rood-500)' };\n case 'deleting':\n return { char: '⟳', label: $localize`:@@upload.status.deleting:Bezig met verwijderen`, color: 'var(--rhc-color-foreground-subtle)' };\n case 'idle':\n case 'deleted':\n return null;\n }\n })", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 28, "modifierKind": [ 124, 148 ] } ], "methodsClass": [], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [], "description": "

Atom: a small status glyph for one upload. Pure UI — glyph, colour and a11y\nlabel derive purely from the status type.

\n", "rawdescription": "\nAtom: a small status glyph for one upload. Pure UI — glyph, colour and a11y\nlabel derive purely from the status type.", "type": "component", "sourceCode": "import { Component, computed, input } from '@angular/core';\nimport type { UploadStatus } from '@shared/upload/upload.machine';\n\ninterface Glyph {\n char: string;\n label: string;\n color: string;\n}\n\n/** Atom: a small status glyph for one upload. Pure UI — glyph, colour and a11y\n label derive purely from the status type. */\n@Component({\n selector: 'app-upload-status-icon',\n styles: [`\n .glyph { font-weight: var(--rhc-text-font-weight-semi-bold); }\n `],\n template: `\n @if (glyph()) {\n \n {{ glyph()!.char }}\n \n }\n `,\n})\nexport class UploadStatusIconComponent {\n status = input.required();\n\n protected readonly glyph = computed(() => {\n switch (this.status()) {\n case 'queued':\n return { char: '…', label: $localize`:@@upload.status.queued:In wachtrij`, color: 'var(--rhc-color-foreground-subtle)' };\n case 'uploading':\n return { char: '↑', label: $localize`:@@upload.status.uploading:Bezig met uploaden`, color: 'var(--rhc-color-lintblauw-600)' };\n case 'complete':\n return { char: '✓', label: $localize`:@@upload.status.complete:Geüpload`, color: 'var(--rhc-color-groen-500)' };\n case 'failed':\n return { char: '✕', label: $localize`:@@upload.status.failed:Mislukt`, color: 'var(--rhc-color-rood-500)' };\n case 'deleting':\n return { char: '⟳', label: $localize`:@@upload.status.deleting:Bezig met verwijderen`, color: 'var(--rhc-color-foreground-subtle)' };\n case 'idle':\n case 'deleted':\n return null;\n }\n });\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n .glyph { font-weight: var(--rhc-text-font-weight-semi-bold); }\n \n", "extends": [] }, { "name": "WizardShellComponent", "id": "component-WizardShellComponent-83776d36ee9e352e1f6e9d6be8422e18099e626c0cd999197ad35df7d5ce1e58ef6639ab1973e1840b2a727eb9cd7ccf71626ca7f6e31a4c887969ad9d9d435f", "file": "src/app/shared/layout/wizard-shell/wizard-shell.component.ts", "encapsulation": [], "entryComponents": [], "inputs": [], "outputs": [], "providers": [], "selector": "app-wizard-shell", "styleUrls": [], "styles": [ "\n .es-title{margin:0 0 var(--rhc-space-max-sm)}\n .es-list{margin:0;padding-inline-start:var(--rhc-space-max-xl)}\n " ], "template": "@switch (status()) {\n @case ('editing') {\n \n

{{ stepTitle() }}

\n @if (errors().length) {\n
\n \n

Er ging iets mis met uw invoer

\n \n
\n
\n }\n
\n \n
\n @if (canGoBack()) {\n Vorige\n }\n {{ primaryLabel() }}\n Annuleren\n
\n \n }\n @case ('submitting') {\n {{ submittingLabel() }}\n }\n @case ('submitted') {\n \n }\n @case ('failed') {\n {{ errorMessage() }}\n
\n Opnieuw proberen\n
\n }\n}\n", "templateUrl": [], "viewProviders": [], "hostDirectives": [], "inputsClass": [ { "name": "canGoBack", "defaultValue": "false", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 83, "required": false }, { "name": "current", "deprecated": false, "deprecationMessage": "", "type": "number", "indexKey": "", "optional": false, "description": "", "line": 79, "required": true }, { "name": "errorMessage", "defaultValue": "''", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 85, "required": false }, { "name": "errors", "defaultValue": "[]", "deprecated": false, "deprecationMessage": "", "type": "readonly WizardError[]", "indexKey": "", "optional": false, "description": "", "line": 84, "required": false }, { "name": "primaryLabel", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 82, "required": true }, { "name": "status", "deprecated": false, "deprecationMessage": "", "type": "WizardStatus", "indexKey": "", "optional": false, "description": "", "line": 81, "required": true }, { "name": "steps", "deprecated": false, "deprecationMessage": "", "type": "string[]", "indexKey": "", "optional": false, "description": "", "line": 78, "required": true }, { "name": "stepTitle", "deprecated": false, "deprecationMessage": "", "type": "string", "indexKey": "", "optional": false, "description": "", "line": 80, "required": true }, { "name": "submittingLabel", "defaultValue": "$localize`:@@wizard.submitting:Aanvraag wordt verwerkt…`", "deprecated": false, "deprecationMessage": "", "indexKey": "", "optional": false, "description": "", "line": 86, "required": false } ], "outputsClass": [ { "name": "back", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 89, "required": false }, { "name": "cancel", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 90, "required": false }, { "name": "primary", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 88, "required": false }, { "name": "retry", "deprecated": false, "deprecationMessage": "", "type": "void", "indexKey": "", "optional": false, "description": "", "line": 91, "required": false } ], "propertiesClass": [ { "name": "errorSummary", "defaultValue": "viewChild>('errorSummary')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 102, "modifierKind": [ 123 ] }, { "name": "stepHeading", "defaultValue": "viewChild>('stepHeading')", "deprecated": false, "deprecationMessage": "", "type": "unknown", "indexKey": "", "optional": false, "description": "", "line": 101, "modifierKind": [ 123 ] } ], "methodsClass": [ { "name": "goToField", "args": [ { "name": "ev", "type": "Event", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" }, { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "" } ], "optional": false, "returnType": "void", "typeParameters": [], "line": 96, "deprecated": false, "deprecationMessage": "", "rawdescription": "\nError-summary link: focus the field instead of letting the browser navigate.\nA fragment href resolves against , not the current route, so\na real navigation would reload to \"/\" and bounce to login.", "description": "

Error-summary link: focus the field instead of letting the browser navigate.\nA fragment href resolves against , not the current route, so\na real navigation would reload to "/" and bounce to login.

\n", "modifierKind": [ 124 ], "jsdoctags": [ { "name": "ev", "type": "Event", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "id", "type": "string", "optional": false, "dotDotDotToken": false, "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "deprecated": false, "deprecationMessage": "", "hostBindings": [], "hostListeners": [], "standalone": false, "imports": [ { "name": "FormsModule", "type": "module" }, { "name": "ButtonComponent", "type": "component" }, { "name": "AlertComponent", "type": "component" }, { "name": "SpinnerComponent", "type": "component" }, { "name": "StepperComponent", "type": "component" } ], "description": "

Template: the canonical shell every wizard renders into, so they cannot drift.\nIt owns the consistent outline — stepper + focusable step heading + error\nsummary + the

+ the Back/Next/Cancel action bar + the submitting/\nsubmitted/failed states — and the a11y focus management.

\n

Presentational and unidirectional: all state stays in the wizard container\n(the Elm-style store). Inputs flow down; the container reacts to the outputs\nand dispatches messages. The step's own fields are projected as the default\nslot; the success screen is projected via [wizardSuccess].

\n", "rawdescription": "\n\nTemplate: the canonical shell every wizard renders into, so they cannot drift.\nIt owns the consistent outline — stepper + focusable step heading + error\nsummary + the + the Back/Next/Cancel action bar + the submitting/\nsubmitted/failed states — and the a11y focus management.\n\nPresentational and unidirectional: all state stays in the wizard container\n(the Elm-style store). Inputs flow down; the container reacts to the outputs\nand dispatches messages. The step's own fields are projected as the default\nslot; the success screen is projected via [wizardSuccess].\n", "type": "component", "sourceCode": "import { Component, ElementRef, effect, input, output, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from '@shared/ui/button/button.component';\nimport { AlertComponent } from '@shared/ui/alert/alert.component';\nimport { SpinnerComponent } from '@shared/ui/spinner/spinner.component';\nimport { StepperComponent } from '@shared/ui/stepper/stepper.component';\n\n/** A flat validation error pointing at a field: `id` matches the field's anchor. */\nexport interface WizardError {\n readonly id: string;\n readonly message: string;\n}\n\nexport type WizardStatus = 'editing' | 'submitting' | 'submitted' | 'failed';\n\n/**\n * Template: the canonical shell every wizard renders into, so they cannot drift.\n * It owns the consistent outline — stepper + focusable step heading + error\n * summary + the + the Back/Next/Cancel action bar + the submitting/\n * submitted/failed states — and the a11y focus management.\n *\n * Presentational and unidirectional: all state stays in the wizard container\n * (the Elm-style store). Inputs flow down; the container reacts to the outputs\n * and dispatches messages. The step's own fields are projected as the default\n * slot; the success screen is projected via [wizardSuccess].\n */\n@Component({\n selector: 'app-wizard-shell',\n imports: [FormsModule, ButtonComponent, AlertComponent, SpinnerComponent, StepperComponent],\n styles: [`\n .es-title{margin:0 0 var(--rhc-space-max-sm)}\n .es-list{margin:0;padding-inline-start:var(--rhc-space-max-xl)}\n `],\n template: `\n @switch (status()) {\n @case ('editing') {\n \n

{{ stepTitle() }}

\n @if (errors().length) {\n
\n \n

Er ging iets mis met uw invoer

\n \n
\n
\n }\n \n \n
\n @if (canGoBack()) {\n Vorige\n }\n {{ primaryLabel() }}\n Annuleren\n
\n \n }\n @case ('submitting') {\n {{ submittingLabel() }}\n }\n @case ('submitted') {\n \n }\n @case ('failed') {\n {{ errorMessage() }}\n
\n Opnieuw proberen\n
\n }\n }\n `,\n})\nexport class WizardShellComponent {\n steps = input.required();\n current = input.required();\n stepTitle = input.required();\n status = input.required();\n primaryLabel = input.required();\n canGoBack = input(false);\n errors = input([]);\n errorMessage = input('');\n submittingLabel = input($localize`:@@wizard.submitting:Aanvraag wordt verwerkt…`);\n\n primary = output();\n back = output();\n cancel = output();\n retry = output();\n\n /** Error-summary link: focus the field instead of letting the browser navigate.\n A fragment href resolves against , not the current route, so\n a real navigation would reload to \"/\" and bounce to login. */\n protected goToField(ev: Event, id: string) {\n ev.preventDefault();\n document.getElementById(id)?.focus(); // focus() scrolls the input into view\n }\n\n private stepHeading = viewChild>('stepHeading');\n private errorSummary = viewChild>('errorSummary');\n\n constructor() {\n // A11y: move focus to the step heading when the step changes (skip first run\n // so we don't grab focus on initial load). Tracks current(), which is value-\n // stable across keystrokes, so typing never steals focus.\n let firstStep = true;\n effect(() => {\n this.current();\n if (firstStep) { firstStep = false; return; }\n untracked(() => queueMicrotask(() => this.stepHeading()?.nativeElement.focus()));\n });\n // A11y: when validation errors first appear (after a failed submit), move\n // focus to the error summary so it's announced. Only on the rising edge\n // (none → some): typing rebuilds the errors array each keystroke, and\n // re-focusing then would scroll the page up mid-edit. The summary keeps\n // role=\"alert\", so content changes are still announced without the jump.\n let firstErr = true;\n let hadErrors = false;\n effect(() => {\n const has = this.errors().length > 0;\n if (firstErr) { firstErr = false; hadErrors = has; return; }\n if (has && !hadErrors) untracked(() => queueMicrotask(() => this.errorSummary()?.nativeElement.focus()));\n hadErrors = has;\n });\n }\n}\n", "assetsDirs": [], "styleUrlsData": "", "stylesData": "\n .es-title{margin:0 0 var(--rhc-space-max-sm)}\n .es-list{margin:0;padding-inline-start:var(--rhc-space-max-xl)}\n \n", "constructorObj": { "name": "constructor", "description": "", "deprecated": false, "deprecationMessage": "", "args": [], "line": 102 }, "extends": [] } ], "modules": [], "miscellaneous": { "variables": [ { "name": "AANVRAAG_TYPES", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "string[]", "defaultValue": "['registratie', 'herregistratie', 'intake']" }, { "name": "ACTIVE", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "ReadonlyArray", "defaultValue": "['queued', 'uploading', 'complete']" }, { "name": "appConfig", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/app.config.ts", "deprecated": false, "deprecationMessage": "", "type": "ApplicationConfig", "defaultValue": "{\n providers: [\n provideBrowserGlobalErrorListeners(),\n provideRouter(routes, withViewTransitions()),\n // Dev-only: the ?scenario= toggle must never reach a production build, where\n // a query param could otherwise force errors on the live app.\n provideHttpClient(withInterceptors(isDevMode() ? [scenarioInterceptor] : [])),\n provideApiClient(),\n { provide: SESSION_PORT, useExisting: SessionStore },\n { provide: LOCALE_ID, useValue: 'nl' },\n ]\n}" }, { "name": "ASYNC", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/ui/async/async.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "[\n AsyncComponent, AsyncLoadedDirective, AsyncLoadingDirective,\n AsyncEmptyDirective, AsyncErrorDirective,\n] as const", "rawdescription": "Convenience: import this array to get the wrapper + all slot directives.", "description": "

Convenience: import this array to get the wrapper + all slot directives.

\n" }, { "name": "authGuard", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/auth/auth.guard.ts", "deprecated": false, "deprecationMessage": "", "type": "CanActivateFn", "defaultValue": "() => {\n const store = inject(SessionStore);\n const router = inject(Router);\n return store.isAuthenticated() ? true : router.createUrlTree(['/login']);\n}", "rawdescription": "Route guard: only let authenticated users in; otherwise redirect to /login.", "description": "

Route guard: only let authenticated users in; otherwise redirect to /login.

\n" }, { "name": "categoryOf", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(s: UploadState, categoryId: string) => s.categories.find((c) => c.categoryId === categoryId)" }, { "name": "DEBOUNCE_MS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/application/draft-sync.ts", "deprecated": false, "deprecationMessage": "", "type": "number", "defaultValue": "600" }, { "name": "emptyDraft", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "Draft", "defaultValue": "{ antwoorden: {} }" }, { "name": "environment", "ctype": "miscellaneous", "subtype": "variable", "file": "src/environments/environment.prod.ts", "deprecated": false, "deprecationMessage": "", "type": "object", "defaultValue": "{\n production: true,\n apiBaseUrl: '',\n}", "rawdescription": "Production environment. `apiBaseUrl` stays relative ('') for a same-origin /\nreverse-proxy deployment; set it to the API origin (e.g. 'https://api.example.nl')\nwhen the SPA and backend are served from different hosts. This is the single\nplace the deployed API location is configured.", "description": "

Production environment. apiBaseUrl stays relative ('') for a same-origin /\nreverse-proxy deployment; set it to the API origin (e.g. 'https://api.example.nl')\nwhen the SPA and backend are served from different hosts. This is the single\nplace the deployed API location is configured.

\n" }, { "name": "environment", "ctype": "miscellaneous", "subtype": "variable", "file": "src/environments/environment.ts", "deprecated": false, "deprecationMessage": "", "type": "object", "defaultValue": "{\n production: false,\n apiBaseUrl: '',\n}", "rawdescription": "Default (development) environment. `apiBaseUrl` is empty so requests are\nrelative to the current origin — in dev the ng-serve proxy forwards /api to the\nbackend (proxy.conf.json). Swapped for environment.prod.ts in production builds\n(angular.json fileReplacements).", "description": "

Default (development) environment. apiBaseUrl is empty so requests are\nrelative to the current origin — in dev the ng-serve proxy forwards /api to the\nbackend (proxy.conf.json). Swapped for environment.prod.ts in production builds\n(angular.json fileReplacements).

\n" }, { "name": "err", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(error: E): Result => ({ ok: false, error })" }, { "name": "find", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(s: UploadState, localId: string) => s.uploads.find((u) => u.localId === localId)" }, { "name": "genericError", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(): string => UPLOAD_FAILED" }, { "name": "HANDMATIG", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "deprecated": false, "deprecationMessage": "", "type": "string", "defaultValue": "'__handmatig__'" }, { "name": "inFlight", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(s: UploadState): Upload[] =>\n s.uploads.filter((u) => u.status.type === 'queued' || u.status.type === 'uploading')", "rawdescription": "Used by the shell to find what to poll on return: still-in-flight uploads.", "description": "

Used by the shell to find what to poll on return: still-in-flight uploads.

\n" }, { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "WizardState", "defaultValue": "{ tag: 'Editing', step: 1, draft: { uren: '', jaren: '', punten: '' }, errors: {}, upload: initialUpload }" }, { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "IntakeState", "defaultValue": "{ tag: 'Answering', answers: {}, cursor: 0, errors: {}, scholingThreshold: SCHOLING_THRESHOLD_DEFAULT }" }, { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "State", "defaultValue": "{\n tag: 'Editing',\n draft: { straat: '', postcode: '', woonplaats: '' },\n errors: {},\n}" }, { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "RegistratieState", "defaultValue": "{ tag: 'Invullen', draft: emptyDraft, cursor: 0, errors: {}, upload: initialUpload }" }, { "name": "initialUpload", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "UploadState", "defaultValue": "{\n categories: [],\n uploads: [],\n deliveryChannel: {},\n rejections: {},\n backgroundSyncAvailable: false,\n}" }, { "name": "JA_NEE", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/ui/radio-group/radio-group.component.ts", "deprecated": false, "deprecationMessage": "", "type": "RadioOption[]", "defaultValue": "[\n { value: 'ja', label: $localize`:@@common.ja:Ja` },\n { value: 'nee', label: $localize`:@@common.nee:Nee` },\n]", "rawdescription": "The ubiquitous yes/no option pair. Language-agnostic now the labels are\nlocalized, so it lives next to RadioOption and both wizards import it.", "description": "

The ubiquitous yes/no option pair. Language-agnostic now the labels are\nlocalized, so it lives next to RadioOption and both wizards import it.

\n" }, { "name": "KANALEN", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "deprecated": false, "deprecationMessage": "", "type": "[]", "defaultValue": "[\n { value: 'email', label: $localize`:@@registratie.kanaalEmail:E-mail` },\n { value: 'post', label: $localize`:@@registratie.kanaalPost:Post` },\n]" }, { "name": "ok", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(value: T): Result => ({ ok: true, value })" }, { "name": "parseError", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(body: string): string => {\n try {\n return problemDetail(JSON.parse(body), UPLOAD_FAILED);\n } catch {\n return genericError();\n }\n}" }, { "name": "REDACTED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/ui/debug-state/mask.ts", "deprecated": false, "deprecationMessage": "", "type": "string", "defaultValue": "'‹redacted›'" }, { "name": "REJECTION_MESSAGES", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "Record<\"type\" | \"size\" | \"multiple\", string>", "defaultValue": "{\n type: $localize`:@@upload.reject.type:Dit bestandstype is niet toegestaan voor deze categorie.`,\n size: $localize`:@@upload.reject.size:Dit bestand is te groot.`,\n multiple: $localize`:@@upload.reject.multiple:U kunt voor deze categorie maar één bestand uploaden.`,\n}" }, { "name": "REQUEST_TIMEOUT_MS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/infrastructure/api-client.provider.ts", "deprecated": false, "deprecationMessage": "", "type": "number", "defaultValue": "10_000", "rawdescription": "Single place every API call passes through: the seam for cross-cutting concerns.", "description": "

Single place every API call passes through: the seam for cross-cutting concerns.

\n" }, { "name": "routes", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/app.routes.ts", "deprecated": false, "deprecationMessage": "", "type": "Routes", "defaultValue": "[\n {\n path: '',\n component: ShellComponent, // persistent header/footer; only children swap\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'login' },\n { path: 'login', loadComponent: () => \"import('@auth/ui/login.page').then(m => m.LoginPage)\" },\n { path: 'dashboard', canActivate: [authGuard], loadComponent: () => \"import('@registratie/ui/dashboard.page').then(m => m.DashboardPage)\" },\n { path: 'registratie', canActivate: [authGuard], loadComponent: () => \"import('@registratie/ui/registration-detail.page').then(m => m.RegistrationDetailPage)\" },\n { path: 'registreren', canActivate: [authGuard], loadComponent: () => \"import('@registratie/ui/registratie.page').then(m => m.RegistratiePage)\" },\n { path: 'herregistratie', canActivate: [authGuard], loadComponent: () => \"import('@herregistratie/ui/herregistratie.page').then(m => m.HerregistratiePage)\" },\n { path: 'intake', canActivate: [authGuard], loadComponent: () => \"import('@herregistratie/ui/intake.page').then(m => m.IntakePage)\" },\n { path: 'concepts', loadComponent: () => \"import('./showcase/concepts.page').then(m => m.ConceptsPage)\" },\n { path: '**', redirectTo: 'login' },\n ],\n },\n]" }, { "name": "ROUTES", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "deprecated": false, "deprecationMessage": "", "type": "Record", "defaultValue": "{\n '/dashboard': { label: $localize`:@@crumb.dashboard:Mijn overzicht` },\n '/registratie': { label: $localize`:@@crumb.registratie:Mijn gegevens`, parent: '/dashboard' },\n '/registreren': { label: $localize`:@@crumb.registreren:Inschrijven`, parent: '/dashboard' },\n '/herregistratie': { label: $localize`:@@crumb.herregistratie:Herregistratie`, parent: '/dashboard' },\n '/intake': { label: $localize`:@@crumb.intake:Herregistratie-intake`, parent: '/dashboard' },\n '/concepts': { label: $localize`:@@crumb.concepts:Functionele patronen`, parent: '/dashboard' },\n}" }, { "name": "scenarioInterceptor", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/infrastructure/scenario.interceptor.ts", "deprecated": false, "deprecationMessage": "", "type": "HttpInterceptorFn", "defaultValue": "(req, next) => {\n if (!req.url.includes('/api/')) return next(req);\n\n switch (currentScenario()) {\n case 'slow':\n return next(req).pipe(delay(2500));\n case 'loading':\n return next(req).pipe(delay(600_000)); // effectively never resolves\n case 'empty':\n // '[]' so the typed client parses it to an empty array (notes → Empty state).\n return of(new HttpResponse({ status: 200, body: '[]' })).pipe(delay(400));\n case 'error':\n return timer(400).pipe(\n switchMap(() => throwError(() =>\n new HttpErrorResponse({ status: 500, statusText: 'Demo-fout', url: req.url }))),\n );\n default:\n return next(req);\n }\n}", "rawdescription": "Demo-only: rewrites the timing/outcome of API data requests based on\n?scenario= so loading / empty / error states can be shown on demand.\nNon-API requests are untouched.", "description": "

Demo-only: rewrites the timing/outcome of API data requests based on\n?scenario= so loading / empty / error states can be shown on demand.\nNon-API requests are untouched.

\n" }, { "name": "SCHOLING_THRESHOLD_DEFAULT", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "number", "defaultValue": "1000", "rawdescription": "Demo fallback only — the real threshold is a SERVER-OWNED policy value fetched\nat runtime (see IntakePolicyDto / SetPolicy). ponytail: default is the offline\nfallback; the server value wins.", "description": "

Demo fallback only — the real threshold is a SERVER-OWNED policy value fetched\nat runtime (see IntakePolicyDto / SetPolicy). ponytail: default is the offline\nfallback; the server value wins.

\n" }, { "name": "SESSION_PORT", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/application/session.port.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "new InjectionToken('SESSION_PORT')" }, { "name": "STEPS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "StepId[]", "defaultValue": "['buitenland', 'werk', 'review']", "rawdescription": "The fixed step list. Number of steps never changes; questions reveal inline.", "description": "

The fixed step list. Number of steps never changes; questions reveal inline.

\n" }, { "name": "STEPS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "StepId[]", "defaultValue": "['adres', 'beroep', 'controle']", "rawdescription": "The fixed step list. Number of steps never changes; questions reveal inline.", "description": "

The fixed step list. Number of steps never changes; questions reveal inline.

\n" }, { "name": "STORAGE_KEY", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/auth/application/session.store.ts", "deprecated": false, "deprecationMessage": "", "type": "string", "defaultValue": "'session-v1'" }, { "name": "SUBMIT_FAILED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/application/submit.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "$localize`:@@submit.failed:Het indienen is niet gelukt. Probeer het later opnieuw.`" }, { "name": "TYPE_LABELS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts", "deprecated": false, "deprecationMessage": "", "type": "Record", "defaultValue": "{\n registratie: $localize`:@@aanvraagBlock.type.registratie:Inschrijving`,\n herregistratie: $localize`:@@aanvraagBlock.type.herregistratie:Herregistratie`,\n intake: $localize`:@@aanvraagBlock.type.intake:Herregistratie-intake`,\n}" }, { "name": "UPLOAD_ABORTED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "Symbol('upload-aborted')", "rawdescription": "Sentinel rejection so the caller can tell a user-cancel from a real failure.", "description": "

Sentinel rejection so the caller can tell a user-cancel from a real failure.

\n" }, { "name": "UPLOAD_FAILED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "$localize`:@@upload.failed:Uploaden is niet gelukt. Probeer het opnieuw.`" }, { "name": "VALID", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/infrastructure/scenario.ts", "deprecated": false, "deprecationMessage": "", "type": "Scenario[]", "defaultValue": "['default', 'slow', 'loading', 'empty', 'error', 'upload-slow', 'upload-fail']" } ], "functions": [ { "name": "andThen", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Chain a second source that depends on the first one's value.

\n", "args": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "assertNever", "file": "src/app/shared/kernel/fp.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Tiny native-TS functional toolkit. No dependency — this is the whole "library".\nReused by every "impossible states" concept in the POC.

\n", "args": [ { "name": "x", "type": "never", "deprecated": false, "deprecationMessage": "" } ], "returnType": "never", "jsdoctags": [ { "name": "x", "type": "never", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "back", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "back", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "back", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "blockActions", "file": "src/app/registratie/domain/block-actions.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "status", "type": "AanvraagStatus", "deprecated": false, "deprecationMessage": "" } ], "returnType": "BlockAction[]", "jsdoctags": [ { "name": "status", "type": "AanvraagStatus", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "categorySatisfied", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

A required category is satisfied by an initiated upload OR a post-delivery choice.

\n", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" }, { "name": "categoryId", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "categoryId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "createDraftSync", "file": "src/app/registratie/application/draft-sync.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The effectful glue that replaces per-wizard sessionStorage with a backend-owned\nConcept (PRD 0001, phase D). Instantiated in a field initializer (like\ncreateStore/createUploadController). Responsibilities:

\n
    \n
  • resume: if the URL carries ?aanvraag=<id>, load that draft and seed the machine;
  • \n
  • create-on-first-progress: the Concept is created lazily the first time the wizard\nreports a non-null snapshot, and the id is stamped into the URL (so a reload resumes);
  • \n
  • debounced draft sync on every subsequent change.
  • \n
\n

Inert without a Router (stories) or when enabled() is false — no network, no resume.

\n", "args": [ { "name": "deps", "type": "DraftSyncDeps", "deprecated": false, "deprecationMessage": "" } ], "jsdoctags": [ { "name": "deps", "type": "DraftSyncDeps", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "createStore", "file": "src/app/shared/application/store.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "init", "type": "Model", "deprecated": false, "deprecationMessage": "" }, { "name": "update", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Store", "jsdoctags": [ { "name": "init", "type": "Model", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "update", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "createUploadController", "file": "src/app/shared/upload/upload-controller.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The effectful glue between the <app-document-upload> organism's events and the\npure upload reducer + transport. Both wizards instantiate one (in a field\ninitializer, like createStore). Holds the only state a reducer can't: the live\nFile blobs keyed by localId (needed to retry an upload). Loads categories,\nreports background-sync availability, and polls on tab refocus.

\n", "args": [ { "name": "deps", "type": "UploadControllerDeps", "deprecated": false, "deprecationMessage": "" } ], "jsdoctags": [ { "name": "deps", "type": "UploadControllerDeps", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "currentScenario", "file": "src/app/shared/infrastructure/scenario.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Reads ?scenario= from the URL so a demo can force each async state.

\n", "args": [], "returnType": "Scenario" }, { "name": "currentStep", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Which step the cursor currently points at (clamped to the fixed list).

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "StepId", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "currentStep", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Which step the cursor currently points at (clamped to the fixed list).

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "StepId", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "declareerBeroep", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Declare the beroep for a manually-entered diploma (chosen from a fixed list).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "deliveryRefs", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The submit payload fragment: digital docs carry their documentId, post categories the channel.

\n", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Array", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "fakeResource", "file": "src/app/showcase/concepts.page.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Minimal fake Resource so can be driven through every state without HTTP.

\n", "args": [ { "name": "status", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "T", "deprecated": false, "deprecationMessage": "", "optional": true }, { "name": "error", "type": "Error", "deprecated": false, "deprecationMessage": "", "optional": true } ], "returnType": "Resource", "jsdoctags": [ { "name": "status", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "T", "deprecated": false, "deprecationMessage": "", "optional": true, "tagName": { "text": "param" } }, { "name": "error", "type": "Error", "deprecated": false, "deprecationMessage": "", "optional": true, "tagName": { "text": "param" } } ] }, { "name": "foldRemote", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Exhaustive fold: you must handle every case, checked at compile time.

\n", "args": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "h", "deprecated": false, "deprecationMessage": "" } ], "returnType": "R", "jsdoctags": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "h", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "formatNL", "file": "src/app/registratie/domain/tasks.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "d", "type": "Date", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "d", "type": "Date", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "fromResource", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Project Angular's loosely-typed Resource into a RemoteData value.

\n", "args": [ { "name": "r", "type": "Resource", "deprecated": false, "deprecationMessage": "" }, { "name": "isEmpty", "deprecated": false, "deprecationMessage": "", "defaultValue": "() => false" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "r", "type": "Resource", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "isEmpty", "deprecated": false, "deprecationMessage": "", "defaultValue": "() => false", "tagName": { "text": "param" } } ] }, { "name": "gaNaarStap", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Jump back to an earlier step to correct data (controle → step N). Forward\njumps are not allowed (would skip validation). Preserves the draft.

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "cursor", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "cursor", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "hasProgress", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Has the user meaningfully started, so it's worth persisting as a Concept?

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "hasProgress", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Has the user meaningfully started, so it's worth persisting as a Concept?\n(No auto-prefill here — pristine means truly untouched.)

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "hasProgress", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Has the user meaningfully started, so it's worth persisting as a Concept? Excludes\nthe automatic BRP address prefill on step 0 — a bare page visit creates nothing.\nponytail: an address typed at step 0 without any of these signals is not yet\npersisted (created once they advance/choose); accepted regression vs. sessionStorage.

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "herregistratieDeadline", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The herregistratie deadline, if the status has one (only the active state does).

\n", "args": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Date | null", "jsdoctags": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "httpClientFetch", "file": "src/app/shared/infrastructure/api-client.provider.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Adapts Angular's HttpClient to the fetch-shaped interface the NSwag-generated\nclient expects, so every API call flows through HttpClient interceptors (the\n?scenario= toggle) and the cross-cutting concerns below. The generated client\nis the only place HTTP shapes are known; this is the only place it meets\nAngular's HTTP stack — i.e. the one seam to add:

\n
    \n
  • timeout (done — REQUEST_TIMEOUT_MS),
  • \n
  • correlation id (done — X-Correlation-Id, echoed in backend logs),
  • \n
  • idempotency key for writes (done — Idempotency-Key; a real retry would thread\na STABLE key per logical submit so re-sends dedupe; here it's per-attempt),
  • \n
  • auth: attach Authorization: Bearer … here (one line) when real DigiD lands,
  • \n
  • retry/backoff: wrap the pipe with rxjs retry({ count, delay }) here.
  • \n
\n", "args": [ { "name": "http", "type": "HttpClient", "deprecated": false, "deprecationMessage": "" } ], "jsdoctags": [ { "name": "http", "type": "HttpClient", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "isAuthenticated", "file": "src/app/auth/domain/session.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Session", "jsdoctags": [ { "name": "s", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "isHerregistratieEligible", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

A registration may apply for herregistratie only while active and within the\nwindow before its deadline. A struck-off or suspended registration may not.\nSERVER-OWNED RULE: this now runs on the backend (BFF), which ships the result\nas decisions.eligibleForHerregistratie in the dashboard view. Kept here as\nthe reference implementation + unit test; the frontend no longer calls it.

\n", "args": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "" }, { "name": "today", "type": "Date", "deprecated": false, "deprecationMessage": "" }, { "name": "windowMonths", "type": "number", "deprecated": false, "deprecationMessage": "", "defaultValue": "12" } ], "returnType": "boolean", "jsdoctags": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "today", "type": "Date", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "windowMonths", "type": "number", "deprecated": false, "deprecationMessage": "", "defaultValue": "12", "tagName": { "text": "param" } } ] }, { "name": "isStatusConsistent", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Invariant check used in tests/demos: a non-active status must not carry a\nherregistratie date. The union already enforces this structurally; this is\nthe runtime statement of the same rule.

\n", "args": [ { "name": "status", "type": "RegistrationStatus", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "status", "type": "RegistrationStatus", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "kiesDiploma", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Pick a DUO diploma; the beroep is derived from it and the applicable policy\nquestions (vraagIds) come with it (both server-computed, passed in).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "diplomaId", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "diplomaId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "kiesHandmatig", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Switch to manual diploma entry: the diploma isn't in DUO, so the MAXIMAL\npolicy-question set applies and the entry is flagged handmatig/unverified. The\nberoep is declared separately (declareerBeroep).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "lageUren", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

True when NL-hours are low enough that the scholing question must be answered.\nThe threshold is passed in (server-owned), not hardcoded.

\n", "args": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "unknown", "deprecated": false, "deprecationMessage": "", "defaultValue": "SCHOLING_THRESHOLD_DEFAULT" } ], "returnType": "boolean", "jsdoctags": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "unknown", "deprecated": false, "deprecationMessage": "", "defaultValue": "SCHOLING_THRESHOLD_DEFAULT", "tagName": { "text": "param" } } ] }, { "name": "map", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Transform the value inside a Success; pass other states through unchanged.

\n", "args": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "map2", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Combine two sources into one. Use this to merge e.g. a BIG-register call\nand a BRP call into a single state the page can render.

\n", "args": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "map3", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Combine three sources (built on map2).

\n", "args": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "c", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "c", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "mapUpload", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Map one upload's status, leaving the rest of the list untouched.

\n", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" }, { "name": "localId", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "UploadState", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "localId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "maskBsn", "file": "src/app/shared/ui/debug-state/mask.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Redact a BSN for the dev state view: keep the last 3 digits, mask the rest.

\n", "args": [ { "name": "bsn", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "bsn", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "maskSession", "file": "src/app/shared/ui/debug-state/debug-state.component.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Session | null", "jsdoctags": [ { "name": "s", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "maskTail", "file": "src/app/shared/ui/debug-state/mask.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Keep the last keep characters, mask the rest.

\n", "args": [ { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "keep", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "keep", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "next", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Advance one step, gating on that step's fields. Illegal elsewhere = no-op.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "next", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "next", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseAanvraagStatus", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse of the status union — the tag drives which fields must exist.

\n", "args": [ { "name": "s", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "s", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseApplicationDetail", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseApplications", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseApplicationSummary", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseBigNummer", "file": "src/app/registratie/domain/value-objects/big-nummer.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseBrpAddress", "file": "src/app/registratie/infrastructure/brp.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse: validate the untrusted response shape. "Geen adres" is a\nvalid outcome (gevonden: false), not a malformed response. ponytail: hand-written;\nreach for a schema lib once the contract count grows.

\n", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseCommon", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "dto", "type": "ApplicationSummaryDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "dto", "type": "ApplicationSummaryDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseDashboardView", "file": "src/app/registratie/infrastructure/dashboard-view.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse: validate the untrusted response shape and map the DTO\nonto our own domain model. Hand-written on purpose — no Zod for a single\ncontract. ponytail: reach for a schema lib once the contract count grows.

\n", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseDuoLookup", "file": "src/app/registratie/infrastructure/duo.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse: validate the untrusted response shape (diplomas, each\nwith derived beroep + policy questions, plus the manual-entry fallback).

\n", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseEmail", "file": "src/app/registratie/domain/value-objects/email.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parsePostcode", "file": "src/app/registratie/domain/value-objects/postcode.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseQuestions", "file": "src/app/registratie/infrastructure/duo.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "[] | null", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseUren", "file": "src/app/registratie/domain/value-objects/uren.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "prefillAdres", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Prefill the address from a BRP lookup and flag its origin (PRD §7).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "straat", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "postcode", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "woonplaats", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "straat", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "postcode", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "woonplaats", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "problemDetail", "file": "src/app/shared/infrastructure/api-error.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Extract a human-readable message from a rejected API call. A 4xx/5xx with a\nProblemDetails body (RFC 7807) is thrown by the generated client as the parsed\nobject; anything else falls back to the given message.

\n", "args": [ { "name": "e", "deprecated": false, "deprecationMessage": "" }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "e", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "problemFieldErrors", "file": "src/app/shared/infrastructure/api-error.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

SEAM (G4): map a server validation envelope to field-level errors.

\n

ASP.NET's ValidationProblemDetails carries errors: { field: string[] }. The\nbackend today returns only detail (one banner message), so this returns {}.\nWhen the backend starts sending errors, a machine's SubmitFailed handler can\nmerge this into its own errors map — the field-keyed shape the wizards already\nrender — so a rejection shows inline per field, not just as a banner. The\nconsumer hook is the only thing left to wire; the contract boundary lives here.

\n", "args": [ { "name": "e", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Record", "jsdoctags": [ { "name": "e", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "provideApiClient", "file": "src/app/shared/infrastructure/api-client.provider.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Provide a root ApiClient that talks through HttpClient. Base URL comes from the\nenvironment (relative '' in dev → proxy; configurable per deployment).

\n", "args": [], "returnType": "Provider" }, { "name": "redactProfile", "file": "src/app/shared/ui/debug-state/mask.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Data minimisation for the dev "show the Model" panel: keep the structural /\ndecision-relevant fields (status, beroep, dates of registration) but redact\ndirect personal identifiers (name, address, date of birth) and mask the BIG\nnumber. The panel is for inspecting state SHAPE, never for reading PII.

\n", "args": [ { "name": "p", "type": "BigProfile", "deprecated": false, "deprecationMessage": "" } ], "returnType": "unknown", "jsdoctags": [ { "name": "p", "type": "BigProfile", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduce", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "WizardMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "WizardMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduce", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "IntakeMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "IntakeMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduce", "file": "src/app/registratie/domain/change-request.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "State", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "Msg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "State", "jsdoctags": [ { "name": "s", "type": "State", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "Msg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduce", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "RegistratieMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "RegistratieMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduceUpload", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "UploadState", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "rejectReason", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

FE format-validation (never authority — the server re-validates). Returns the\nrejection reason for one file, or null if it passes the category's type/size.

\n", "args": [ { "name": "cat", "type": "DocumentCategory", "deprecated": false, "deprecationMessage": "" }, { "name": "file", "deprecated": false, "deprecationMessage": "" } ], "returnType": "\"type\" | \"size\" | null", "jsdoctags": [ { "name": "cat", "type": "DocumentCategory", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "file", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "requiredCategoriesSatisfied", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "resolve", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Resolve the async submit. Only meaningful while Submitting.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "resolve", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "resolve", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "restore", "file": "src/app/auth/application/session.store.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Restore a persisted session (best-effort; corrupt entry → logged out).\nG2: validate the shape before trusting it. G1: the BSN is never persisted\n(see the effect below), so a restored session carries an empty one — it is\nunused after login; only naam is shown in the chrome.

\n", "args": [], "returnType": "Session | null" }, { "name": "runSubmit", "file": "src/app/shared/application/submit.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Run a mutating API call and fold it into a Result — the one place the\ntry/catch + ProblemDetails-mapping lives, so every submit-* command is just\nits own payload mapping. The backend re-validates and returns a 422\nProblemDetails on rejection, surfaced here as the error string.

\n", "args": [ { "name": "fn", "deprecated": false, "deprecationMessage": "" }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Promise>", "jsdoctags": [ { "name": "fn", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setAnswer", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "key", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "key", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setAntwoord", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "vraagId", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "vraagId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setCorrespondentie", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "Correspondentie", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "Correspondentie", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setField", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Update one draft field while editing; ignored in any other state.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "key", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "key", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setField", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "key", "type": "DraftField", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "key", "type": "DraftField", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setPolicy", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Apply a server-owned policy value (e.g. the scholing threshold).

\n", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "simulateUpload", "file": "src/app/shared/upload/upload.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Demo-only (dev): the real XHR POST finishes instantly for metadata, so progress\nand failure can't otherwise be shown. Drives the progress bar over ~2.5s, then\nsucceeds (upload-slow) or fails (upload-fail). ponytail: timer-based, cancel\nvia the returned handle; no network.

\n", "args": [ { "name": "scenario", "deprecated": false, "deprecationMessage": "" }, { "name": "onProgress", "deprecated": false, "deprecationMessage": "" } ], "returnType": "XhrUploadHandle", "jsdoctags": [ { "name": "scenario", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "onProgress", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "statusColor", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Brand colour token for a status. assertNever forces a colour for every new\nstatus variant at compile time.

\n", "args": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "statusLabel", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Domain logic for a registration — pure functions, NO Angular. This is where\n"what the business rules say" lives, separate from "how it looks" (UI) and\n"where the data comes from" (infrastructure). Keeping it framework-free means\nit is trivial to read and unit-test.

\n", "args": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submit", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Step 3 submit: parse everything + require documents; Submitting only with Valid.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submit", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submit", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submitChangeRequest", "file": "src/app/registratie/application/submit-change-request.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Command: POST an address change to the backend (/api/v1/change-requests),\nwhich re-validates and returns a reference. Same shape as the other submit\ncommands — a Result, never a thrown error — so the form's reduce can branch.

\n", "args": [ { "name": "client", "type": "ApiClient", "deprecated": false, "deprecationMessage": "" }, { "name": "data", "type": "Valid", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Promise>", "jsdoctags": [ { "name": "client", "type": "ApiClient", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "data", "type": "Valid", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "tasksFromProfile", "file": "src/app/registratie/domain/tasks.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Derive the open tasks for a professional (pure). Eligibility is the server's\ndecision (decisions.eligibleForHerregistratie), passed in — the FE renders it,\nit does not recompute the rule (ADR-0001). The deadline is still formatted\nclient-side for the task copy (presentation, not a rule).

\n", "args": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "" }, { "name": "eligibleForHerregistratie", "type": "boolean", "deprecated": false, "deprecationMessage": "" } ], "returnType": "PortalTask[]", "jsdoctags": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "eligibleForHerregistratie", "type": "boolean", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "throwException", "file": "src/app/shared/infrastructure/api-client.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "message", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "status", "type": "number", "deprecated": false, "deprecationMessage": "" }, { "name": "response", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "headers", "deprecated": false, "deprecationMessage": "" }, { "name": "result", "type": "any", "deprecated": false, "deprecationMessage": "", "optional": true } ], "returnType": "any", "jsdoctags": [ { "name": "message", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "status", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "response", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "headers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "result", "type": "any", "deprecated": false, "deprecationMessage": "", "optional": true, "tagName": { "text": "param" } } ] }, { "name": "toAantekening", "file": "src/app/registratie/infrastructure/big-register.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Map the wire DTO (all fields optional) onto our domain type.

\n", "args": [ { "name": "n", "type": "AantekeningDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Aantekening", "jsdoctags": [ { "name": "n", "type": "AantekeningDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "toCategory", "file": "src/app/shared/upload/upload.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Wire DTO (all fields optional) → domain.

\n", "args": [ { "name": "c", "type": "DocumentCategoryDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "DocumentCategory", "jsdoctags": [ { "name": "c", "type": "DocumentCategoryDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "toStatusItem", "file": "src/app/shared/upload/upload.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "UploadStatusItemDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "StatusItem", "jsdoctags": [ { "name": "s", "type": "UploadStatusItemDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "trailFor", "file": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Build the breadcrumb trail for a router url (query/fragment stripped).\nReturns [] for unknown routes (e.g. /login) so the bar can hide itself.

\n", "args": [ { "name": "url", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "BreadcrumbItem[]", "jsdoctags": [ { "name": "url", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "upload", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Route an upload sub-message through the pure upload reducer (Editing only).

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "upload", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Route an upload sub-message through the pure upload reducer (Invullen only).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validate", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse every field; on success hand back a Valid, else the per-field errors.

\n", "args": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "" }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validate", "file": "src/app/registratie/domain/change-request.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse via the value objects; on success hand back a Valid, else per-field errors.

\n", "args": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateAll", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse the whole questionnaire into a ValidIntake (called on submit).

\n", "args": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateAll", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse the whole wizard into a ValidRegistratie (called on submit).

\n", "args": [ { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "" }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateStep", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Validate every question currently visible in ONE step. Errors keyed per field.

\n", "args": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "" }, { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateStep", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Validate every question currently visible in ONE step. Errors keyed per field.

\n", "args": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "" }, { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "" }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "whenTag", "file": "src/app/shared/kernel/fp.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Narrow a tagged union to one variant by its tag, or null. The single place\nthe cast lives — TS can't narrow through a runtime tag argument, so callers get\nwhenTag(state, 'Editing')?.foo instead of repeating as Extract<…>.

\n", "args": [ { "name": "u", "type": "U", "deprecated": false, "deprecationMessage": "" }, { "name": "tag", "type": "K", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Extract | null", "jsdoctags": [ { "name": "u", "type": "U", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "tag", "type": "K", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "typealiases": [ { "name": "AantekeningType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"Specialisme\" | \"Aantekening\"", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "description": "

A note is either a recognised specialism or a plain annotation — a closed set,\nnot an open string, so a typo can't slip through.

\n", "kind": 193 }, { "name": "AanvraagStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/aanvraag.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "AanvraagType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"registratie\" | \"herregistratie\" | \"intake\"", "file": "src/app/registratie/domain/aanvraag.ts", "deprecated": false, "deprecationMessage": "", "description": "

An application (aanvraag) as the frontend sees it — the parsed, domain-side view\nof the backend-owned aggregate (see backend ApplicationStore + PRD 0001). Pure\ntypes, no Angular. Lives in registratie because the dashboard (here) is the\nconsumer and the downstream wizards (herregistratie → registratie) produce them.

\n

The status is a discriminated union so illegal states are unrepresentable — same\nreflex as RemoteData. The server computes which tag applies (auto-approval on\nread); the FE renders it, it does not recompute the lifecycle.

\n", "kind": 193 }, { "name": "AdresErrors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/registratie/ui/address-fields/address-fields.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 184 }, { "name": "AdresHerkomst", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"brp\" | \"handmatig\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Where a piece of data came from — recorded on the aggregate (PRD §5).

\n", "kind": 193 }, { "name": "AlertType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"info\" | \"ok\" | \"warning\" | \"error\"", "file": "src/app/shared/ui/alert/alert.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "AlertType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"info\" | \"ok\" | \"warning\" | \"error\"", "file": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "BannerType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"info\" | \"warning\" | \"error\"", "file": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "BigNummer", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/big-nummer.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: a BIG registration number — 11 digits.

\n", "kind": 184 }, { "name": "BlockAction", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"resume\" | \"cancel\" | \"viewDocuments\"", "file": "src/app/registratie/domain/block-actions.ts", "deprecated": false, "deprecationMessage": "", "description": "

What a dashboard "Mijn aanvragen" block offers per status. The badge itself\nfollows directly from status.tag (the UI maps tag → colour + label), so this\npure function owns only the actions decision.

\n", "kind": 193 }, { "name": "Brand", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "unknown", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "description": "

Nominal typing: Brand<string, 'Postcode'> is assignable from a plain string\nonly through an explicit cast — so a smart constructor is the only minter.

\n", "kind": 194 }, { "name": "Correspondentie", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"email\" | \"post\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "DeliveryChannel", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"digital\" | \"post\"", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "DiplomaHerkomst", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"duo\" | \"handmatig\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "Dispatch", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "function", "file": "src/app/shared/upload/upload-shell.service.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 185 }, { "name": "DraftField", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"straat\" | \"postcode\" | \"woonplaats\" | \"email\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Text fields settable via SetField.

\n", "kind": 193 }, { "name": "Email", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/email.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: an e-mail address. "Parse, don't validate" — an Email is a\ndistinct type from a raw string, mintable only via parseEmail, so holding one\nis proof it is well-formed. Format-only check (the FE keeps format validation\nfor instant feedback; the backend stays the authority — see ADR-0001).

\n", "kind": 184 }, { "name": "Err", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Error | undefined", "file": "src/app/registratie/application/applications.store.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "Err", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Error | undefined", "file": "src/app/registratie/application/big-profile.store.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "Errors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Per-field error map: one message per question, since a step holds several.

\n", "kind": 184 }, { "name": "Errors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 184 }, { "name": "IntakeMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "IntakeState", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "JaNee", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"ja\" | \"nee\"", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

A FIXED 3-step wizard with progressive disclosure. The steps never change in\nnumber (always STEPS); instead, follow-up questions appear inline within a\nstep depending on earlier answers — answer "buiten Nederland gewerkt? → ja"\nand the country/hours questions reveal in the same step; report few hours and\nthe scholing-question reveals inside the 'werk' step. "Is this field required\nright now" is a pure function (validateStep/lageUren), so it's trivial to\ntest and impossible to get out of sync with the data.

\n", "kind": 193 }, { "name": "Msg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "Postcode", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/postcode.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: a Dutch postcode. "Parse, don't validate" — a Postcode is a\ndistinct type from a raw string, mintable only via parsePostcode, so holding\none is proof it is well-formed.

\n", "kind": 184 }, { "name": "RegistratieMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "RegistratieState", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "RegistrationStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "description": "

Registration status as a discriminated union: each variant owns exactly the\ndata that makes sense for it. Only an active (Geregistreerd) registration has\na herregistratie date; a struck-off (Doorgehaald) one cannot carry one. The\nold flat interface allowed that impossible combination — this makes it\nunrepresentable.

\n", "kind": 193 }, { "name": "RemoteData", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/shared/application/remote-data.ts", "deprecated": false, "deprecationMessage": "", "description": "

The four mutually-exclusive states of an async fetch, as a tagged union.\nCrucially the data lives ON the state: only Failure has an error, only\nSuccess has a value. "Loaded but no value" or "error with stale value"\nare unrepresentable — Richard Feldman's RemoteData.

\n", "kind": 193 }, { "name": "Result", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "description": "

A computation that either succeeded with a value or failed with an error.\nPlain objects (no classes) to match the signal/httpResource ergonomics.

\n", "kind": 193 }, { "name": "Scenario", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"default\" | \"slow\" | \"loading\" | \"empty\" | \"error\" | \"upload-slow\" | \"upload-fail\"", "file": "src/app/shared/infrastructure/scenario.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "State", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

The change-request (adreswijziging) form as one tagged union — the SAME idiom\nas the wizards, just single-step. draft/errors exist only while Editing;\nSubmitting/Submitted/Failed carry the parsed Valid. Illegal states (submitting\nan invalid draft, a success screen with errors) are unrepresentable.

\n", "kind": 193 }, { "name": "StatusTag", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "RegistrationStatus", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "description": "

Just the discriminant — for atoms that only need the label/color.

\n", "kind": 200 }, { "name": "StepErrors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 184 }, { "name": "StepId", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"buitenland\" | \"werk\" | \"review\"", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

The three fixed steps. Each step groups one or more questions.

\n", "kind": 193 }, { "name": "StepId", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"adres\" | \"beroep\" | \"controle\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

A FIXED 3-step registration wizard. The steps never change in number (always\nSTEPS): (1) adres + correspondentievoorkeur, (2) beroep o.b.v. diploma,\n(3) controle & indienen. Follow-up questions appear inline within a step\n(e.g. choosing 'email' reveals the e-mail field). "Is this field required\nright now" is a pure function (validateStep), so it is trivial to test and\nimpossible to get out of sync with the data. Invariants live here, not in the\nUI: the wizard reaches Indienen only when a complete ValidRegistratie parses.

\n", "kind": 193 }, { "name": "UploadMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "UploadStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Pure upload domain (no Angular). Reusable across wizards: the host wizard folds\nUploadState into its Model and delegates upload Msgs to reduceUpload.\nIllegal states are unrepresentable by construction; the few transitions a union\ncan't express (channel↔upload exclusivity, single-file categories) are enforced\nhere in the reducer. Effects live in the shell (upload-shell.service.ts).

\n", "kind": 193 }, { "name": "Uren", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/uren.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: a non-negative whole number of hours.

\n", "kind": 184 }, { "name": "Variant", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"primary\" | \"secondary\" | \"subtle\" | \"danger\"", "file": "src/app/shared/ui/button/button.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "WizardMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Every event that can happen to the wizard, as one message type. The component\nsends a WizardMsg; reduce decides the next state. This is the Elm\nModel+Msg+update pattern: ONE pure function describes all state changes.

\n", "kind": 193 }, { "name": "WizardState", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

The whole wizard as one tagged union. step and errors exist ONLY while\nEditing; Submitting/Submitted/Failed carry a Valid payload and nothing else.\nSo "submitting while a field is invalid" or "showing the success screen with\nerrors set" are unrepresentable — the bug class is gone by construction.

\n", "kind": 193 }, { "name": "WizardStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"editing\" | \"submitting\" | \"submitted\" | \"failed\"", "file": "src/app/shared/layout/wizard-shell/wizard-shell.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ], "enumerations": [], "groupedVariables": { "src/app/registratie/infrastructure/applications.adapter.ts": [ { "name": "AANVRAAG_TYPES", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "string[]", "defaultValue": "['registratie', 'herregistratie', 'intake']" } ], "src/app/shared/upload/upload.machine.ts": [ { "name": "ACTIVE", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "ReadonlyArray", "defaultValue": "['queued', 'uploading', 'complete']" }, { "name": "categoryOf", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(s: UploadState, categoryId: string) => s.categories.find((c) => c.categoryId === categoryId)" }, { "name": "find", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(s: UploadState, localId: string) => s.uploads.find((u) => u.localId === localId)" }, { "name": "inFlight", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(s: UploadState): Upload[] =>\n s.uploads.filter((u) => u.status.type === 'queued' || u.status.type === 'uploading')", "rawdescription": "Used by the shell to find what to poll on return: still-in-flight uploads.", "description": "

Used by the shell to find what to poll on return: still-in-flight uploads.

\n" }, { "name": "initialUpload", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "UploadState", "defaultValue": "{\n categories: [],\n uploads: [],\n deliveryChannel: {},\n rejections: {},\n backgroundSyncAvailable: false,\n}" }, { "name": "REJECTION_MESSAGES", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "Record<\"type\" | \"size\" | \"multiple\", string>", "defaultValue": "{\n type: $localize`:@@upload.reject.type:Dit bestandstype is niet toegestaan voor deze categorie.`,\n size: $localize`:@@upload.reject.size:Dit bestand is te groot.`,\n multiple: $localize`:@@upload.reject.multiple:U kunt voor deze categorie maar één bestand uploaden.`,\n}" } ], "src/app/app.config.ts": [ { "name": "appConfig", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/app.config.ts", "deprecated": false, "deprecationMessage": "", "type": "ApplicationConfig", "defaultValue": "{\n providers: [\n provideBrowserGlobalErrorListeners(),\n provideRouter(routes, withViewTransitions()),\n // Dev-only: the ?scenario= toggle must never reach a production build, where\n // a query param could otherwise force errors on the live app.\n provideHttpClient(withInterceptors(isDevMode() ? [scenarioInterceptor] : [])),\n provideApiClient(),\n { provide: SESSION_PORT, useExisting: SessionStore },\n { provide: LOCALE_ID, useValue: 'nl' },\n ]\n}" } ], "src/app/shared/ui/async/async.component.ts": [ { "name": "ASYNC", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/ui/async/async.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "[\n AsyncComponent, AsyncLoadedDirective, AsyncLoadingDirective,\n AsyncEmptyDirective, AsyncErrorDirective,\n] as const", "rawdescription": "Convenience: import this array to get the wrapper + all slot directives.", "description": "

Convenience: import this array to get the wrapper + all slot directives.

\n" } ], "src/app/auth/auth.guard.ts": [ { "name": "authGuard", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/auth/auth.guard.ts", "deprecated": false, "deprecationMessage": "", "type": "CanActivateFn", "defaultValue": "() => {\n const store = inject(SessionStore);\n const router = inject(Router);\n return store.isAuthenticated() ? true : router.createUrlTree(['/login']);\n}", "rawdescription": "Route guard: only let authenticated users in; otherwise redirect to /login.", "description": "

Route guard: only let authenticated users in; otherwise redirect to /login.

\n" } ], "src/app/registratie/application/draft-sync.ts": [ { "name": "DEBOUNCE_MS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/application/draft-sync.ts", "deprecated": false, "deprecationMessage": "", "type": "number", "defaultValue": "600" } ], "src/app/registratie/domain/registratie-wizard.machine.ts": [ { "name": "emptyDraft", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "Draft", "defaultValue": "{ antwoorden: {} }" }, { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "RegistratieState", "defaultValue": "{ tag: 'Invullen', draft: emptyDraft, cursor: 0, errors: {}, upload: initialUpload }" }, { "name": "STEPS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "StepId[]", "defaultValue": "['adres', 'beroep', 'controle']", "rawdescription": "The fixed step list. Number of steps never changes; questions reveal inline.", "description": "

The fixed step list. Number of steps never changes; questions reveal inline.

\n" } ], "src/environments/environment.prod.ts": [ { "name": "environment", "ctype": "miscellaneous", "subtype": "variable", "file": "src/environments/environment.prod.ts", "deprecated": false, "deprecationMessage": "", "type": "object", "defaultValue": "{\n production: true,\n apiBaseUrl: '',\n}", "rawdescription": "Production environment. `apiBaseUrl` stays relative ('') for a same-origin /\nreverse-proxy deployment; set it to the API origin (e.g. 'https://api.example.nl')\nwhen the SPA and backend are served from different hosts. This is the single\nplace the deployed API location is configured.", "description": "

Production environment. apiBaseUrl stays relative ('') for a same-origin /\nreverse-proxy deployment; set it to the API origin (e.g. 'https://api.example.nl')\nwhen the SPA and backend are served from different hosts. This is the single\nplace the deployed API location is configured.

\n" } ], "src/environments/environment.ts": [ { "name": "environment", "ctype": "miscellaneous", "subtype": "variable", "file": "src/environments/environment.ts", "deprecated": false, "deprecationMessage": "", "type": "object", "defaultValue": "{\n production: false,\n apiBaseUrl: '',\n}", "rawdescription": "Default (development) environment. `apiBaseUrl` is empty so requests are\nrelative to the current origin — in dev the ng-serve proxy forwards /api to the\nbackend (proxy.conf.json). Swapped for environment.prod.ts in production builds\n(angular.json fileReplacements).", "description": "

Default (development) environment. apiBaseUrl is empty so requests are\nrelative to the current origin — in dev the ng-serve proxy forwards /api to the\nbackend (proxy.conf.json). Swapped for environment.prod.ts in production builds\n(angular.json fileReplacements).

\n" } ], "src/app/shared/kernel/fp.ts": [ { "name": "err", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(error: E): Result => ({ ok: false, error })" }, { "name": "ok", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(value: T): Result => ({ ok: true, value })" } ], "src/app/shared/upload/upload.adapter.ts": [ { "name": "genericError", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(): string => UPLOAD_FAILED" }, { "name": "parseError", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "(body: string): string => {\n try {\n return problemDetail(JSON.parse(body), UPLOAD_FAILED);\n } catch {\n return genericError();\n }\n}" }, { "name": "UPLOAD_ABORTED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "Symbol('upload-aborted')", "rawdescription": "Sentinel rejection so the caller can tell a user-cancel from a real failure.", "description": "

Sentinel rejection so the caller can tell a user-cancel from a real failure.

\n" }, { "name": "UPLOAD_FAILED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/upload/upload.adapter.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "$localize`:@@upload.failed:Uploaden is niet gelukt. Probeer het opnieuw.`" } ], "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts": [ { "name": "HANDMATIG", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "deprecated": false, "deprecationMessage": "", "type": "string", "defaultValue": "'__handmatig__'" }, { "name": "KANALEN", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "deprecated": false, "deprecationMessage": "", "type": "[]", "defaultValue": "[\n { value: 'email', label: $localize`:@@registratie.kanaalEmail:E-mail` },\n { value: 'post', label: $localize`:@@registratie.kanaalPost:Post` },\n]" } ], "src/app/herregistratie/domain/herregistratie.machine.ts": [ { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "WizardState", "defaultValue": "{ tag: 'Editing', step: 1, draft: { uren: '', jaren: '', punten: '' }, errors: {}, upload: initialUpload }" } ], "src/app/herregistratie/domain/intake.machine.ts": [ { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "IntakeState", "defaultValue": "{ tag: 'Answering', answers: {}, cursor: 0, errors: {}, scholingThreshold: SCHOLING_THRESHOLD_DEFAULT }" }, { "name": "SCHOLING_THRESHOLD_DEFAULT", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "number", "defaultValue": "1000", "rawdescription": "Demo fallback only — the real threshold is a SERVER-OWNED policy value fetched\nat runtime (see IntakePolicyDto / SetPolicy). ponytail: default is the offline\nfallback; the server value wins.", "description": "

Demo fallback only — the real threshold is a SERVER-OWNED policy value fetched\nat runtime (see IntakePolicyDto / SetPolicy). ponytail: default is the offline\nfallback; the server value wins.

\n" }, { "name": "STEPS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "StepId[]", "defaultValue": "['buitenland', 'werk', 'review']", "rawdescription": "The fixed step list. Number of steps never changes; questions reveal inline.", "description": "

The fixed step list. Number of steps never changes; questions reveal inline.

\n" } ], "src/app/registratie/domain/change-request.machine.ts": [ { "name": "initial", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "type": "State", "defaultValue": "{\n tag: 'Editing',\n draft: { straat: '', postcode: '', woonplaats: '' },\n errors: {},\n}" } ], "src/app/shared/ui/radio-group/radio-group.component.ts": [ { "name": "JA_NEE", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/ui/radio-group/radio-group.component.ts", "deprecated": false, "deprecationMessage": "", "type": "RadioOption[]", "defaultValue": "[\n { value: 'ja', label: $localize`:@@common.ja:Ja` },\n { value: 'nee', label: $localize`:@@common.nee:Nee` },\n]", "rawdescription": "The ubiquitous yes/no option pair. Language-agnostic now the labels are\nlocalized, so it lives next to RadioOption and both wizards import it.", "description": "

The ubiquitous yes/no option pair. Language-agnostic now the labels are\nlocalized, so it lives next to RadioOption and both wizards import it.

\n" } ], "src/app/shared/ui/debug-state/mask.ts": [ { "name": "REDACTED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/ui/debug-state/mask.ts", "deprecated": false, "deprecationMessage": "", "type": "string", "defaultValue": "'‹redacted›'" } ], "src/app/shared/infrastructure/api-client.provider.ts": [ { "name": "REQUEST_TIMEOUT_MS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/infrastructure/api-client.provider.ts", "deprecated": false, "deprecationMessage": "", "type": "number", "defaultValue": "10_000", "rawdescription": "Single place every API call passes through: the seam for cross-cutting concerns.", "description": "

Single place every API call passes through: the seam for cross-cutting concerns.

\n" } ], "src/app/app.routes.ts": [ { "name": "routes", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/app.routes.ts", "deprecated": false, "deprecationMessage": "", "type": "Routes", "defaultValue": "[\n {\n path: '',\n component: ShellComponent, // persistent header/footer; only children swap\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'login' },\n { path: 'login', loadComponent: () => \"import('@auth/ui/login.page').then(m => m.LoginPage)\" },\n { path: 'dashboard', canActivate: [authGuard], loadComponent: () => \"import('@registratie/ui/dashboard.page').then(m => m.DashboardPage)\" },\n { path: 'registratie', canActivate: [authGuard], loadComponent: () => \"import('@registratie/ui/registration-detail.page').then(m => m.RegistrationDetailPage)\" },\n { path: 'registreren', canActivate: [authGuard], loadComponent: () => \"import('@registratie/ui/registratie.page').then(m => m.RegistratiePage)\" },\n { path: 'herregistratie', canActivate: [authGuard], loadComponent: () => \"import('@herregistratie/ui/herregistratie.page').then(m => m.HerregistratiePage)\" },\n { path: 'intake', canActivate: [authGuard], loadComponent: () => \"import('@herregistratie/ui/intake.page').then(m => m.IntakePage)\" },\n { path: 'concepts', loadComponent: () => \"import('./showcase/concepts.page').then(m => m.ConceptsPage)\" },\n { path: '**', redirectTo: 'login' },\n ],\n },\n]" } ], "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts": [ { "name": "ROUTES", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "deprecated": false, "deprecationMessage": "", "type": "Record", "defaultValue": "{\n '/dashboard': { label: $localize`:@@crumb.dashboard:Mijn overzicht` },\n '/registratie': { label: $localize`:@@crumb.registratie:Mijn gegevens`, parent: '/dashboard' },\n '/registreren': { label: $localize`:@@crumb.registreren:Inschrijven`, parent: '/dashboard' },\n '/herregistratie': { label: $localize`:@@crumb.herregistratie:Herregistratie`, parent: '/dashboard' },\n '/intake': { label: $localize`:@@crumb.intake:Herregistratie-intake`, parent: '/dashboard' },\n '/concepts': { label: $localize`:@@crumb.concepts:Functionele patronen`, parent: '/dashboard' },\n}" } ], "src/app/shared/infrastructure/scenario.interceptor.ts": [ { "name": "scenarioInterceptor", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/infrastructure/scenario.interceptor.ts", "deprecated": false, "deprecationMessage": "", "type": "HttpInterceptorFn", "defaultValue": "(req, next) => {\n if (!req.url.includes('/api/')) return next(req);\n\n switch (currentScenario()) {\n case 'slow':\n return next(req).pipe(delay(2500));\n case 'loading':\n return next(req).pipe(delay(600_000)); // effectively never resolves\n case 'empty':\n // '[]' so the typed client parses it to an empty array (notes → Empty state).\n return of(new HttpResponse({ status: 200, body: '[]' })).pipe(delay(400));\n case 'error':\n return timer(400).pipe(\n switchMap(() => throwError(() =>\n new HttpErrorResponse({ status: 500, statusText: 'Demo-fout', url: req.url }))),\n );\n default:\n return next(req);\n }\n}", "rawdescription": "Demo-only: rewrites the timing/outcome of API data requests based on\n?scenario= so loading / empty / error states can be shown on demand.\nNon-API requests are untouched.", "description": "

Demo-only: rewrites the timing/outcome of API data requests based on\n?scenario= so loading / empty / error states can be shown on demand.\nNon-API requests are untouched.

\n" } ], "src/app/shared/application/session.port.ts": [ { "name": "SESSION_PORT", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/application/session.port.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "new InjectionToken('SESSION_PORT')" } ], "src/app/auth/application/session.store.ts": [ { "name": "STORAGE_KEY", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/auth/application/session.store.ts", "deprecated": false, "deprecationMessage": "", "type": "string", "defaultValue": "'session-v1'" } ], "src/app/shared/application/submit.ts": [ { "name": "SUBMIT_FAILED", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/application/submit.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", "defaultValue": "$localize`:@@submit.failed:Het indienen is niet gelukt. Probeer het later opnieuw.`" } ], "src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts": [ { "name": "TYPE_LABELS", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts", "deprecated": false, "deprecationMessage": "", "type": "Record", "defaultValue": "{\n registratie: $localize`:@@aanvraagBlock.type.registratie:Inschrijving`,\n herregistratie: $localize`:@@aanvraagBlock.type.herregistratie:Herregistratie`,\n intake: $localize`:@@aanvraagBlock.type.intake:Herregistratie-intake`,\n}" } ], "src/app/shared/infrastructure/scenario.ts": [ { "name": "VALID", "ctype": "miscellaneous", "subtype": "variable", "file": "src/app/shared/infrastructure/scenario.ts", "deprecated": false, "deprecationMessage": "", "type": "Scenario[]", "defaultValue": "['default', 'slow', 'loading', 'empty', 'error', 'upload-slow', 'upload-fail']" } ] }, "groupedFunctions": { "src/app/shared/application/remote-data.ts": [ { "name": "andThen", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Chain a second source that depends on the first one's value.

\n", "args": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "foldRemote", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Exhaustive fold: you must handle every case, checked at compile time.

\n", "args": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "h", "deprecated": false, "deprecationMessage": "" } ], "returnType": "R", "jsdoctags": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "h", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "fromResource", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Project Angular's loosely-typed Resource into a RemoteData value.

\n", "args": [ { "name": "r", "type": "Resource", "deprecated": false, "deprecationMessage": "" }, { "name": "isEmpty", "deprecated": false, "deprecationMessage": "", "defaultValue": "() => false" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "r", "type": "Resource", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "isEmpty", "deprecated": false, "deprecationMessage": "", "defaultValue": "() => false", "tagName": { "text": "param" } } ] }, { "name": "map", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Transform the value inside a Success; pass other states through unchanged.

\n", "args": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "rd", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "map2", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Combine two sources into one. Use this to merge e.g. a BIG-register call\nand a BRP call into a single state the page can render.

\n", "args": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "map3", "file": "src/app/shared/application/remote-data.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Combine three sources (built on map2).

\n", "args": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "c", "type": "RemoteData", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RemoteData", "jsdoctags": [ { "name": "a", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "b", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "c", "type": "RemoteData", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/kernel/fp.ts": [ { "name": "assertNever", "file": "src/app/shared/kernel/fp.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Tiny native-TS functional toolkit. No dependency — this is the whole "library".\nReused by every "impossible states" concept in the POC.

\n", "args": [ { "name": "x", "type": "never", "deprecated": false, "deprecationMessage": "" } ], "returnType": "never", "jsdoctags": [ { "name": "x", "type": "never", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "whenTag", "file": "src/app/shared/kernel/fp.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Narrow a tagged union to one variant by its tag, or null. The single place\nthe cast lives — TS can't narrow through a runtime tag argument, so callers get\nwhenTag(state, 'Editing')?.foo instead of repeating as Extract<…>.

\n", "args": [ { "name": "u", "type": "U", "deprecated": false, "deprecationMessage": "" }, { "name": "tag", "type": "K", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Extract | null", "jsdoctags": [ { "name": "u", "type": "U", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "tag", "type": "K", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/herregistratie/domain/herregistratie.machine.ts": [ { "name": "back", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "hasProgress", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Has the user meaningfully started, so it's worth persisting as a Concept?

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "next", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Advance one step, gating on that step's fields. Illegal elsewhere = no-op.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduce", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "WizardMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "WizardMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "resolve", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Resolve the async submit. Only meaningful while Submitting.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setField", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Update one draft field while editing; ignored in any other state.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "key", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "key", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submit", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Step 3 submit: parse everything + require documents; Submitting only with Valid.

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "upload", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Route an upload sub-message through the pure upload reducer (Editing only).

\n", "args": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "" }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "WizardState", "jsdoctags": [ { "name": "s", "type": "WizardState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validate", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse every field; on success hand back a Valid, else the per-field errors.

\n", "args": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "" }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/herregistratie/domain/intake.machine.ts": [ { "name": "back", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "currentStep", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Which step the cursor currently points at (clamped to the fixed list).

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "StepId", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "hasProgress", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Has the user meaningfully started, so it's worth persisting as a Concept?\n(No auto-prefill here — pristine means truly untouched.)

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "lageUren", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

True when NL-hours are low enough that the scholing question must be answered.\nThe threshold is passed in (server-owned), not hardcoded.

\n", "args": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "unknown", "deprecated": false, "deprecationMessage": "", "defaultValue": "SCHOLING_THRESHOLD_DEFAULT" } ], "returnType": "boolean", "jsdoctags": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "unknown", "deprecated": false, "deprecationMessage": "", "defaultValue": "SCHOLING_THRESHOLD_DEFAULT", "tagName": { "text": "param" } } ] }, { "name": "next", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduce", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "IntakeMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "IntakeMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "resolve", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setAnswer", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "key", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "key", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setPolicy", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Apply a server-owned policy value (e.g. the scholing threshold).

\n", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submit", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "IntakeState", "jsdoctags": [ { "name": "s", "type": "IntakeState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateAll", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse the whole questionnaire into a ValidIntake (called on submit).

\n", "args": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateStep", "file": "src/app/herregistratie/domain/intake.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Validate every question currently visible in ONE step. Errors keyed per field.

\n", "args": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "" }, { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "" }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "a", "type": "Answers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "scholingThreshold", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/registratie-wizard.machine.ts": [ { "name": "back", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "currentStep", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Which step the cursor currently points at (clamped to the fixed list).

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "StepId", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "declareerBeroep", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Declare the beroep for a manually-entered diploma (chosen from a fixed list).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "gaNaarStap", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Jump back to an earlier step to correct data (controle → step N). Forward\njumps are not allowed (would skip validation). Preserves the draft.

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "cursor", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "cursor", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "hasProgress", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Has the user meaningfully started, so it's worth persisting as a Concept? Excludes\nthe automatic BRP address prefill on step 0 — a bare page visit creates nothing.\nponytail: an address typed at step 0 without any of these signals is not yet\npersisted (created once they advance/choose); accepted regression vs. sessionStorage.

\n", "args": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "Extract", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "kiesDiploma", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Pick a DUO diploma; the beroep is derived from it and the applicable policy\nquestions (vraagIds) come with it (both server-computed, passed in).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "diplomaId", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "diplomaId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "beroep", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "kiesHandmatig", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Switch to manual diploma entry: the diploma isn't in DUO, so the MAXIMAL\npolicy-question set applies and the entry is flagged handmatig/unverified. The\nberoep is declared separately (declareerBeroep).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "vraagIds", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "next", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "prefillAdres", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Prefill the address from a BRP lookup and flag its origin (PRD §7).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "straat", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "postcode", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "woonplaats", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "straat", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "postcode", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "woonplaats", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduce", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "RegistratieMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "RegistratieMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "resolve", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "r", "type": "Result", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setAntwoord", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "vraagId", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "vraagId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setCorrespondentie", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "Correspondentie", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "Correspondentie", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "setField", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "key", "type": "DraftField", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "key", "type": "DraftField", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "submit", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "upload", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Route an upload sub-message through the pure upload reducer (Invullen only).

\n", "args": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "" }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "RegistratieState", "jsdoctags": [ { "name": "s", "type": "RegistratieState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "msg", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateAll", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse the whole wizard into a ValidRegistratie (called on submit).

\n", "args": [ { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "" }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validateStep", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Validate every question currently visible in ONE step. Errors keyed per field.

\n", "args": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "" }, { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "" }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "step", "type": "StepId", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "d", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "upload", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/block-actions.ts": [ { "name": "blockActions", "file": "src/app/registratie/domain/block-actions.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "status", "type": "AanvraagStatus", "deprecated": false, "deprecationMessage": "" } ], "returnType": "BlockAction[]", "jsdoctags": [ { "name": "status", "type": "AanvraagStatus", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/upload/upload.machine.ts": [ { "name": "categorySatisfied", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

A required category is satisfied by an initiated upload OR a post-delivery choice.

\n", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" }, { "name": "categoryId", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "categoryId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "deliveryRefs", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The submit payload fragment: digital docs carry their documentId, post categories the channel.

\n", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Array", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "mapUpload", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Map one upload's status, leaving the rest of the list untouched.

\n", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" }, { "name": "localId", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "f", "deprecated": false, "deprecationMessage": "" } ], "returnType": "UploadState", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "localId", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "f", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "reduceUpload", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "UploadState", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "UploadMsg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "rejectReason", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

FE format-validation (never authority — the server re-validates). Returns the\nrejection reason for one file, or null if it passes the category's type/size.

\n", "args": [ { "name": "cat", "type": "DocumentCategory", "deprecated": false, "deprecationMessage": "" }, { "name": "file", "deprecated": false, "deprecationMessage": "" } ], "returnType": "\"type\" | \"size\" | null", "jsdoctags": [ { "name": "cat", "type": "DocumentCategory", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "file", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "requiredCategoriesSatisfied", "file": "src/app/shared/upload/upload.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "s", "type": "UploadState", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/application/draft-sync.ts": [ { "name": "createDraftSync", "file": "src/app/registratie/application/draft-sync.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The effectful glue that replaces per-wizard sessionStorage with a backend-owned\nConcept (PRD 0001, phase D). Instantiated in a field initializer (like\ncreateStore/createUploadController). Responsibilities:

\n
    \n
  • resume: if the URL carries ?aanvraag=<id>, load that draft and seed the machine;
  • \n
  • create-on-first-progress: the Concept is created lazily the first time the wizard\nreports a non-null snapshot, and the id is stamped into the URL (so a reload resumes);
  • \n
  • debounced draft sync on every subsequent change.
  • \n
\n

Inert without a Router (stories) or when enabled() is false — no network, no resume.

\n", "args": [ { "name": "deps", "type": "DraftSyncDeps", "deprecated": false, "deprecationMessage": "" } ], "jsdoctags": [ { "name": "deps", "type": "DraftSyncDeps", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/application/store.ts": [ { "name": "createStore", "file": "src/app/shared/application/store.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "init", "type": "Model", "deprecated": false, "deprecationMessage": "" }, { "name": "update", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Store", "jsdoctags": [ { "name": "init", "type": "Model", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "update", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/upload/upload-controller.ts": [ { "name": "createUploadController", "file": "src/app/shared/upload/upload-controller.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The effectful glue between the <app-document-upload> organism's events and the\npure upload reducer + transport. Both wizards instantiate one (in a field\ninitializer, like createStore). Holds the only state a reducer can't: the live\nFile blobs keyed by localId (needed to retry an upload). Loads categories,\nreports background-sync availability, and polls on tab refocus.

\n", "args": [ { "name": "deps", "type": "UploadControllerDeps", "deprecated": false, "deprecationMessage": "" } ], "jsdoctags": [ { "name": "deps", "type": "UploadControllerDeps", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/infrastructure/scenario.ts": [ { "name": "currentScenario", "file": "src/app/shared/infrastructure/scenario.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Reads ?scenario= from the URL so a demo can force each async state.

\n", "args": [], "returnType": "Scenario" } ], "src/app/showcase/concepts.page.ts": [ { "name": "fakeResource", "file": "src/app/showcase/concepts.page.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Minimal fake Resource so can be driven through every state without HTTP.

\n", "args": [ { "name": "status", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "value", "type": "T", "deprecated": false, "deprecationMessage": "", "optional": true }, { "name": "error", "type": "Error", "deprecated": false, "deprecationMessage": "", "optional": true } ], "returnType": "Resource", "jsdoctags": [ { "name": "status", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "value", "type": "T", "deprecated": false, "deprecationMessage": "", "optional": true, "tagName": { "text": "param" } }, { "name": "error", "type": "Error", "deprecated": false, "deprecationMessage": "", "optional": true, "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/tasks.ts": [ { "name": "formatNL", "file": "src/app/registratie/domain/tasks.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "d", "type": "Date", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "d", "type": "Date", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "tasksFromProfile", "file": "src/app/registratie/domain/tasks.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Derive the open tasks for a professional (pure). Eligibility is the server's\ndecision (decisions.eligibleForHerregistratie), passed in — the FE renders it,\nit does not recompute the rule (ADR-0001). The deadline is still formatted\nclient-side for the task copy (presentation, not a rule).

\n", "args": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "" }, { "name": "eligibleForHerregistratie", "type": "boolean", "deprecated": false, "deprecationMessage": "" } ], "returnType": "PortalTask[]", "jsdoctags": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "eligibleForHerregistratie", "type": "boolean", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/registration.policy.ts": [ { "name": "herregistratieDeadline", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

The herregistratie deadline, if the status has one (only the active state does).

\n", "args": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Date | null", "jsdoctags": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "isHerregistratieEligible", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

A registration may apply for herregistratie only while active and within the\nwindow before its deadline. A struck-off or suspended registration may not.\nSERVER-OWNED RULE: this now runs on the backend (BFF), which ships the result\nas decisions.eligibleForHerregistratie in the dashboard view. Kept here as\nthe reference implementation + unit test; the frontend no longer calls it.

\n", "args": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "" }, { "name": "today", "type": "Date", "deprecated": false, "deprecationMessage": "" }, { "name": "windowMonths", "type": "number", "deprecated": false, "deprecationMessage": "", "defaultValue": "12" } ], "returnType": "boolean", "jsdoctags": [ { "name": "reg", "type": "Registration", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "today", "type": "Date", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "windowMonths", "type": "number", "deprecated": false, "deprecationMessage": "", "defaultValue": "12", "tagName": { "text": "param" } } ] }, { "name": "isStatusConsistent", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Invariant check used in tests/demos: a non-active status must not carry a\nherregistratie date. The union already enforces this structurally; this is\nthe runtime statement of the same rule.

\n", "args": [ { "name": "status", "type": "RegistrationStatus", "deprecated": false, "deprecationMessage": "" } ], "returnType": "boolean", "jsdoctags": [ { "name": "status", "type": "RegistrationStatus", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "statusColor", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Brand colour token for a status. assertNever forces a colour for every new\nstatus variant at compile time.

\n", "args": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "statusLabel", "file": "src/app/registratie/domain/registration.policy.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Domain logic for a registration — pure functions, NO Angular. This is where\n"what the business rules say" lives, separate from "how it looks" (UI) and\n"where the data comes from" (infrastructure). Keeping it framework-free means\nit is trivial to read and unit-test.

\n", "args": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "tag", "type": "StatusTag", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/infrastructure/api-client.provider.ts": [ { "name": "httpClientFetch", "file": "src/app/shared/infrastructure/api-client.provider.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Adapts Angular's HttpClient to the fetch-shaped interface the NSwag-generated\nclient expects, so every API call flows through HttpClient interceptors (the\n?scenario= toggle) and the cross-cutting concerns below. The generated client\nis the only place HTTP shapes are known; this is the only place it meets\nAngular's HTTP stack — i.e. the one seam to add:

\n
    \n
  • timeout (done — REQUEST_TIMEOUT_MS),
  • \n
  • correlation id (done — X-Correlation-Id, echoed in backend logs),
  • \n
  • idempotency key for writes (done — Idempotency-Key; a real retry would thread\na STABLE key per logical submit so re-sends dedupe; here it's per-attempt),
  • \n
  • auth: attach Authorization: Bearer … here (one line) when real DigiD lands,
  • \n
  • retry/backoff: wrap the pipe with rxjs retry({ count, delay }) here.
  • \n
\n", "args": [ { "name": "http", "type": "HttpClient", "deprecated": false, "deprecationMessage": "" } ], "jsdoctags": [ { "name": "http", "type": "HttpClient", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "provideApiClient", "file": "src/app/shared/infrastructure/api-client.provider.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Provide a root ApiClient that talks through HttpClient. Base URL comes from the\nenvironment (relative '' in dev → proxy; configurable per deployment).

\n", "args": [], "returnType": "Provider" } ], "src/app/auth/domain/session.ts": [ { "name": "isAuthenticated", "file": "src/app/auth/domain/session.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Session", "jsdoctags": [ { "name": "s", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/ui/debug-state/mask.ts": [ { "name": "maskBsn", "file": "src/app/shared/ui/debug-state/mask.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Redact a BSN for the dev state view: keep the last 3 digits, mask the rest.

\n", "args": [ { "name": "bsn", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "bsn", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "maskTail", "file": "src/app/shared/ui/debug-state/mask.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Keep the last keep characters, mask the rest.

\n", "args": [ { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "keep", "type": "number", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "value", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "keep", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "redactProfile", "file": "src/app/shared/ui/debug-state/mask.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Data minimisation for the dev "show the Model" panel: keep the structural /\ndecision-relevant fields (status, beroep, dates of registration) but redact\ndirect personal identifiers (name, address, date of birth) and mask the BIG\nnumber. The panel is for inspecting state SHAPE, never for reading PII.

\n", "args": [ { "name": "p", "type": "BigProfile", "deprecated": false, "deprecationMessage": "" } ], "returnType": "unknown", "jsdoctags": [ { "name": "p", "type": "BigProfile", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/ui/debug-state/debug-state.component.ts": [ { "name": "maskSession", "file": "src/app/shared/ui/debug-state/debug-state.component.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Session | null", "jsdoctags": [ { "name": "s", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/infrastructure/applications.adapter.ts": [ { "name": "parseAanvraagStatus", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse of the status union — the tag drives which fields must exist.

\n", "args": [ { "name": "s", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "s", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseApplicationDetail", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseApplications", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseApplicationSummary", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseCommon", "file": "src/app/registratie/infrastructure/applications.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "dto", "type": "ApplicationSummaryDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "dto", "type": "ApplicationSummaryDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/value-objects/big-nummer.ts": [ { "name": "parseBigNummer", "file": "src/app/registratie/domain/value-objects/big-nummer.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/infrastructure/brp.adapter.ts": [ { "name": "parseBrpAddress", "file": "src/app/registratie/infrastructure/brp.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse: validate the untrusted response shape. "Geen adres" is a\nvalid outcome (gevonden: false), not a malformed response. ponytail: hand-written;\nreach for a schema lib once the contract count grows.

\n", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/infrastructure/dashboard-view.adapter.ts": [ { "name": "parseDashboardView", "file": "src/app/registratie/infrastructure/dashboard-view.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse: validate the untrusted response shape and map the DTO\nonto our own domain model. Hand-written on purpose — no Zod for a single\ncontract. ponytail: reach for a schema lib once the contract count grows.

\n", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/infrastructure/duo.adapter.ts": [ { "name": "parseDuoLookup", "file": "src/app/registratie/infrastructure/duo.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Trust-boundary parse: validate the untrusted response shape (diplomas, each\nwith derived beroep + policy questions, plus the manual-entry fallback).

\n", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "parseQuestions", "file": "src/app/registratie/infrastructure/duo.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "json", "deprecated": false, "deprecationMessage": "" } ], "returnType": "[] | null", "jsdoctags": [ { "name": "json", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/value-objects/email.ts": [ { "name": "parseEmail", "file": "src/app/registratie/domain/value-objects/email.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/value-objects/postcode.ts": [ { "name": "parsePostcode", "file": "src/app/registratie/domain/value-objects/postcode.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/value-objects/uren.ts": [ { "name": "parseUren", "file": "src/app/registratie/domain/value-objects/uren.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "raw", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/infrastructure/api-error.ts": [ { "name": "problemDetail", "file": "src/app/shared/infrastructure/api-error.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Extract a human-readable message from a rejected API call. A 4xx/5xx with a\nProblemDetails body (RFC 7807) is thrown by the generated client as the parsed\nobject; anything else falls back to the given message.

\n", "args": [ { "name": "e", "deprecated": false, "deprecationMessage": "" }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "string", "jsdoctags": [ { "name": "e", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "problemFieldErrors", "file": "src/app/shared/infrastructure/api-error.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

SEAM (G4): map a server validation envelope to field-level errors.

\n

ASP.NET's ValidationProblemDetails carries errors: { field: string[] }. The\nbackend today returns only detail (one banner message), so this returns {}.\nWhen the backend starts sending errors, a machine's SubmitFailed handler can\nmerge this into its own errors map — the field-keyed shape the wizards already\nrender — so a rejection shows inline per field, not just as a banner. The\nconsumer hook is the only thing left to wire; the contract boundary lives here.

\n", "args": [ { "name": "e", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Record", "jsdoctags": [ { "name": "e", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/domain/change-request.machine.ts": [ { "name": "reduce", "file": "src/app/registratie/domain/change-request.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "State", "deprecated": false, "deprecationMessage": "" }, { "name": "m", "type": "Msg", "deprecated": false, "deprecationMessage": "" } ], "returnType": "State", "jsdoctags": [ { "name": "s", "type": "State", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "m", "type": "Msg", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "validate", "file": "src/app/registratie/domain/change-request.machine.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Parse via the value objects; on success hand back a Valid, else per-field errors.

\n", "args": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Result", "jsdoctags": [ { "name": "draft", "type": "Draft", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/auth/application/session.store.ts": [ { "name": "restore", "file": "src/app/auth/application/session.store.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Restore a persisted session (best-effort; corrupt entry → logged out).\nG2: validate the shape before trusting it. G1: the BSN is never persisted\n(see the effect below), so a restored session carries an empty one — it is\nunused after login; only naam is shown in the chrome.

\n", "args": [], "returnType": "Session | null" } ], "src/app/shared/application/submit.ts": [ { "name": "runSubmit", "file": "src/app/shared/application/submit.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Run a mutating API call and fold it into a Result — the one place the\ntry/catch + ProblemDetails-mapping lives, so every submit-* command is just\nits own payload mapping. The backend re-validates and returns a 422\nProblemDetails on rejection, surfaced here as the error string.

\n", "args": [ { "name": "fn", "deprecated": false, "deprecationMessage": "" }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Promise>", "jsdoctags": [ { "name": "fn", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "fallback", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/upload/upload.adapter.ts": [ { "name": "simulateUpload", "file": "src/app/shared/upload/upload.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Demo-only (dev): the real XHR POST finishes instantly for metadata, so progress\nand failure can't otherwise be shown. Drives the progress bar over ~2.5s, then\nsucceeds (upload-slow) or fails (upload-fail). ponytail: timer-based, cancel\nvia the returned handle; no network.

\n", "args": [ { "name": "scenario", "deprecated": false, "deprecationMessage": "" }, { "name": "onProgress", "deprecated": false, "deprecationMessage": "" } ], "returnType": "XhrUploadHandle", "jsdoctags": [ { "name": "scenario", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "onProgress", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "toCategory", "file": "src/app/shared/upload/upload.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Wire DTO (all fields optional) → domain.

\n", "args": [ { "name": "c", "type": "DocumentCategoryDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "DocumentCategory", "jsdoctags": [ { "name": "c", "type": "DocumentCategoryDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] }, { "name": "toStatusItem", "file": "src/app/shared/upload/upload.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "s", "type": "UploadStatusItemDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "StatusItem", "jsdoctags": [ { "name": "s", "type": "UploadStatusItemDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/registratie/application/submit-change-request.ts": [ { "name": "submitChangeRequest", "file": "src/app/registratie/application/submit-change-request.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Command: POST an address change to the backend (/api/v1/change-requests),\nwhich re-validates and returns a reference. Same shape as the other submit\ncommands — a Result, never a thrown error — so the form's reduce can branch.

\n", "args": [ { "name": "client", "type": "ApiClient", "deprecated": false, "deprecationMessage": "" }, { "name": "data", "type": "Valid", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Promise>", "jsdoctags": [ { "name": "client", "type": "ApiClient", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "data", "type": "Valid", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/infrastructure/api-client.ts": [ { "name": "throwException", "file": "src/app/shared/infrastructure/api-client.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "", "args": [ { "name": "message", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "status", "type": "number", "deprecated": false, "deprecationMessage": "" }, { "name": "response", "type": "string", "deprecated": false, "deprecationMessage": "" }, { "name": "headers", "deprecated": false, "deprecationMessage": "" }, { "name": "result", "type": "any", "deprecated": false, "deprecationMessage": "", "optional": true } ], "returnType": "any", "jsdoctags": [ { "name": "message", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "status", "type": "number", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "response", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "headers", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } }, { "name": "result", "type": "any", "deprecated": false, "deprecationMessage": "", "optional": true, "tagName": { "text": "param" } } ] } ], "src/app/registratie/infrastructure/big-register.adapter.ts": [ { "name": "toAantekening", "file": "src/app/registratie/infrastructure/big-register.adapter.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Map the wire DTO (all fields optional) onto our domain type.

\n", "args": [ { "name": "n", "type": "AantekeningDto", "deprecated": false, "deprecationMessage": "" } ], "returnType": "Aantekening", "jsdoctags": [ { "name": "n", "type": "AantekeningDto", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ], "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts": [ { "name": "trailFor", "file": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "ctype": "miscellaneous", "subtype": "function", "deprecated": false, "deprecationMessage": "", "description": "

Build the breadcrumb trail for a router url (query/fragment stripped).\nReturns [] for unknown routes (e.g. /login) so the bar can hide itself.

\n", "args": [ { "name": "url", "type": "string", "deprecated": false, "deprecationMessage": "" } ], "returnType": "BreadcrumbItem[]", "jsdoctags": [ { "name": "url", "type": "string", "deprecated": false, "deprecationMessage": "", "tagName": { "text": "param" } } ] } ] }, "groupedEnumerations": {}, "groupedTypeAliases": { "src/app/registratie/domain/registration.ts": [ { "name": "AantekeningType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"Specialisme\" | \"Aantekening\"", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "description": "

A note is either a recognised specialism or a plain annotation — a closed set,\nnot an open string, so a typo can't slip through.

\n", "kind": 193 }, { "name": "RegistrationStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "description": "

Registration status as a discriminated union: each variant owns exactly the\ndata that makes sense for it. Only an active (Geregistreerd) registration has\na herregistratie date; a struck-off (Doorgehaald) one cannot carry one. The\nold flat interface allowed that impossible combination — this makes it\nunrepresentable.

\n", "kind": 193 }, { "name": "StatusTag", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "RegistrationStatus", "file": "src/app/registratie/domain/registration.ts", "deprecated": false, "deprecationMessage": "", "description": "

Just the discriminant — for atoms that only need the label/color.

\n", "kind": 200 } ], "src/app/registratie/domain/aanvraag.ts": [ { "name": "AanvraagStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/aanvraag.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "AanvraagType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"registratie\" | \"herregistratie\" | \"intake\"", "file": "src/app/registratie/domain/aanvraag.ts", "deprecated": false, "deprecationMessage": "", "description": "

An application (aanvraag) as the frontend sees it — the parsed, domain-side view\nof the backend-owned aggregate (see backend ApplicationStore + PRD 0001). Pure\ntypes, no Angular. Lives in registratie because the dashboard (here) is the\nconsumer and the downstream wizards (herregistratie → registratie) produce them.

\n

The status is a discriminated union so illegal states are unrepresentable — same\nreflex as RemoteData. The server computes which tag applies (auto-approval on\nread); the FE renders it, it does not recompute the lifecycle.

\n", "kind": 193 } ], "src/app/registratie/ui/address-fields/address-fields.component.ts": [ { "name": "AdresErrors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/registratie/ui/address-fields/address-fields.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 184 } ], "src/app/registratie/domain/registratie-wizard.machine.ts": [ { "name": "AdresHerkomst", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"brp\" | \"handmatig\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Where a piece of data came from — recorded on the aggregate (PRD §5).

\n", "kind": 193 }, { "name": "Correspondentie", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"email\" | \"post\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "DiplomaHerkomst", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"duo\" | \"handmatig\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "DraftField", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"straat\" | \"postcode\" | \"woonplaats\" | \"email\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Text fields settable via SetField.

\n", "kind": 193 }, { "name": "RegistratieMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "RegistratieState", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "StepId", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"adres\" | \"beroep\" | \"controle\"", "file": "src/app/registratie/domain/registratie-wizard.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

A FIXED 3-step registration wizard. The steps never change in number (always\nSTEPS): (1) adres + correspondentievoorkeur, (2) beroep o.b.v. diploma,\n(3) controle & indienen. Follow-up questions appear inline within a step\n(e.g. choosing 'email' reveals the e-mail field). "Is this field required\nright now" is a pure function (validateStep), so it is trivial to test and\nimpossible to get out of sync with the data. Invariants live here, not in the\nUI: the wizard reaches Indienen only when a complete ValidRegistratie parses.

\n", "kind": 193 } ], "src/app/shared/ui/alert/alert.component.ts": [ { "name": "AlertType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"info\" | \"ok\" | \"warning\" | \"error\"", "file": "src/app/shared/ui/alert/alert.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ], "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts": [ { "name": "AlertType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"info\" | \"ok\" | \"warning\" | \"error\"", "file": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "BannerType", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"info\" | \"warning\" | \"error\"", "file": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ], "src/app/registratie/domain/value-objects/big-nummer.ts": [ { "name": "BigNummer", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/big-nummer.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: a BIG registration number — 11 digits.

\n", "kind": 184 } ], "src/app/registratie/domain/block-actions.ts": [ { "name": "BlockAction", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"resume\" | \"cancel\" | \"viewDocuments\"", "file": "src/app/registratie/domain/block-actions.ts", "deprecated": false, "deprecationMessage": "", "description": "

What a dashboard "Mijn aanvragen" block offers per status. The badge itself\nfollows directly from status.tag (the UI maps tag → colour + label), so this\npure function owns only the actions decision.

\n", "kind": 193 } ], "src/app/shared/kernel/fp.ts": [ { "name": "Brand", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "unknown", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "description": "

Nominal typing: Brand<string, 'Postcode'> is assignable from a plain string\nonly through an explicit cast — so a smart constructor is the only minter.

\n", "kind": 194 }, { "name": "Result", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type", "file": "src/app/shared/kernel/fp.ts", "deprecated": false, "deprecationMessage": "", "description": "

A computation that either succeeded with a value or failed with an error.\nPlain objects (no classes) to match the signal/httpResource ergonomics.

\n", "kind": 193 } ], "src/app/shared/upload/upload.machine.ts": [ { "name": "DeliveryChannel", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"digital\" | \"post\"", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "UploadMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "UploadStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/shared/upload/upload.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Pure upload domain (no Angular). Reusable across wizards: the host wizard folds\nUploadState into its Model and delegates upload Msgs to reduceUpload.\nIllegal states are unrepresentable by construction; the few transitions a union\ncan't express (channel↔upload exclusivity, single-file categories) are enforced\nhere in the reducer. Effects live in the shell (upload-shell.service.ts).

\n", "kind": 193 } ], "src/app/shared/upload/upload-shell.service.ts": [ { "name": "Dispatch", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "function", "file": "src/app/shared/upload/upload-shell.service.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 185 } ], "src/app/registratie/domain/value-objects/email.ts": [ { "name": "Email", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/email.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: an e-mail address. "Parse, don't validate" — an Email is a\ndistinct type from a raw string, mintable only via parseEmail, so holding one\nis proof it is well-formed. Format-only check (the FE keeps format validation\nfor instant feedback; the backend stays the authority — see ADR-0001).

\n", "kind": 184 } ], "src/app/registratie/application/applications.store.ts": [ { "name": "Err", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Error | undefined", "file": "src/app/registratie/application/applications.store.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ], "src/app/registratie/application/big-profile.store.ts": [ { "name": "Err", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Error | undefined", "file": "src/app/registratie/application/big-profile.store.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ], "src/app/herregistratie/domain/intake.machine.ts": [ { "name": "Errors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Per-field error map: one message per question, since a step holds several.

\n", "kind": 184 }, { "name": "IntakeMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "IntakeState", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "JaNee", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"ja\" | \"nee\"", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

A FIXED 3-step wizard with progressive disclosure. The steps never change in\nnumber (always STEPS); instead, follow-up questions appear inline within a\nstep depending on earlier answers — answer "buiten Nederland gewerkt? → ja"\nand the country/hours questions reveal in the same step; report few hours and\nthe scholing-question reveals inside the 'werk' step. "Is this field required\nright now" is a pure function (validateStep/lageUren), so it's trivial to\ntest and impossible to get out of sync with the data.

\n", "kind": 193 }, { "name": "StepId", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"buitenland\" | \"werk\" | \"review\"", "file": "src/app/herregistratie/domain/intake.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

The three fixed steps. Each step groups one or more questions.

\n", "kind": 193 } ], "src/app/registratie/domain/change-request.machine.ts": [ { "name": "Errors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 184 }, { "name": "Msg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 }, { "name": "State", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/registratie/domain/change-request.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

The change-request (adreswijziging) form as one tagged union — the SAME idiom\nas the wizards, just single-step. draft/errors exist only while Editing;\nSubmitting/Submitted/Failed carry the parsed Valid. Illegal states (submitting\nan invalid draft, a success screen with errors) are unrepresentable.

\n", "kind": 193 } ], "src/app/registratie/domain/value-objects/postcode.ts": [ { "name": "Postcode", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/postcode.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: a Dutch postcode. "Parse, don't validate" — a Postcode is a\ndistinct type from a raw string, mintable only via parsePostcode, so holding\none is proof it is well-formed.

\n", "kind": 184 } ], "src/app/shared/application/remote-data.ts": [ { "name": "RemoteData", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/shared/application/remote-data.ts", "deprecated": false, "deprecationMessage": "", "description": "

The four mutually-exclusive states of an async fetch, as a tagged union.\nCrucially the data lives ON the state: only Failure has an error, only\nSuccess has a value. "Loaded but no value" or "error with stale value"\nare unrepresentable — Richard Feldman's RemoteData.

\n", "kind": 193 } ], "src/app/shared/infrastructure/scenario.ts": [ { "name": "Scenario", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"default\" | \"slow\" | \"loading\" | \"empty\" | \"error\" | \"upload-slow\" | \"upload-fail\"", "file": "src/app/shared/infrastructure/scenario.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ], "src/app/herregistratie/domain/herregistratie.machine.ts": [ { "name": "StepErrors", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Partial>", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 184 }, { "name": "WizardMsg", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

Every event that can happen to the wizard, as one message type. The component\nsends a WizardMsg; reduce decides the next state. This is the Elm\nModel+Msg+update pattern: ONE pure function describes all state changes.

\n", "kind": 193 }, { "name": "WizardState", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "literal type | literal type | literal type | literal type", "file": "src/app/herregistratie/domain/herregistratie.machine.ts", "deprecated": false, "deprecationMessage": "", "description": "

The whole wizard as one tagged union. step and errors exist ONLY while\nEditing; Submitting/Submitted/Failed carry a Valid payload and nothing else.\nSo "submitting while a field is invalid" or "showing the success screen with\nerrors set" are unrepresentable — the bug class is gone by construction.

\n", "kind": 193 } ], "src/app/registratie/domain/value-objects/uren.ts": [ { "name": "Uren", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "Brand", "file": "src/app/registratie/domain/value-objects/uren.ts", "deprecated": false, "deprecationMessage": "", "description": "

Value object: a non-negative whole number of hours.

\n", "kind": 184 } ], "src/app/shared/ui/button/button.component.ts": [ { "name": "Variant", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"primary\" | \"secondary\" | \"subtle\" | \"danger\"", "file": "src/app/shared/ui/button/button.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ], "src/app/shared/layout/wizard-shell/wizard-shell.component.ts": [ { "name": "WizardStatus", "ctype": "miscellaneous", "subtype": "typealias", "rawtype": "\"editing\" | \"submitting\" | \"submitted\" | \"failed\"", "file": "src/app/shared/layout/wizard-shell/wizard-shell.component.ts", "deprecated": false, "deprecationMessage": "", "description": "", "kind": 193 } ] } }, "routes": { "name": "", "kind": "module", "children": [ { "name": "ShellComponent", "kind": "component", "filename": "src/app/app.routes.ts" }, { "name": "login", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "dashboard", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "registratie", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "registreren", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "herregistratie", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "intake", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "concepts", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "**", "kind": "route-path", "filename": "src/app/app.routes.ts" }, { "name": "login", "kind": "route-redirect", "filename": "src/app/app.routes.ts" }, { "name": "login", "kind": "route-redirect", "filename": "src/app/app.routes.ts" } ] }, "coverage": { "count": 38, "status": "medium", "files": [ { "filePath": "src/app/app.config.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "appConfig", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/app.routes.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "routes", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/app.ts", "type": "component", "linktype": "component", "name": "App", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/auth/application/session.store.ts", "type": "injectable", "linktype": "injectable", "name": "SessionStore", "coveragePercent": 25, "coverageCount": "2/8", "status": "low" }, { "filePath": "src/app/auth/application/session.store.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "restore", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/auth/application/session.store.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "STORAGE_KEY", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/auth/auth.guard.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "authGuard", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/auth/domain/session.ts", "type": "interface", "linktype": "interface", "name": "Session", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/auth/domain/session.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "isAuthenticated", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/auth/infrastructure/digid.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "DigidAdapter", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/auth/ui/login-form/login-form.component.ts", "type": "component", "linktype": "component", "name": "LoginFormComponent", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/auth/ui/login.page.ts", "type": "component", "linktype": "component", "name": "LoginPage", "coveragePercent": 0, "coverageCount": "0/5", "status": "low" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "interface", "linktype": "interface", "name": "Draft", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "interface", "linktype": "interface", "name": "Valid", "coveragePercent": 20, "coverageCount": "1/5", "status": "low" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "back", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "hasProgress", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "next", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "reduce", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "resolve", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "setField", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "submit", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "upload", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "validate", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "initial", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "StepErrors", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "WizardMsg", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/herregistratie.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "WizardState", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "interface", "linktype": "interface", "name": "Answers", "coveragePercent": 14, "coverageCount": "1/7", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "interface", "linktype": "interface", "name": "ValidIntake", "coveragePercent": 14, "coverageCount": "1/7", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "back", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "currentStep", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "hasProgress", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "lageUren", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "next", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "reduce", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "resolve", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "setAnswer", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "setPolicy", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "submit", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "validateAll", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "validateStep", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "initial", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "SCHOLING_THRESHOLD_DEFAULT", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "STEPS", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Errors", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "IntakeMsg", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "IntakeState", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "JaNee", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/domain/intake.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "StepId", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/herregistratie/infrastructure/intake-policy.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "IntakePolicyAdapter", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/herregistratie/ui/herregistratie-wizard/herregistratie-wizard.component.ts", "type": "component", "linktype": "component", "name": "HerregistratieWizardComponent", "coveragePercent": 19, "coverageCount": "6/31", "status": "low" }, { "filePath": "src/app/herregistratie/ui/herregistratie.page.ts", "type": "component", "linktype": "component", "name": "HerregistratiePage", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/herregistratie/ui/intake-wizard/intake-wizard.component.ts", "type": "component", "linktype": "component", "name": "IntakeWizardComponent", "coveragePercent": 21, "coverageCount": "7/32", "status": "low" }, { "filePath": "src/app/herregistratie/ui/intake.page.ts", "type": "component", "linktype": "component", "name": "IntakePage", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/application/applications.store.ts", "type": "injectable", "linktype": "injectable", "name": "ApplicationsStore", "coveragePercent": 57, "coverageCount": "4/7", "status": "good" }, { "filePath": "src/app/registratie/application/applications.store.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Err", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/application/big-profile.store.ts", "type": "injectable", "linktype": "injectable", "name": "BigProfileStore", "coveragePercent": 42, "coverageCount": "6/14", "status": "medium" }, { "filePath": "src/app/registratie/application/big-profile.store.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Err", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/application/draft-sync.ts", "type": "interface", "linktype": "interface", "name": "DraftSnapshot", "coveragePercent": 20, "coverageCount": "1/5", "status": "low" }, { "filePath": "src/app/registratie/application/draft-sync.ts", "type": "interface", "linktype": "interface", "name": "DraftSyncDeps", "coveragePercent": 60, "coverageCount": "3/5", "status": "good" }, { "filePath": "src/app/registratie/application/draft-sync.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "createDraftSync", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/application/draft-sync.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "DEBOUNCE_MS", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/application/submit-change-request.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "submitChangeRequest", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/contracts/brp-address.dto.ts", "type": "interface", "linktype": "interface", "name": "BrpAddressDto", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/contracts/dashboard-view.dto.ts", "type": "interface", "linktype": "interface", "name": "DashboardView", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/contracts/dashboard-view.dto.ts", "type": "interface", "linktype": "interface", "name": "DashboardViewDto", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/registratie/contracts/dashboard-view.dto.ts", "type": "interface", "linktype": "interface", "name": "HerregistratieDecisions", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/contracts/duo-diplomas.dto.ts", "type": "interface", "linktype": "interface", "name": "DuoDiplomaDto", "coveragePercent": 0, "coverageCount": "0/7", "status": "low" }, { "filePath": "src/app/registratie/contracts/duo-diplomas.dto.ts", "type": "interface", "linktype": "interface", "name": "DuoLookupDto", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/contracts/duo-diplomas.dto.ts", "type": "interface", "linktype": "interface", "name": "ManualDiplomaPolicyDto", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/registratie/contracts/duo-diplomas.dto.ts", "type": "interface", "linktype": "interface", "name": "PolicyQuestionDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/registratie/domain/aanvraag.ts", "type": "interface", "linktype": "interface", "name": "Aanvraag", "coveragePercent": 0, "coverageCount": "0/8", "status": "low" }, { "filePath": "src/app/registratie/domain/aanvraag.ts", "type": "interface", "linktype": "interface", "name": "AanvraagDetail", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/registratie/domain/aanvraag.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "AanvraagStatus", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/aanvraag.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "AanvraagType", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/big-profile.ts", "type": "interface", "linktype": "interface", "name": "BigProfile", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/domain/block-actions.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "blockActions", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/block-actions.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "BlockAction", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "interface", "linktype": "interface", "name": "Draft", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "interface", "linktype": "interface", "name": "Valid", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "reduce", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "validate", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "initial", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Errors", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Msg", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/change-request.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "State", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/person.ts", "type": "interface", "linktype": "interface", "name": "Adres", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/registratie/domain/person.ts", "type": "interface", "linktype": "interface", "name": "Person", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "interface", "linktype": "interface", "name": "Draft", "coveragePercent": 8, "coverageCount": "1/12", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "interface", "linktype": "interface", "name": "Errors", "coveragePercent": 11, "coverageCount": "1/9", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "interface", "linktype": "interface", "name": "ValidRegistratie", "coveragePercent": 10, "coverageCount": "1/10", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "back", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "currentStep", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "declareerBeroep", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "gaNaarStap", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "hasProgress", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "kiesDiploma", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "kiesHandmatig", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "next", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "prefillAdres", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "reduce", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "resolve", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "setAntwoord", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "setCorrespondentie", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "setField", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "submit", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "upload", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "validateAll", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "validateStep", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "emptyDraft", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "initial", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "STEPS", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "AdresHerkomst", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Correspondentie", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "DiplomaHerkomst", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "DraftField", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "RegistratieMsg", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "RegistratieState", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/registratie-wizard.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "StepId", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.policy.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "herregistratieDeadline", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.policy.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "isHerregistratieEligible", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.policy.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "isStatusConsistent", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.policy.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "statusColor", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.policy.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "statusLabel", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.ts", "type": "interface", "linktype": "interface", "name": "Aantekening", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/registratie/domain/registration.ts", "type": "interface", "linktype": "interface", "name": "Registration", "coveragePercent": 0, "coverageCount": "0/7", "status": "low" }, { "filePath": "src/app/registratie/domain/registration.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "AantekeningType", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "RegistrationStatus", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/registration.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "StatusTag", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/tasks.ts", "type": "interface", "linktype": "interface", "name": "PortalTask", "coveragePercent": 20, "coverageCount": "1/5", "status": "low" }, { "filePath": "src/app/registratie/domain/tasks.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "formatNL", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/tasks.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "tasksFromProfile", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/value-objects/big-nummer.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseBigNummer", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/value-objects/big-nummer.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "BigNummer", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/value-objects/email.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseEmail", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/value-objects/email.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Email", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/value-objects/postcode.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parsePostcode", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/value-objects/postcode.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Postcode", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/domain/value-objects/uren.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseUren", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/domain/value-objects/uren.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Uren", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/infrastructure/applications.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "ApplicationsAdapter", "coveragePercent": 62, "coverageCount": "5/8", "status": "good" }, { "filePath": "src/app/registratie/infrastructure/applications.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseAanvraagStatus", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/infrastructure/applications.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseApplicationDetail", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/infrastructure/applications.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseApplications", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/infrastructure/applications.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseApplicationSummary", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/infrastructure/applications.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseCommon", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/infrastructure/applications.adapter.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "AANVRAAG_TYPES", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/infrastructure/big-register.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "BigRegisterAdapter", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/infrastructure/big-register.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "toAantekening", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/infrastructure/brp.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "BrpAdapter", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/infrastructure/brp.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseBrpAddress", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/infrastructure/dashboard-view.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "DashboardViewAdapter", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/infrastructure/dashboard-view.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseDashboardView", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/infrastructure/duo.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "DuoAdapter", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/registratie/infrastructure/duo.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseDuoLookup", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/infrastructure/duo.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "parseQuestions", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts", "type": "component", "linktype": "component", "name": "AanvraagBlockComponent", "coveragePercent": 8, "coverageCount": "1/12", "status": "low" }, { "filePath": "src/app/registratie/ui/aanvraag-block/aanvraag-block.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "TYPE_LABELS", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/ui/address-fields/address-fields.component.ts", "type": "component", "linktype": "component", "name": "AddressFieldsComponent", "coveragePercent": 33, "coverageCount": "2/6", "status": "medium" }, { "filePath": "src/app/registratie/ui/address-fields/address-fields.component.ts", "type": "interface", "linktype": "interface", "name": "AdresValue", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/registratie/ui/address-fields/address-fields.component.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "AdresErrors", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/ui/change-request-form/change-request-form.component.ts", "type": "component", "linktype": "component", "name": "ChangeRequestFormComponent", "coveragePercent": 25, "coverageCount": "4/16", "status": "low" }, { "filePath": "src/app/registratie/ui/dashboard.page.ts", "type": "component", "linktype": "component", "name": "DashboardPage", "coveragePercent": 38, "coverageCount": "5/13", "status": "medium" }, { "filePath": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "type": "component", "linktype": "component", "name": "RegistratieWizardComponent", "coveragePercent": 25, "coverageCount": "13/52", "status": "low" }, { "filePath": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "HANDMATIG", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/ui/registratie-wizard/registratie-wizard.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "KANALEN", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/registratie/ui/registratie.page.ts", "type": "component", "linktype": "component", "name": "RegistratiePage", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/registratie/ui/registration-detail.page.ts", "type": "component", "linktype": "component", "name": "RegistrationDetailPage", "coveragePercent": 0, "coverageCount": "0/2", "status": "low" }, { "filePath": "src/app/registratie/ui/registration-summary/registration-summary.component.ts", "type": "component", "linktype": "component", "name": "RegistrationSummaryComponent", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/registratie/ui/registration-table/registration-table.component.ts", "type": "component", "linktype": "component", "name": "RegistrationTableComponent", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/shared/application/remote-data.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "andThen", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/remote-data.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "foldRemote", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/remote-data.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "fromResource", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/remote-data.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "map", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/remote-data.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "map2", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/remote-data.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "map3", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/remote-data.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "RemoteData", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/session.port.ts", "type": "interface", "linktype": "interface", "name": "SessionPort", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/application/session.port.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "SESSION_PORT", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/application/store.ts", "type": "interface", "linktype": "interface", "name": "Store", "coveragePercent": 100, "coverageCount": "3/3", "status": "very-good" }, { "filePath": "src/app/shared/application/store.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "createStore", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/application/submit.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "runSubmit", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/application/submit.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "SUBMIT_FAILED", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.provider.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "httpClientFetch", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/infrastructure/api-client.provider.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "provideApiClient", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/infrastructure/api-client.provider.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "REQUEST_TIMEOUT_MS", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "class", "linktype": "classe", "name": "ApiClient", "coveragePercent": 0, "coverageCount": "0/49", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "class", "linktype": "classe", "name": "SwaggerException", "coveragePercent": 0, "coverageCount": "0/9", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "AantekeningDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "AanvraagStatusDto", "coveragePercent": 0, "coverageCount": "0/7", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "AdresDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "ApplicationDetailDto", "coveragePercent": 0, "coverageCount": "0/9", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "ApplicationSummaryDto", "coveragePercent": 0, "coverageCount": "0/8", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "BrpAddressDto", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "ChangeRequestRequest", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "CreateApplicationRequest", "coveragePercent": 0, "coverageCount": "0/2", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "DashboardViewDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "DocumentCategoryDto", "coveragePercent": 0, "coverageCount": "0/9", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "DocumentRefDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "DraftSyncRequest", "coveragePercent": 0, "coverageCount": "0/5", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "DuoDiplomaDto", "coveragePercent": 0, "coverageCount": "0/7", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "DuoLookupDto", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "HerregistratieDecisionsDto", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "HerregistratieRequest", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "IntakePolicyDto", "coveragePercent": 0, "coverageCount": "0/2", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "IntakeRequest", "coveragePercent": 0, "coverageCount": "0/2", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "ManualDiplomaPolicyDto", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "PersonDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "PolicyQuestionDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "ProblemDetails", "coveragePercent": 0, "coverageCount": "0/6", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "ReferentieResponse", "coveragePercent": 0, "coverageCount": "0/2", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "RegistratieRequest", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "RegistrationDto", "coveragePercent": 0, "coverageCount": "0/7", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "RegistrationStatusDto", "coveragePercent": 0, "coverageCount": "0/6", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "SubmitApplicationRequest", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "SubmitApplicationResponse", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "UploadCategoriesDto", "coveragePercent": 0, "coverageCount": "0/2", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "UploadStatusDto", "coveragePercent": 0, "coverageCount": "0/2", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "interface", "linktype": "interface", "name": "UploadStatusItemDto", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-client.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "throwException", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/infrastructure/api-error.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "problemDetail", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/infrastructure/api-error.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "problemFieldErrors", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/infrastructure/scenario.interceptor.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "scenarioInterceptor", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/infrastructure/scenario.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "currentScenario", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/infrastructure/scenario.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "VALID", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/infrastructure/scenario.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Scenario", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/kernel/fp.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "assertNever", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/kernel/fp.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "whenTag", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/kernel/fp.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "err", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/kernel/fp.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "ok", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/kernel/fp.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Brand", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/kernel/fp.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Result", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "type": "interface", "linktype": "interface", "name": "Crumb", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "trailFor", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/layout/breadcrumb/breadcrumb-trail.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "ROUTES", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/layout/breadcrumb/breadcrumb.component.ts", "type": "component", "linktype": "component", "name": "BreadcrumbComponent", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/shared/layout/breadcrumb/breadcrumb.component.ts", "type": "interface", "linktype": "interface", "name": "BreadcrumbItem", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/layout/page-shell/page-shell.component.ts", "type": "component", "linktype": "component", "name": "PageShellComponent", "coveragePercent": 16, "coverageCount": "1/6", "status": "low" }, { "filePath": "src/app/shared/layout/shell/shell.component.ts", "type": "component", "linktype": "component", "name": "ShellComponent", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/shared/layout/side-nav/side-nav.component.ts", "type": "component", "linktype": "component", "name": "SideNavComponent", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/layout/side-nav/side-nav.component.ts", "type": "interface", "linktype": "interface", "name": "NavItem", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/layout/site-footer/site-footer.component.ts", "type": "component", "linktype": "component", "name": "SiteFooterComponent", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/layout/site-header/site-header.component.ts", "type": "component", "linktype": "component", "name": "SiteHeaderComponent", "coveragePercent": 12, "coverageCount": "1/8", "status": "low" }, { "filePath": "src/app/shared/layout/wizard-shell/wizard-shell.component.ts", "type": "component", "linktype": "component", "name": "WizardShellComponent", "coveragePercent": 11, "coverageCount": "2/18", "status": "low" }, { "filePath": "src/app/shared/layout/wizard-shell/wizard-shell.component.ts", "type": "interface", "linktype": "interface", "name": "WizardError", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/layout/wizard-shell/wizard-shell.component.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "WizardStatus", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/ui/alert/alert.component.ts", "type": "component", "linktype": "component", "name": "AlertComponent", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/shared/ui/alert/alert.component.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "AlertType", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/ui/async/async.component.ts", "type": "component", "linktype": "component", "name": "AsyncComponent", "coveragePercent": 6, "coverageCount": "1/15", "status": "low" }, { "filePath": "src/app/shared/ui/async/async.component.ts", "type": "directive", "linktype": "directive", "name": "AsyncEmptyDirective", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/ui/async/async.component.ts", "type": "directive", "linktype": "directive", "name": "AsyncErrorDirective", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/ui/async/async.component.ts", "type": "directive", "linktype": "directive", "name": "AsyncLoadedDirective", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/ui/async/async.component.ts", "type": "directive", "linktype": "directive", "name": "AsyncLoadingDirective", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/ui/async/async.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "ASYNC", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/ui/button/button.component.ts", "type": "component", "linktype": "component", "name": "ButtonComponent", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/shared/ui/button/button.component.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Variant", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/ui/card/card.component.ts", "type": "component", "linktype": "component", "name": "CardComponent", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/ui/data-row/data-row.component.ts", "type": "component", "linktype": "component", "name": "DataRowComponent", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/ui/debug-state/debug-state.component.ts", "type": "component", "linktype": "component", "name": "DebugStateComponent", "coveragePercent": 12, "coverageCount": "1/8", "status": "low" }, { "filePath": "src/app/shared/ui/debug-state/debug-state.component.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "maskSession", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/ui/debug-state/mask.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "maskBsn", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/ui/debug-state/mask.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "maskTail", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/ui/debug-state/mask.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "redactProfile", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/ui/debug-state/mask.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "REDACTED", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/ui/form-field/form-field.component.ts", "type": "component", "linktype": "component", "name": "FormFieldComponent", "coveragePercent": 16, "coverageCount": "1/6", "status": "low" }, { "filePath": "src/app/shared/ui/heading/heading.component.ts", "type": "component", "linktype": "component", "name": "HeadingComponent", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/shared/ui/link/link.component.ts", "type": "component", "linktype": "component", "name": "LinkComponent", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/shared/ui/radio-group/radio-group.component.ts", "type": "component", "linktype": "component", "name": "RadioGroupComponent", "coveragePercent": 7, "coverageCount": "1/13", "status": "low" }, { "filePath": "src/app/shared/ui/radio-group/radio-group.component.ts", "type": "interface", "linktype": "interface", "name": "RadioOption", "coveragePercent": 0, "coverageCount": "0/3", "status": "low" }, { "filePath": "src/app/shared/ui/radio-group/radio-group.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "JA_NEE", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/ui/skeleton/skeleton.component.ts", "type": "component", "linktype": "component", "name": "SkeletonComponent", "coveragePercent": 10, "coverageCount": "1/10", "status": "low" }, { "filePath": "src/app/shared/ui/spinner/spinner.component.ts", "type": "component", "linktype": "component", "name": "SpinnerComponent", "coveragePercent": 16, "coverageCount": "1/6", "status": "low" }, { "filePath": "src/app/shared/ui/status-badge/status-badge.component.ts", "type": "component", "linktype": "component", "name": "StatusBadgeComponent", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/ui/stepper/stepper.component.ts", "type": "component", "linktype": "component", "name": "StepperComponent", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/ui/task-list/task-list.component.ts", "type": "component", "linktype": "component", "name": "TaskListComponent", "coveragePercent": 50, "coverageCount": "1/2", "status": "medium" }, { "filePath": "src/app/shared/ui/task-list/task-list.component.ts", "type": "interface", "linktype": "interface", "name": "TaskItem", "coveragePercent": 20, "coverageCount": "1/5", "status": "low" }, { "filePath": "src/app/shared/ui/text-input/text-input.component.ts", "type": "component", "linktype": "component", "name": "TextInputComponent", "coveragePercent": 7, "coverageCount": "1/14", "status": "low" }, { "filePath": "src/app/shared/ui/upload/delivery-channel-toggle/delivery-channel-toggle.component.ts", "type": "component", "linktype": "component", "name": "DeliveryChannelToggleComponent", "coveragePercent": 16, "coverageCount": "1/6", "status": "low" }, { "filePath": "src/app/shared/ui/upload/document-category/document-category.component.ts", "type": "component", "linktype": "component", "name": "DocumentCategoryComponent", "coveragePercent": 15, "coverageCount": "2/13", "status": "low" }, { "filePath": "src/app/shared/ui/upload/document-chip/document-chip.component.ts", "type": "component", "linktype": "component", "name": "DocumentChipComponent", "coveragePercent": 33, "coverageCount": "2/6", "status": "medium" }, { "filePath": "src/app/shared/ui/upload/document-upload/document-upload.component.ts", "type": "component", "linktype": "component", "name": "DocumentUploadComponent", "coveragePercent": 18, "coverageCount": "2/11", "status": "low" }, { "filePath": "src/app/shared/ui/upload/file-input/file-input.component.ts", "type": "component", "linktype": "component", "name": "FileInputComponent", "coveragePercent": 22, "coverageCount": "2/9", "status": "low" }, { "filePath": "src/app/shared/ui/upload/single-upload/single-upload.component.ts", "type": "component", "linktype": "component", "name": "SingleUploadComponent", "coveragePercent": 42, "coverageCount": "3/7", "status": "medium" }, { "filePath": "src/app/shared/ui/upload/upload-progress-bar/upload-progress-bar.component.ts", "type": "component", "linktype": "component", "name": "UploadProgressBarComponent", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "type": "component", "linktype": "component", "name": "UploadStatusBannerComponent", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "AlertType", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/ui/upload/upload-status-banner/upload-status-banner.component.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "BannerType", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/ui/upload/upload-status-icon/upload-status-icon.component.ts", "type": "component", "linktype": "component", "name": "UploadStatusIconComponent", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/ui/upload/upload-status-icon/upload-status-icon.component.ts", "type": "interface", "linktype": "interface", "name": "Glyph", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/upload/upload-controller.ts", "type": "interface", "linktype": "interface", "name": "UploadControllerDeps", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/upload/upload-controller.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "createUploadController", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload-shell.service.ts", "type": "injectable", "linktype": "injectable", "name": "KeepaliveTransport", "coveragePercent": 0, "coverageCount": "0/4", "status": "low" }, { "filePath": "src/app/shared/upload/upload-shell.service.ts", "type": "injectable", "linktype": "injectable", "name": "UploadShellService", "coveragePercent": 62, "coverageCount": "5/8", "status": "good" }, { "filePath": "src/app/shared/upload/upload-shell.service.ts", "type": "interface", "linktype": "interface", "name": "UploadTransport", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/upload/upload-shell.service.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "Dispatch", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "injectable", "linktype": "injectable", "name": "UploadAdapter", "coveragePercent": 71, "coverageCount": "5/7", "status": "good" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "interface", "linktype": "interface", "name": "StatusItem", "coveragePercent": 25, "coverageCount": "1/4", "status": "low" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "interface", "linktype": "interface", "name": "XhrUploadHandle", "coveragePercent": 33, "coverageCount": "1/3", "status": "medium" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "interface", "linktype": "interface", "name": "XhrUploadRequest", "coveragePercent": 0, "coverageCount": "0/5", "status": "low" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "simulateUpload", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "toCategory", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "toStatusItem", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "genericError", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "parseError", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "UPLOAD_ABORTED", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.adapter.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "UPLOAD_FAILED", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "interface", "linktype": "interface", "name": "DocumentCategory", "coveragePercent": 0, "coverageCount": "0/9", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "interface", "linktype": "interface", "name": "Upload", "coveragePercent": 0, "coverageCount": "0/7", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "interface", "linktype": "interface", "name": "UploadState", "coveragePercent": 0, "coverageCount": "0/7", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "categorySatisfied", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "deliveryRefs", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "mapUpload", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "reduceUpload", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "rejectReason", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "requiredCategoriesSatisfied", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "ACTIVE", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "categoryOf", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "find", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "inFlight", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "initialUpload", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "REJECTION_MESSAGES", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "DeliveryChannel", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "UploadMsg", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { "filePath": "src/app/shared/upload/upload.machine.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", "name": "UploadStatus", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/app/showcase/concepts.page.ts", "type": "component", "linktype": "component", "name": "ConceptsPage", "coveragePercent": 8, "coverageCount": "1/12", "status": "low" }, { "filePath": "src/app/showcase/concepts.page.ts", "type": "function", "linktype": "miscellaneous", "linksubtype": "function", "name": "fakeResource", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/environments/environment.prod.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "environment", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" }, { "filePath": "src/environments/environment.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", "name": "environment", "coveragePercent": 100, "coverageCount": "1/1", "status": "very-good" } ] } }