só nível de explicação segue abaixo o código retirado usando o componente diretamente
///RESTRequest4D.Request.Client.pas corresponde ao TRestClient
//.BaseURL(url)
FRESTClient.BaseURL := 'url';
//.AddHeader('', '')
FRESTRequest.Params.clear;
//.ContentType('application/pdf')
FRESTRequest.Params.AddHeader('Content-Type','application/pdf');
FRESTRequest.Params.ParameterByName('Content-Type').Options := [poDoNotEncode];
//.AddBody(lStream, false)
{$IF COMPILERVERSION <= 29}
FRESTRequest.AddBody(lStream, TRESTContentType.ctAPPLICATION_OCTET_STREAM);
{$ELSE}
FRESTRequest.Body.Add(lStream, TRESTContentType.ctAPPLICATION_OCTET_STREAM);
// .PUT;
FRESTRequest.Method := TRESTRequestMethod.rmPUT;
FRESTRequest.Execute;
linhas comentadas são as do código lá da classe que encapsula
e as demais seria usando ocomponente direto TRestClient