/// <summary>
        /// Plaats, wijzig of beëindig een volgindicatie Plaats, wijzig of beëindig een volgindicatie op een specifieke persoon. Als je de persoon nog niet volgt, wordt een volgindicatie geplaatst. Als je de persoon al wel volgt, wordt de volgindicatie gewijzigd. Verwijder de einddatum van een volgindicatie door in de request body een leeg object { } te sturen. Beëindig een volgindicatie door een einddatum gelijk aan de datum van vandaag te sturen.
        /// </summary>
        /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="burgerservicenummer">Identificerend gegeven van een ingeschreven natuurlijk persoon, als bedoeld in artikel 1.1 van de Wet algemene bepalingen burgerservicenummer.</param>
        /// <param name="volgindicatie"> (optional)</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of ApiResponse (VolgindicatieRaadplegen)</returns>
        public async System.Threading.Tasks.Task <Org.OpenAPITools.Client.ApiResponse <VolgindicatieRaadplegen> > UpsertVolgindicatieWithHttpInfoAsync(Object burgerservicenummer, Volgindicatie volgindicatie = default(Volgindicatie), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {
            // verify the required parameter 'burgerservicenummer' is set
            if (burgerservicenummer == null)
            {
                throw new Org.OpenAPITools.Client.ApiException(400, "Missing required parameter 'burgerservicenummer' when calling BeherenVolgindicatiesApi->UpsertVolgindicatie");
            }


            Org.OpenAPITools.Client.RequestOptions localVarRequestOptions = new Org.OpenAPITools.Client.RequestOptions();

            String[] _contentTypes = new String[] {
                "application/json"
            };

            // to determine the Accept header
            String[] _accepts = new String[] {
                "application/json",
                "application/hal+json",
                "application/problem+json"
            };


            var localVarContentType = Org.OpenAPITools.Client.ClientUtils.SelectHeaderContentType(_contentTypes);

            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = Org.OpenAPITools.Client.ClientUtils.SelectHeaderAccept(_accepts);

            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            localVarRequestOptions.PathParameters.Add("burgerservicenummer", Org.OpenAPITools.Client.ClientUtils.ParameterToString(burgerservicenummer)); // path parameter
            localVarRequestOptions.Data = volgindicatie;


            // make the HTTP request

            var localVarResponse = await this.AsynchronousClient.PutAsync <VolgindicatieRaadplegen>("/volgindicaties/{burgerservicenummer}", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false);

            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("UpsertVolgindicatie", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return(localVarResponse);
        }
        /// <summary>
        /// Plaats, wijzig of beëindig een volgindicatie Plaats, wijzig of beëindig een volgindicatie op een specifieke persoon. Als je de persoon nog niet volgt, wordt een volgindicatie geplaatst. Als je de persoon al wel volgt, wordt de volgindicatie gewijzigd. Verwijder de einddatum van een volgindicatie door in de request body een leeg object { } te sturen. Beëindig een volgindicatie door een einddatum gelijk aan de datum van vandaag te sturen.
        /// </summary>
        /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="burgerservicenummer">Identificerend gegeven van een ingeschreven natuurlijk persoon, als bedoeld in artikel 1.1 van de Wet algemene bepalingen burgerservicenummer.</param>
        /// <param name="volgindicatie"> (optional)</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of VolgindicatieRaadplegen</returns>
        public async System.Threading.Tasks.Task <VolgindicatieRaadplegen> UpsertVolgindicatieAsync(Object burgerservicenummer, Volgindicatie volgindicatie = default(Volgindicatie), System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {
            Org.OpenAPITools.Client.ApiResponse <VolgindicatieRaadplegen> localVarResponse = await UpsertVolgindicatieWithHttpInfoAsync(burgerservicenummer, volgindicatie, cancellationToken).ConfigureAwait(false);

            return(localVarResponse.Data);
        }
        /// <summary>
        /// Plaats, wijzig of beëindig een volgindicatie Plaats, wijzig of beëindig een volgindicatie op een specifieke persoon. Als je de persoon nog niet volgt, wordt een volgindicatie geplaatst. Als je de persoon al wel volgt, wordt de volgindicatie gewijzigd. Verwijder de einddatum van een volgindicatie door in de request body een leeg object { } te sturen. Beëindig een volgindicatie door een einddatum gelijk aan de datum van vandaag te sturen.
        /// </summary>
        /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="burgerservicenummer">Identificerend gegeven van een ingeschreven natuurlijk persoon, als bedoeld in artikel 1.1 van de Wet algemene bepalingen burgerservicenummer.</param>
        /// <param name="volgindicatie"> (optional)</param>
        /// <param name="cancellationToken">Cancellation Token to cancel request (optional) </param>
        /// <returns>Task of ApiResponse (VolgindicatieRaadplegen)</returns>
        public async System.Threading.Tasks.Task <ApiResponse <VolgindicatieRaadplegen> > UpsertVolgindicatieWithHttpInfoAsync(Object burgerservicenummer, Volgindicatie volgindicatie = default(Volgindicatie), CancellationToken cancellationToken = default(CancellationToken))
        {
            // verify the required parameter 'burgerservicenummer' is set
            if (burgerservicenummer == null)
            {
                throw new ApiException(400, "Missing required parameter 'burgerservicenummer' when calling BeherenVolgindicatiesApi->UpsertVolgindicatie");
            }

            var    localVarPath         = "/volgindicaties/{burgerservicenummer}";
            var    localVarPathParams   = new Dictionary <String, String>();
            var    localVarQueryParams  = new List <KeyValuePair <String, String> >();
            var    localVarHeaderParams = new Dictionary <String, String>(this.Configuration.DefaultHeader);
            var    localVarFormParams   = new Dictionary <String, String>();
            var    localVarFileParams   = new Dictionary <String, FileParameter>();
            Object localVarPostBody     = null;

            // to determine the Content-Type header
            String[] localVarHttpContentTypes = new String[] {
                "application/json"
            };
            String localVarHttpContentType = this.Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes);

            // to determine the Accept header
            String[] localVarHttpHeaderAccepts = new String[] {
                "application/json",
                "application/hal+json",
                "application/problem+json"
            };
            String localVarHttpHeaderAccept = this.Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts);

            if (localVarHttpHeaderAccept != null)
            {
                localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept);
            }

            if (burgerservicenummer != null)
            {
                localVarPathParams.Add("burgerservicenummer", this.Configuration.ApiClient.ParameterToString(burgerservicenummer));                              // path parameter
            }
            if (volgindicatie != null && volgindicatie.GetType() != typeof(byte[]))
            {
                localVarPostBody = this.Configuration.ApiClient.Serialize(volgindicatie); // http body (model) parameter
            }
            else
            {
                localVarPostBody = volgindicatie; // byte array
            }


            // make the HTTP request
            IRestResponse localVarResponse = (IRestResponse)await this.Configuration.ApiClient.CallApiAsync(localVarPath,
                                                                                                            Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams,
                                                                                                            localVarPathParams, localVarHttpContentType, cancellationToken);

            int localVarStatusCode = (int)localVarResponse.StatusCode;

            if (ExceptionFactory != null)
            {
                Exception exception = ExceptionFactory("UpsertVolgindicatie", localVarResponse);
                if (exception != null)
                {
                    throw exception;
                }
            }

            return(new ApiResponse <VolgindicatieRaadplegen>(localVarStatusCode,
                                                             localVarResponse.Headers.ToDictionary(x => x.Name, x => string.Join(",", x.Value)),
                                                             (VolgindicatieRaadplegen)this.Configuration.ApiClient.Deserialize(localVarResponse, typeof(VolgindicatieRaadplegen))));
        }
 /// <summary>
 /// Plaats, wijzig of beëindig een volgindicatie Plaats, wijzig of beëindig een volgindicatie op een specifieke persoon. Als je de persoon nog niet volgt, wordt een volgindicatie geplaatst. Als je de persoon al wel volgt, wordt de volgindicatie gewijzigd. Verwijder de einddatum van een volgindicatie door in de request body een leeg object { } te sturen. Beëindig een volgindicatie door een einddatum gelijk aan de datum van vandaag te sturen.
 /// </summary>
 /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception>
 /// <param name="burgerservicenummer">Identificerend gegeven van een ingeschreven natuurlijk persoon, als bedoeld in artikel 1.1 van de Wet algemene bepalingen burgerservicenummer.</param>
 /// <param name="volgindicatie"> (optional)</param>
 /// <returns>VolgindicatieRaadplegen</returns>
 public VolgindicatieRaadplegen UpsertVolgindicatie(Object burgerservicenummer, Volgindicatie volgindicatie = default(Volgindicatie))
 {
     Org.OpenAPITools.Client.ApiResponse <VolgindicatieRaadplegen> localVarResponse = UpsertVolgindicatieWithHttpInfo(burgerservicenummer, volgindicatie);
     return(localVarResponse.Data);
 }
        /// <summary>
        /// Plaats, wijzig of beëindig een volgindicatie Plaats, wijzig of beëindig een volgindicatie op een specifieke persoon. Als je de persoon nog niet volgt, wordt een volgindicatie geplaatst. Als je de persoon al wel volgt, wordt de volgindicatie gewijzigd. Verwijder de einddatum van een volgindicatie door in de request body een leeg object { } te sturen. Beëindig een volgindicatie door een einddatum gelijk aan de datum van vandaag te sturen.
        /// </summary>
        /// <exception cref="Org.OpenAPITools.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="burgerservicenummer">Identificerend gegeven van een ingeschreven natuurlijk persoon, als bedoeld in artikel 1.1 van de Wet algemene bepalingen burgerservicenummer.</param>
        /// <param name="volgindicatie"> (optional)</param>
        /// <param name="cancellationToken">Cancellation Token to cancel request (optional) </param>
        /// <returns>Task of VolgindicatieRaadplegen</returns>
        public async System.Threading.Tasks.Task <VolgindicatieRaadplegen> UpsertVolgindicatieAsync(Object burgerservicenummer, Volgindicatie volgindicatie = default(Volgindicatie), CancellationToken cancellationToken = default(CancellationToken))
        {
            ApiResponse <VolgindicatieRaadplegen> localVarResponse = await UpsertVolgindicatieWithHttpInfoAsync(burgerservicenummer, volgindicatie, cancellationToken);

            return(localVarResponse.Data);
        }