Web Services source - Request body NOT JSON

Hi,

Is it possible to pass Content-Type ‘text/plain’ for a Web Services request?

for example, I just want the body to be ReadOnly - no JSON, no form data

i.e. I want to implement the cURL request
curl --location --request POST 'https://some.url/add' --header 'Authorization: Basic xxxx' --header 'Content-Type: text/plain' --data-raw 'ReadOnly'

When I try, I am getting the error

"exception":{"stacktrace":"connector.sdk.webservices.exception.WebServicesSdkException: 
	at connector.sdk.webservices.ExecutionMediator.processEndpoint(ExecutionMediator.java:657)
	at connector.sdk.webservices.ExecutionMediator.process(ExecutionMediator.java:354)
	at connector.sdk.webservices.ExecutionMediator.process(ExecutionMediator.java:201)
	at sailpoint.connector.webservices.v2.WebServiceFacadeV2.addRemoveEntitlement(WebServiceFacadeV2.java:1406)
	at sailpoint.connector.webservices.v2.WebServiceFacadeV2.handleAttributeRequests(WebServiceFacadeV2.java:1715)
	at sailpoint.connector.webservices.v2.WebServiceFacadeV2.update(WebServiceFacadeV2.java:1136)
	at sailpoint.connector.webservices.v2.WebServiceFacadeV2.provision(WebServiceFacadeV2.java:607)
	at sailpoint.connector.webservices.WebServicesConnector.provision(WebServicesConnector.java:109)
	at sailpoint.connector.ConnectorProxy.provision(ConnectorProxy.java:1218)
	at com.sailpoint.ccg.cloud.container.Container.provision(Container.java:392)
	at com.sailpoint.ccg.cloud.container.ContainerIntegration.provision(ContainerIntegration.java:156)
	at com.sailpoint.ccg.handler.ProvisionHandler.invoke(ProvisionHandler.java:200)
	at sailpoint.gateway.accessiq.CcgPipelineMessageHandler.handleMessage_aroundBody0(CcgPipelineMessageHandler.java:44)
	at sailpoint.gateway.accessiq.CcgPipelineMessageHandler$AjcClosure1.run(CcgPipelineMessageHandler.java:1)
	at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:167)
	at com.sailpoint.tracing.otel.TracedAspect.lambda$traceExecution$0(TracedAspect.java:38)
	at com.sailpoint.tracing.otel.GlobalTracer.trace(GlobalTracer.java:170)
	at com.sailpoint.tracing.otel.GlobalTracer.trace(GlobalTracer.java:143)
	at com.sailpoint.tracing.otel.TracedAspect.traceExecution(TracedAspect.java:40)
	at sailpoint.gateway.accessiq.CcgPipelineMessageHandler.handleMessage(CcgPipelineMessageHandler.java:36)
	at com.sailpoint.pipeline.server.PipelineServer$InboundQueueListener$MessageHandler.run(PipelineServer.java:382)
	at java.base\/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base\/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base\/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base\/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base\/java.lang.Thread.run(Thread.java:829)

Thanks

I am fairly certain the response needs to be either JSON or XML, otherwise the Connector doesn’t know how to process it.

You may be able to use text/plain on the initial call, and then implement an After Operation Rule to convert it to JSON or XML. Then the endpoint would be able to process the information.