func (c *Operation) NegotiateRequestPresentationV3(rw http.ResponseWriter, req *http.Request) {
	if ok, r := toCommandRequest(rw, req); ok {
		rest.Execute(c.command.NegotiateRequestPresentationV3, rw, r)
	}
}
NegotiateRequestPresentationV3 swagger:route POST /presentproof/v3/{piid}/negotiate-request-presentation present-proof presentProofNegotiateRequestPresentationV3

Is used by the Prover to counter a presentation request they received with a proposal.

Responses:
default: genericError
200: presentProofNegotiateRequestPresentationResponse
package presentproof
import (
	"bytes"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"net/http"
	"strings"
	"github.com/gorilla/mux"
	client "github.com/hyperledger/aries-framework-go/pkg/client/presentproof"
	"github.com/hyperledger/aries-framework-go/pkg/controller/command"
	"github.com/hyperledger/aries-framework-go/pkg/controller/command/presentproof"
	"github.com/hyperledger/aries-framework-go/pkg/controller/internal/cmdutil"
	"github.com/hyperledger/aries-framework-go/pkg/controller/rest"
)
const (
	OperationID                    = "/presentproof"
	OperationIDV3                  = OperationID + "/v3"
	Actions                        = OperationID + "/actions"
	SendRequestPresentation        = OperationID + "/send-request-presentation"
	SendRequestPresentationV3      = OperationIDV3 + "/send-request-presentation"
	SendProposePresentation        = OperationID + "/send-propose-presentation"
	SendProposePresentationV3      = OperationIDV3 + "/send-propose-presentation"
	AcceptRequestPresentation      = OperationID + "/{piid}/accept-request-presentation"
	AcceptRequestPresentationV3    = OperationIDV3 + "/{piid}/accept-request-presentation"
	NegotiateRequestPresentation   = OperationID + "/{piid}/negotiate-request-presentation"
	NegotiateRequestPresentationV3 = OperationIDV3 + "/{piid}/negotiate-request-presentation"
	DeclineRequestPresentation     = OperationID + "/{piid}/decline-request-presentation"
	AcceptProposePresentation      = OperationID + "/{piid}/accept-propose-presentation"
	AcceptProposePresentationV3    = OperationIDV3 + "/{piid}/accept-propose-presentation"
	DeclineProposePresentation     = OperationID + "/{piid}/decline-propose-presentation"
	AcceptPresentation             = OperationID + "/{piid}/accept-presentation"
	DeclinePresentation            = OperationID + "/{piid}/decline-presentation"
	AcceptProblemReport            = OperationID + "/{piid}/accept-problem-report"
)
type Operation struct {
	command  *presentproof.Command
	handlers []rest.Handler
}
func New(ctx client.Provider, notifier command.Notifier) (*Operation, error) {
	cmd, err := presentproof.New(ctx, notifier)
	if err != nil {
		return nil, fmt.Errorf("present proof command : %w", err)
	}
	o := &Operation{command: cmd}
	o.registerHandler()
	return o, nil
}
func (c *Operation) GetRESTHandlers() []rest.Handler {
	return c.handlers
}
func (c *Operation) registerHandler() {
	c.handlers = []rest.Handler{
		cmdutil.NewHTTPHandler(Actions, http.MethodGet, c.Actions),
		cmdutil.NewHTTPHandler(SendRequestPresentation, http.MethodPost, c.SendRequestPresentation),
		cmdutil.NewHTTPHandler(SendRequestPresentationV3, http.MethodPost, c.SendRequestPresentationV3),
		cmdutil.NewHTTPHandler(SendProposePresentation, http.MethodPost, c.SendProposePresentation),
		cmdutil.NewHTTPHandler(SendProposePresentationV3, http.MethodPost, c.SendProposePresentationV3),
		cmdutil.NewHTTPHandler(AcceptRequestPresentation, http.MethodPost, c.AcceptRequestPresentation),
		cmdutil.NewHTTPHandler(AcceptRequestPresentationV3, http.MethodPost, c.AcceptRequestPresentationV3),
		cmdutil.NewHTTPHandler(NegotiateRequestPresentation, http.MethodPost, c.NegotiateRequestPresentation),
		cmdutil.NewHTTPHandler(NegotiateRequestPresentationV3, http.MethodPost, c.NegotiateRequestPresentationV3),
		cmdutil.NewHTTPHandler(DeclineRequestPresentation, http.MethodPost, c.DeclineRequestPresentation),
		cmdutil.NewHTTPHandler(AcceptProposePresentation, http.MethodPost, c.AcceptProposePresentation),
		cmdutil.NewHTTPHandler(AcceptProposePresentationV3, http.MethodPost, c.AcceptProposePresentationV3),
		cmdutil.NewHTTPHandler(DeclineProposePresentation, http.MethodPost, c.DeclineProposePresentation),
		cmdutil.NewHTTPHandler(AcceptPresentation, http.MethodPost, c.AcceptPresentation),
		cmdutil.NewHTTPHandler(DeclinePresentation, http.MethodPost, c.DeclinePresentation),
		cmdutil.NewHTTPHandler(AcceptProblemReport, http.MethodPost, c.AcceptProblemReport),
	}
}
func (c *Operation) Actions(rw http.ResponseWriter, _ *http.Request) {
	rest.Execute(c.command.Actions, rw, nil)
}
func (c *Operation) SendRequestPresentation(rw http.ResponseWriter, req *http.Request) {
	rest.Execute(c.command.SendRequestPresentation, rw, req.Body)
}
func (c *Operation) SendRequestPresentationV3(rw http.ResponseWriter, req *http.Request) {
	rest.Execute(c.command.SendRequestPresentationV3, rw, req.Body)
}
func (c *Operation) SendProposePresentation(rw http.ResponseWriter, req *http.Request) {
	rest.Execute(c.command.SendProposePresentation, rw, req.Body)
}
func (c *Operation) SendProposePresentationV3(rw http.ResponseWriter, req *http.Request) {
	rest.Execute(c.command.SendProposePresentationV3, rw, req.Body)
}
func (c *Operation) AcceptProblemReport(rw http.ResponseWriter, req *http.Request) {
	rest.Execute(c.command.AcceptProblemReport, rw, bytes.NewBufferString(fmt.Sprintf(`{
		"piid":%q
	}`, mux.Vars(req)["piid"])))
}
func (c *Operation) AcceptRequestPresentation(rw http.ResponseWriter, req *http.Request) {
	if ok, r := toCommandRequest(rw, req); ok {
		rest.Execute(c.command.AcceptRequestPresentation, rw, r)
	}
}
func (c *Operation) AcceptRequestPresentationV3(rw http.ResponseWriter, req *http.Request) {
	if ok, r := toCommandRequest(rw, req); ok {
		rest.Execute(c.command.AcceptRequestPresentationV3, rw, r)
	}
}
func (c *Operation) AcceptProposePresentation(rw http.ResponseWriter, req *http.Request) {
	if ok, r := toCommandRequest(rw, req); ok {
		rest.Execute(c.command.AcceptProposePresentation, rw, r)
	}
}
func (c *Operation) AcceptProposePresentationV3(rw http.ResponseWriter, req *http.Request) {
	if ok, r := toCommandRequest(rw, req); ok {
		rest.Execute(c.command.AcceptProposePresentationV3, rw, r)
	}
}
func (c *Operation) AcceptPresentation(rw http.ResponseWriter, req *http.Request) {
	if ok, r := toCommandRequest(rw, req); ok {
		rest.Execute(c.command.AcceptPresentation, rw, r)
	}
}
func (c *Operation) NegotiateRequestPresentation(rw http.ResponseWriter, req *http.Request) {
	if ok, r := toCommandRequest(rw, req); ok {
		rest.Execute(c.command.NegotiateRequestPresentation, rw, r)
	}
}