// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.

/*
 * External DNS Webhook Server
 *
 * Implements the external DNS webhook endpoints.
 *
 * API version: v0.15.0
 */

package externaldnsapi

import (
	"context"
	"net/http"
)

// InitializationAPIRouter defines the required methods for binding the api requests to a responses for the InitializationAPI
// The InitializationAPIRouter implementation should parse necessary information from the http request,
// pass the data to a InitializationAPIServicer to perform the required actions, then write the service results to the http response.
type InitializationAPIRouter interface {
	Negotiate(http.ResponseWriter, *http.Request)
}

// ListingAPIRouter defines the required methods for binding the api requests to a responses for the ListingAPI
// The ListingAPIRouter implementation should parse necessary information from the http request,
// pass the data to a ListingAPIServicer to perform the required actions, then write the service results to the http response.
type ListingAPIRouter interface {
	GetRecords(http.ResponseWriter, *http.Request)
}

// UpdateAPIRouter defines the required methods for binding the api requests to a responses for the UpdateAPI
// The UpdateAPIRouter implementation should parse necessary information from the http request,
// pass the data to a UpdateAPIServicer to perform the required actions, then write the service results to the http response.
type UpdateAPIRouter interface {
	SetRecords(http.ResponseWriter, *http.Request)
	AdjustRecords(http.ResponseWriter, *http.Request)
}

// InitializationAPIServicer defines the api actions for the InitializationAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type InitializationAPIServicer interface {
	Negotiate(context.Context) (ImplResponse, error)
}

// ListingAPIServicer defines the api actions for the ListingAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type ListingAPIServicer interface {
	GetRecords(context.Context) (ImplResponse, error)
}

// UpdateAPIServicer defines the api actions for the UpdateAPI service
// This interface intended to stay up to date with the openapi yaml used to generate it,
// while the service implementation can be ignored with the .openapi-generator-ignore file
// and updated with the logic required for the API.
type UpdateAPIServicer interface {
	SetRecords(context.Context, Changes) (ImplResponse, error)
	AdjustRecords(context.Context, []Endpoint) (ImplResponse, error)
}
