/** @file @brief Fetches the list of users from SASjs Server @details Fetches the list of users from SASjs Server and writes them to an output dataset. Can also be filtered, for a particular group. Example: %ms_getusers(outds=userlist) Filtering for a group by group name: %ms_getusers(outds=work.groupmembers, group=GROUPNAME) Filtering for a group by group id: %ms_getusers(outds=work.groupmembers, gid=1) @param [in] mdebug= (0) Set to 1 to enable DEBUG messages @param [in] group= (0) Set to a group name to filter members for that group @param [in] gid= (0) Set to a group id to filter members for that group @param [out] outds= (work.ms_getusers) This output dataset will contain the list of user accounts. Format: |DISPLAYNAME:$60.|USERNAME:$30.|ID:best.| |---|---|---| |`Super Admin `|`secretuser `|`1`| |`Sabir Hassan`|`sabir`|`2`| |`Mihajlo Medjedovic `|`mihajlo `|`3`| |`Ivor Townsend `|`ivor `|`4`| |`New User `|`newuser `|`5`|

SAS Macros

@li mf_getuniquefileref.sas @li mf_getuniquelibref.sas @li mp_abort.sas

Related Files

@li ms_createuser.sas @li ms_getgroups.sas @li ms_getusers.test.sas **/ %macro ms_getusers( outds=work.ms_getusers, group=0, gid=0, mdebug=0 ); %mp_abort( iftrue=(&syscc ne 0) ,mac=ms_getusers.sas ,msg=%str(syscc=&syscc on macro entry) ) %local fref0 fref1 libref optval rc msg url; %let fref0=%mf_getuniquefileref(); %let fref1=%mf_getuniquefileref(); %let libref=%mf_getuniquelibref(); %if %sysget(MODE)=desktop %then %do; /* users api does not exist in desktop mode */ data &outds; length DISPLAYNAME $60 USERNAME:$30 ID 8; USERNAME="&sysuserid"; DISPLAYNAME="&sysuserid (desktop mode)"; ID=1; output; stop; run; %return; %end; /* avoid sending bom marker to API */ %let optval=%sysfunc(getoption(bomfile)); options nobomfile; data _null_; file &fref0 lrecl=1000; infile "&_sasjs_tokenfile" lrecl=1000; input; if _n_=1 then put "accept: application/json"; put _infile_; run; %if &mdebug=1 %then %do; data _null_; infile &fref0; input; put _infile_; run; %end; %if "&group" ne "0" %then %let url=/SASjsApi/group/by/groupname/&group; %else %if "&gid" ne "0" %then %let url=/SASjsApi/group/&gid; %else %let url=/SASjsApi/user; proc http method='GET' headerin=&fref0 out=&fref1 url="&_sasjs_apiserverurl.&url"; %if &mdebug=1 %then %do; debug level=1; %end; run; %mp_abort( iftrue=(&syscc ne 0) ,mac=ms_getusers.sas ,msg=%str(Issue submitting API query) ) libname &libref JSON fileref=&fref1; %if "&group"="0" and "&gid"="0" %then %do; data &outds; length DISPLAYNAME $60 USERNAME:$30 ID 8; if nobs=0 then call missing(of _all_); set &libref..root nobs=nobs; drop ordinal_root; run; %end; %else %do; data &outds; length DISPLAYNAME $60 USERNAME:$30 ID 8; if nobs=0 then call missing(of _all_); set &libref..users nobs=nobs; drop ordinal_root ordinal_users; run; %end; %mp_abort( iftrue=(&syscc ne 0) ,mac=ms_getusers.sas ,msg=%str(Issue reading response JSON) ) /* reset options */ options &optval; %if &mdebug=1 %then %do; filename &fref0 clear; filename &fref1 clear; libname &libref clear; %end; %mend ms_getusers;