Is it possible to perform SAS VA report distribution via PROC HTTP ?
We have SAS 9.5M6 with SAS Visual Analytics 7.5.
Normally for report distribution , we schedule report distribution from Report designer and it only support time based schedule.
I was exploring option to perform report distribution via some code /script . So when data refresh is finished or any custom condition is met, script / PROC HTTP code runs and report is distributed.
I tried few things using proc http but not working.
I extracted CURL command using browser developer tool which has long header information .
Challenging is to pass three parameters in proc HTTP
1) referel URL :
2) Cookie : Generating cookie and passing to next url
3) binary data : very huge information pass by browser to SAS for report distribution (Not sure how much data is required to pass)
Below is huge cURL command extracted from Browser developer tool . Specially binary-data that browser pass to SAS Webserver is very huge.
curl 'https://midtier@domain.com:8343/SASVisualAnalyticsTransport/sasui/vaScheduler/flow?javascriptTimezoneOffsetNewYears=300&javascriptTimezoneOffsetJuly=240&operation=runnow' \
-H 'Connection: keep-alive' \
-H 'Accept: application/json, text/javascript, */*; q=0.01' \
-H 'X-Requested-With: XMLHttpRequest' \
-H 'Accept-Language: en' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36' \
-H 'Content-Type: application/json' \
-H 'Origin: https://midtier@domain.com:8343' \
-H 'Sec-Fetch-Site: same-origin' \
-H 'Sec-Fetch-Mode: cors' \
-H 'Sec-Fetch-Dest: empty' \
-H 'Referer: https://midtier@domain.com:8343/SASVisualAnalyticsDesigner/VisualAnalyticsDesigner.jsp?launchedFromAppSwitcher=true&useTransitionSplash=true' \
-H 'Cookie: 45f55273f051bd8b0ec7fac404e76b35_Cluster12=DAE038C7C9249DD71F790729A4151D74.45f55273f051bd8b0ec7fac404e76b35_SASServer12_1' \
--data-binary '{"@type":"flow","idDataBinding":"A5DDG8HK.BW00000A","creationDateDataBinding":1604080633000,"modifiedDateDataBinding":1604081379000,"descriptionDataBinding":"","locationDataBinding":"/System/Applications/SAS Visual Analytics/ScheduledDistribution/Pallav Lodhia","locationIdDataBinding":"A5DDG8HK.AA0000ZJ","iconNameDataBinding":"GIF_16/JobFlow_deployed.gif","displayOnlyDataBinding":false,"nameDataBinding":"user1_WarrantyAnalysis_1604080633288","schedulerDataBinding":{"@type":"schedulerServer","idDataBinding":"A5DDG8HK.AY0000RU","descriptionDataBinding":"","iconNameDataBinding":"GIF_16/Server.gif","displayOnlyDataBinding":false,"nameDataBinding":"SAS Distributed In-Process Services Scheduling Server","classidDataBinding":"c8b4baf0-5f9f-488e-ba76-1201e1e81aef","typeDataBinding":"SAS PIP Services","hostDataBinding":"midtier@domain.com","portDataBinding":"0","subflowSupportedDataBinding":true,"timeeventSupportedDataBinding":true,"fileeventSupportedDataBinding":true,"fileeventSupportedAsTriggersDataBinding":true,"enterpriseLevelSupportOfFileEventsDataBinding":false,"multiTriggersSupportedDataBinding":false,"advanceFlowCompletionCriteriaSupportedDataBinding":true,"emailNotificationSupportedDataBinding":true,"areQueuesDataBinding":false,"queueListDataBinding":[],"jobDefaultEmailNotificationSupportedDataBinding":true,"jobDefaultPrioritySupportedDataBinding":true,"jobDefaultEnvironmentVariablesSupportedDataBinding":false,"exclusiveExecutionSupportedDataBinding":true,"timezoneSupportedDataBinding":true,"limitedSkipsDataBinding":false,"basicSchedulerDataBinding":false,"classId":"c8b4baf0-5f9f-488e-ba76-1201e1e81aef","subflowSupported":false,"timeEventSupported":true,"fileEventSupported":true,"fileEventSupportedAsTriggers":true,"enterpriseLevelSupportOfFileEvents":true,"advanceFlowCompletionCriteriaSupported":true,"emailNotificationSupported":true,"exclusiveSupported":true,"jobDefaultEmailNotificationSupported":true,"jobDefaultPrioritySupported":true,"jobDefaultEnvironmentVariablesSupported":false,"timezoneSupported":true,"multiTriggersSupported":true,"orgateSupported":true,"consoleSupported":true,"basicScheduler":false,"host":"midtier@domain.com","port":"0","type":"SAS PIP Services","sslenabled":false,"id":"A5DDG8HK.AY0000RU","displayInformationOnly":false,"displayOnly":false,"iconName":"GIF_16/Server.gif","name":"SAS Distributed In-Process Services Scheduling Server","description":""},"availableTriggersDataBinding":[],"triggerTypeDataBinding":"RunNow","responsiblePartyDataBinding":"Pallav Lodhia","jobsDataBinding":[{"@type":"job","idDataBinding":"A5DDG8HK.BW000009","creationDateDataBinding":1604080620000,"modifiedDateDataBinding":1604080620000,"locationDataBinding":"/System/Applications/SAS Visual Analytics/ScheduledDistribution/Pallav Lodhia","locationIdDataBinding":"A5DDG8HK.AA0000ZJ","iconNameDataBinding":"GIF_16/Job_deployed.gif","displayOnlyDataBinding":false,"nameDataBinding":"WarrantyAnalysis","batchServerDataBinding":{"@type":"batchServer","idDataBinding":"A5DDG8HK.AY00000Q","descriptionDataBinding":"","iconNameDataBinding":"GIF_16/Server.gif","displayOnlyDataBinding":false,"nameDataBinding":"SASAppVA - Visual Analytics Scheduled Distribution","classidDataBinding":"0069e914-b58c-4094-a686-a87df433ec4b","typeDataBinding":2,"subTypeDataBinding":26,"operatingSystemDataBinding":1,"directoriesDataBinding":[{"@type":"directory","idDataBinding":"A5DDG8HK.BA000007","descriptionDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","iconNameDataBinding":"GIF_16/DeploymentDirectories.gif","displayOnlyDataBinding":false,"nameDataBinding":"Batch Jobs","pathDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","path":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","id":"A5DDG8HK.BA000007","displayInformationOnly":false,"displayOnly":false,"iconName":"GIF_16/DeploymentDirectories.gif","name":"Batch Jobs","description":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs"}],"workspaceNameDataBinding":"SASAppVA - Workspace Server","jclDirectoryDataBinding":"","hostDataBinding":"lcncqsasva01.domain-energy.com","operatingSystem":1,"classId":"0069e914-b58c-4094-a686-a87df433ec4b","directories":[{"@type":"directory","idDataBinding":"A5DDG8HK.BA000007","descriptionDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","iconNameDataBinding":"GIF_16/DeploymentDirectories.gif","displayOnlyDataBinding":false,"nameDataBinding":"Batch Jobs","pathDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","path":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","id":"A5DDG8HK.BA000007","displayInformationOnly":false,"displayOnly":false,"iconName":"GIF_16/DeploymentDirectories.gif","name":"Batch Jobs","description":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs"}],"jcldirectory":"","subType":26,"host":"lcncqsasva01.domain-energy.com","type":2,"id":"A5DDG8HK.AY00000Q","displayInformationOnly":false,"displayOnly":false,"iconName":"GIF_16/Server.gif","name":"SASAppVA - Visual Analytics Scheduled Distribution","description":""},"jobDataBinding":{"@type":"DisplayInfo","idDataBinding":"A5DDG8HK.BS00001F","displayOnlyDataBinding":false,"nameDataBinding":"WarrantyAnalysis","id":"A5DDG8HK.BS00001F","displayInformationOnly":false,"displayOnly":false,"name":"WarrantyAnalysis"},"commandLineDataBinding":"\"/sashome/M6_install/config/Lev1/VASchedDist/vascheddistbatch.sh\" -vad_args {\"jobOwner\":\"Pallav Lodhia\",\"reportPaths\":[\"/Products/SAS Visual Analytics/Samples/Warranty Analysis Sample\"],\"recipients\":[\"Pallav Lodhia\"],\"emailDetails\":{\"subject\":\"Warranty Analysis Sample\",\"addJobOwner\":true},\"specialOptions\":{\"notifyStart\":false,\"notifyEnd\":false},\"ownerLocale\":\"en_US\"} ","commandLineDerivedDataBinding":true,"jobPriorityDataBinding":-1,"responsiblePartyDataBinding":"Pallav Lodhia","subFlowDataBinding":false,"subFlowJobIdsDataBinding":[],"jobArgsDataBinding":"-vad_args {\"jobOwner\":\"Pallav Lodhia\",\"reportPaths\":[\"/Products/SAS Visual Analytics/Samples/Warranty Analysis Sample\"],\"recipients\":[\"Pallav Lodhia\"],\"emailDetails\":{\"subject\":\"Warranty Analysis Sample\",\"addJobOwner\":true},\"specialOptions\":{\"notifyStart\":false,\"notifyEnd\":false},\"ownerLocale\":\"en_US\"}","job":{"@type":"DisplayInfo","idDataBinding":"A5DDG8HK.BS00001F","displayOnlyDataBinding":false,"nameDataBinding":"WarrantyAnalysis","id":"A5DDG8HK.BS00001F","displayInformationOnly":false,"displayOnly":false,"name":"WarrantyAnalysis"},"uniqueName":"WarrantyAnalysisA5DDG8HK.BW000009","commandLineDerived":true,"commandLine":"\"/sashome/M6_install/config/Lev1/VASchedDist/vascheddistbatch.sh\" -vad_args {\"jobOwner\":\"Pallav Lodhia\",\"reportPaths\":[\"/Products/SAS Visual Analytics/Samples/Warranty Analysis Sample\"],\"recipients\":[\"Pallav Lodhia\"],\"emailDetails\":{\"subject\":\"Warranty Analysis Sample\",\"addJobOwner\":true},\"specialOptions\":{\"notifyStart\":false,\"notifyEnd\":false},\"ownerLocale\":\"en_US\"} ","rawCommandLine":"\"/sashome/M6_install/config/Lev1/VASchedDist/vascheddistbatch.sh\" -vad_args {\"jobOwner\":\"Pallav Lodhia\",\"reportPaths\":[\"/Products/SAS Visual Analytics/Samples/Warranty Analysis Sample\"],\"recipients\":[\"Pallav Lodhia\"],\"emailDetails\":{\"subject\":\"Warranty Analysis Sample\",\"addJobOwner\":true},\"specialOptions\":{\"notifyStart\":false,\"notifyEnd\":false},\"ownerLocale\":\"en_US\"} ","jobPriority":-1,"subflow":false,"subflowJobIDs":[],"jobArgs":"-vad_args {\"jobOwner\":\"Pallav Lodhia\",\"reportPaths\":[\"/Products/SAS Visual Analytics/Samples/Warranty Analysis Sample\"],\"recipients\":[\"Pallav Lodhia\"],\"emailDetails\":{\"subject\":\"Warranty Analysis Sample\",\"addJobOwner\":true},\"specialOptions\":{\"notifyStart\":false,\"notifyEnd\":false},\"ownerLocale\":\"en_US\"}","batchServer":{"@type":"batchServer","idDataBinding":"A5DDG8HK.AY00000Q","descriptionDataBinding":"","iconNameDataBinding":"GIF_16/Server.gif","displayOnlyDataBinding":false,"nameDataBinding":"SASAppVA - Visual Analytics Scheduled Distribution","classidDataBinding":"0069e914-b58c-4094-a686-a87df433ec4b","typeDataBinding":2,"subTypeDataBinding":26,"operatingSystemDataBinding":1,"directoriesDataBinding":[{"@type":"directory","idDataBinding":"A5DDG8HK.BA000007","descriptionDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","iconNameDataBinding":"GIF_16/DeploymentDirectories.gif","displayOnlyDataBinding":false,"nameDataBinding":"Batch Jobs","pathDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","path":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","id":"A5DDG8HK.BA000007","displayInformationOnly":false,"displayOnly":false,"iconName":"GIF_16/DeploymentDirectories.gif","name":"Batch Jobs","description":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs"}],"workspaceNameDataBinding":"SASAppVA - Workspace Server","jclDirectoryDataBinding":"","hostDataBinding":"lcncqsasva01.domain-energy.com","operatingSystem":1,"classId":"0069e914-b58c-4094-a686-a87df433ec4b","directories":[{"@type":"directory","idDataBinding":"A5DDG8HK.BA000007","descriptionDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","iconNameDataBinding":"GIF_16/DeploymentDirectories.gif","displayOnlyDataBinding":false,"nameDataBinding":"Batch Jobs","pathDataBinding":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","path":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs","id":"A5DDG8HK.BA000007","displayInformationOnly":false,"displayOnly":false,"iconName":"GIF_16/DeploymentDirectories.gif","name":"Batch Jobs","description":"/sashome/M6_install/config/Lev1/SASAppVA/SASEnvironment/SASCode/Jobs"}],"jcldirectory":"","subType":26,"host":"lcncqsasva01.domain-energy.com","type":2,"id":"A5DDG8HK.AY00000Q","displayInformationOnly":false,"displayOnly":false,"iconName":"GIF_16/Server.gif","name":"SASAppVA - Visual Analytics Scheduled Distribution","description":""},"batchServerType":2,"batchServerSubtype":26,"type":"JOB","id":"A5DDG8HK.BW000009","displayInformationOnly":false,"displayOnly":false,"locationId":"A5DDG8HK.AA0000ZJ","iconName":"GIF_16/Job_deployed.gif","name":"WarrantyAnalysis","location":"/System/Applications/SAS Visual Analytics/ScheduledDistribution/Pallav Lodhia"}],"jobDependenciesDataBinding":[],"submittedDataBinding":true,"flowDefinitionIdDataBinding":"F1603380697241","scheduledUserIdDataBinding":"Anonymous","scheduleIdDataBinding":0,"emailNotificationDataBinding":-1,"completionLevelDataBinding":1,"completionSelectedJobNamesDataBinding":[],"endBehaviorDataBinding":1,"exitcodeBehaviorDataBinding":2,"exclusiveDataBinding":false,"saveLayoutDataBinding":false,"jobDefaultEmailNotificationDataBinding":-1,"jobDefaultPriorityDataBinding":-1,"jobDefaultEnvironmentVariablesDataBinding":"","jobDefaultExceptionHandlersDataBinding":"","notifyEmail":false,"scheduleDefinitionId":"F1603380697241","scheduleID":0,"jobDefaultNotifyEmail":false,"flowSubmitted":true,"scheduledUser":"Anonymous","dirty":true,"displayInformationOnly":false}' \
--compressed
Here few things I tried but not sure how cookie and binrary data to pass in proc http.
%macro echofile(file);
data _null_;
infile &file;
input;
put _infile_;
run;
%mend;
%macro check_return(code,expected);
%if &code ne &expected %then %do;
%put ERROR: Expected &expected, but received &code;
%abort;
%end;
%mend;
filename input TEMP;
filename resp TEMP;
filename headers TEMP;
data _null__;
file input recfm=f lrecl=1;
put "username=&username.%nrstr(&password)=&pwd";
run;
/* URL to get SAS Ticket */
proc http
method="POST"
url="https://midtier@domain.com:8343/SASLogon/v1/tickets"
in=input
headerout=headers
out=resp
HEADEROUT_OVERWRITE;
run;
%echofile(headers);
%echofile(resp);
%global hcode;
%global hmessage;
%global location;
data x;
infile headers scanover truncover;
input @'HTTP/1.1' code 4.
message $255.
@'Location:' loc $255.;
call symputx('hcode',code);
call symput('hmessage',trim(message));
call symput('location',trim(loc));
run;
%put &hcode ;
%put &hmessage;
%put &location;
data _x_;
file input recfm=f lrecl=1;
put "username=&username.%nrstr(&password)=&pwd";
run;
/*%let serviceurl=midtier@domain.com:8343/SASLogon/login?service=https%3A%2F%2Fmidtier@domain.com%3A8343%2FSASVisualAnalyticsDesigner%2Fj_spring_cas_security_check;*/
/*%let serviceurl=midtier@domain.com:8343/SASVisualAnalyticsDesigner/j_spring_cas_security_check;*/
%let serviceurl=midtier@domain.com:8343/SASVisualAnalyticsDesigner;
proc http
method="POST"
url="&location"
in="service=https://&serviceurl. "
headerout=headers
out=resp
HEADEROUT_OVERWRITE;
run;
%echofile(headers);
%echofile(resp);
/**********************************/
%global ticket;
data _null_;
infile resp;
input @;
call symput('ticket',trim(_infile_));
run;
%put &ticket;
/*url was extracted from browser developer tool copy CURL*/
proc http
url="https://midtier@domain.com:8343/SASVisualAnalyticsTransport/sasui/vaScheduler/flow?javascriptTimezoneOffsetNewYears=300%nrstr(&javascriptTimezoneOffsetJuly)=240%nrstr(&operation)=runnow"
/*url="https://midtier@domain.com:8343/SASVisualAnalyticsDesigner?ticket=&ticket."*/
/*url="https://midtier@domain.com:8343/SASVisualAnalyticsDesigner?ticket=&ticket."*/
/*url="https://midtier@domain.com:8343/SASVisualAnalyticsDesigner/j_spring_cas_security_check?ticket=&ticket."*/
in=input
out=resp
headerout=headers
;
run;
%echofile(headers);
%echofile(resp);
/* Trying to get Cookie */
%global cookie;
data cookie;
infile headers scanover truncover ;
input @'Set-Cookie:' cookie $255.;
cookie = scan(cookie,1,";");
call symput('cookie',trim(cookie));
run;
%put &cookie;
Registration is open! SAS is returning to Vegas for an AI and analytics experience like no other! Whether you're an executive, manager, end user or SAS partner, SAS Innovate is designed for everyone on your team. Register for just $495 by 12/31/2023.
If you are interested in speaking, there is still time to submit a session idea. More details are posted on the website.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.