How to do a POST request to a REST Endpoint 

A POST request is send to a REST endpoint to get a response based on the data sent as the request payload. The following example highlights how to send a POST request to the IFS AI Server to get a machine learning prediction response.


	CREATE OR REPLACE PACKAGE BODY PREDICTION_REST_CALL AS 

	PROCEDURE  prediction_rest_post	IS
		Request PLSQLAP_DOCUMENT_API.Document;
		url_params_ PLSQLAP_DOCUMENT_API.Document;

		BEGIN
		Request := PLSQLAP_DOCUMENT_API.New_Document('PREDICTION_REQUEST');
		PLSQLAP_DOCUMENT_API.Add_Attribute(Request,'cust_id', '10001');
		PLSQLAP_DOCUMENT_API.Add_Attribute(Request,'payment_amt', '200.00');
		PLSQLAP_DOCUMENT_API.Add_Attribute(Request,'currency', 'USD');
		......
		PLSQLAP_DOCUMENT_API.Add_Attribute(Request,'status', 'active');

		url_params_ := PLSQLAP_DOCUMENT_API.New_Document('URL_Parameters');
		PLSQLAP_DOCUMENT_API.Add_Attribute(url_params_, 'param1', 'invoice_prediction');

		plsql_rest_sender_API.Call_Rest_EndPoint(rest_service_ => 'PREDICTION',
                                         message_payload_ => Request,
                                         url_params_ => url_params_,
                                         callback_func_ => 'Invoice_Pred_API.REST_callback',
                                         http_req_headers_ => 'Content-type: application/json',
                                         http_method_ => 'POST',
                                         key_ref_ => 'COMPANY=10^INVOICE_ID=1000123^',
                                         fnd_user_ => 'ALAIN');

		END prediction_rest_post;

	END PREDICTION_REST_CALL;
	

Important points to consider:


	plsql_rest_sender_API.Call_Rest_EndPoint (
	rest_service_           IN     VARCHAR2,
	xml_                    IN     CLOB,
	url_params_             IN     type_record_ DEFAULT NULL,
	callback_func_          IN     VARCHAR2,
	http_method_            IN     VARCHAR2,
	http_req_headers_       IN     VARCHAR2 DEFAULT NULL,
	query_parameters_       IN     type_record_ DEFAULT NULL,
	header_params_          IN     type_record_ DEFAULT NULL,	
	fnd_user_               IN     VARCHAR2 DEFAULT NULL,
	key_ref_                IN     VARCHAR2 DEFAULT NULL,
	sender_                 IN     VARCHAR2 DEFAULT NULL,
	receiver_               IN     VARCHAR2 DEFAULT default_recevier_,
	message_type_           IN     VARCHAR2 DEFAULT 'EVENT',
	subject_                IN     VARCHAR2 DEFAULT NULL,
	in_order_               IN     BOOLEAN  DEFAULT FALSE)