<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Hi Daniel,<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
I can't speak with direct experience for the custom reports module of 3.2 (but I believe it should be able to get you that info), but for 3.1.1, you could absolutely run a python script against your ArchivesSpace API to get that. For example,<br>
<br>
<pre style="background-color: rgb(43, 43, 43); color: rgb(169, 183, 198); font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: rgb(204, 120, 50);"></span><span style="color: rgb(204, 120, 50);">import </span>csv<span style="color: rgb(204, 120, 50);"><br>import </span>re<br><pre style="background-color: rgb(43, 43, 43); color: rgb(169, 183, 198); font-family: "JetBrains Mono", monospace; font-size: 9.8pt;"><span style="color: rgb(204, 120, 50);">from </span>asnake.client <span style="color: rgb(204, 120, 50);">import </span>ASnakeClient<br><br>id_field_regex = re.compile(<span style="color: rgb(106, 135, 89);">r"</span><span style="color: rgb(106, 135, 89); background-color: rgb(54, 65, 53);">(^id_+\d)</span><span style="color: rgb(106, 135, 89);">"</span>)<br>id_combined_regex = re.compile(<span style="color: rgb(106, 135, 89);">r'</span><span style="color: rgb(106, 135, 89); background-color: rgb(54, 65, 53);">[\W_]+</span><span style="color: rgb(106, 135, 89);">'</span><span style="color: rgb(204, 120, 50);">, </span>re.UNICODE)<br><br><br><span style="color: rgb(204, 120, 50);">def </span><span style="color: rgb(255, 198, 109);">write_csv</span>(mode<span style="color: rgb(204, 120, 50);">, </span>coll_title<span style="color: rgb(204, 120, 50);">, </span>coll_id<span style="color: rgb(204, 120, 50);">, </span>coll_url):<br>    <span style="color: rgb(204, 120, 50);">with </span><span style="color: rgb(136, 136, 198);">open</span>(<span style="color: rgb(106, 135, 89);">"res_urls.csv"</span><span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(170, 73, 38);">mode</span>=mode<span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(170, 73, 38);">newline</span>=<span style="color: rgb(106, 135, 89);">''</span><span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(170, 73, 38);">encoding</span>=<span style="color: rgb(106, 135, 89);">'utf-8'</span>) <span style="color: rgb(204, 120, 50);">as </span>res_urls:<br>        file_write = csv.writer(res_urls<span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(170, 73, 38);">delimiter</span>=<span style="color: rgb(106, 135, 89);">","</span>)<br>        file_write.writerow([coll_title<span style="color: rgb(204, 120, 50);">, </span>coll_id<span style="color: rgb(204, 120, 50);">, </span>coll_url])<br>        res_urls.close()<br><br><br><span style="color: rgb(204, 120, 50);">def </span><span style="color: rgb(255, 198, 109);">grab_res_urls</span>(client):<br>    repos = client.get(<span style="color: rgb(106, 135, 89);">"repositories"</span>).json()<br>    <span style="color: rgb(204, 120, 50);">for </span>repo <span style="color: rgb(204, 120, 50);">in </span>repos:<br>        <span style="color: rgb(136, 136, 198);">print</span>(repo[<span style="color: rgb(106, 135, 89);">"name"</span>] + <span style="color: rgb(106, 135, 89);">"</span><span style="color: rgb(204, 120, 50);">\n</span><span style="color: rgb(106, 135, 89);">"</span>)<br>        repo_id = repo[<span style="color: rgb(106, 135, 89);">"uri"</span>].split(<span style="color: rgb(106, 135, 89);">"/"</span>)[<span style="color: rgb(104, 151, 187);">2</span>]<br>        resources = client.get(<span style="color: rgb(106, 135, 89);">"repositories/{}/resources"</span>.format(repo_id)<span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(170, 73, 38);">params</span>={<span style="color: rgb(106, 135, 89);">"all_ids"</span>: <span style="color: rgb(204, 120, 50);">True</span>}).json()<br>        <span style="color: rgb(204, 120, 50);">for </span>resource_id <span style="color: rgb(204, 120, 50);">in </span>resources:<br>            resource = client.get(<span style="color: rgb(106, 135, 89);">"repositories/{}/resources/{}"</span>.format(repo_id<span style="color: rgb(204, 120, 50);">, </span>resource_id))<br>            <span style="color: rgb(204, 120, 50);">if </span>resource.status_code == <span style="color: rgb(104, 151, 187);">200</span>:<br>                combined_id = <span style="color: rgb(106, 135, 89);">""<br></span><span style="color: rgb(106, 135, 89);">                </span><span style="color: rgb(204, 120, 50);">for </span>field<span style="color: rgb(204, 120, 50);">, </span>value <span style="color: rgb(204, 120, 50);">in </span>resource.json().items():<br>                    id_match = id_field_regex.match(field)<br>                    <span style="color: rgb(204, 120, 50);">if </span>id_match:<br>                        combined_id += value + <span style="color: rgb(106, 135, 89);">"-"<br></span><span style="color: rgb(106, 135, 89);">                </span>combined_id = combined_id[:-<span style="color: rgb(104, 151, 187);">1</span>]<br>                <span style="color: rgb(204, 120, 50);">if </span>resource.json()[<span style="color: rgb(106, 135, 89);">"publish"</span>] <span style="color: rgb(204, 120, 50);">is True</span>:<br>                    write_csv(<span style="color: rgb(106, 135, 89);">"a"</span><span style="color: rgb(204, 120, 50);">, </span>resource.json()[<span style="color: rgb(106, 135, 89);">"title"</span>]<span style="color: rgb(204, 120, 50);">, </span>combined_id<span style="color: rgb(204, 120, 50);">, </span>resource.json()[<span style="color: rgb(106, 135, 89);">"uri"</span>])<br>            <span style="color: rgb(204, 120, 50);">else</span>:<br>                <span style="color: rgb(136, 136, 198);">print</span>(<span style="color: rgb(106, 135, 89);">"Error with getting repositories/{}/resources/{}"</span>.format(repo_id<span style="color: rgb(204, 120, 50);">, </span>resource_id))<br>        <span style="color: rgb(136, 136, 198);">print</span>(<span style="color: rgb(106, 135, 89);">"-" </span>* <span style="color: rgb(104, 151, 187);">100</span>)<br><br><br><span style="color: rgb(204, 120, 50);">def </span><span style="color: rgb(255, 198, 109);">run</span>():<br>    asp_client = ASnakeClient(<span style="color: rgb(170, 73, 38);">baseurl</span>=as_api<span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(170, 73, 38);">username</span>=as_un<span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(170, 73, 38);">password</span>=as_pw)<br>    asp_client.authorize()<br>    write_csv(<span style="color: rgb(106, 135, 89);">"w"</span><span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(106, 135, 89);">"Collection_Title"</span><span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(106, 135, 89);">"Collection_ID"</span><span style="color: rgb(204, 120, 50);">, </span><span style="color: rgb(106, 135, 89);">"Collection_URL"</span>)<br>    grab_res_urls(asp_client)<br><br><br>run()</pre></pre>
Running the above would get you a CSV file with all published collections and their info, You would have to tweak the above code to add the "https://alaska.libraryhost.com" part to the URL's returned. Also, under def run():, replace as_api, as_un, and as_pw
 with your archivesspace API URL, username, and password.<br>
<br>
Example output:
<table style="border-collapse:collapse;width:476pt" width="634">
<tbody>
<tr style="height:15.0pt" height="20">
<td style="padding-top: 1px; padding-right: 1px; padding-left: 1px; color: black; font-size: 11pt; font-family: Calibri, sans-serif; vertical-align: bottom; border: 1px solid rgb(212, 212, 212); white-space: nowrap !important; height: 15pt; width: 212pt;" width="282" height="20">
Florene Young papers</td>
<td style="padding-top: 1px; padding-right: 1px; padding-left: 1px; color: black; font-size: 11pt; font-family: Calibri, sans-serif; vertical-align: bottom; border: 1px solid rgb(212, 212, 212); white-space: nowrap !important; width: 110pt;" width="147">
UA04-025</td>
<td style="padding-top: 1px; padding-right: 1px; padding-left: 1px; color: black; font-size: 11pt; font-family: Calibri, sans-serif; vertical-align: bottom; border: 1px solid rgb(212, 212, 212); white-space: nowrap !important; width: 154pt;" width="205">
/repositories/5/resources/4714</td>
</tr>
</tbody>
</table>
<br>
<br>
I'm more than happy to walk you through the steps of running and/or tweaking the above if you would like, so feel free to email me (Corey.Schmidt@uga.edu).<br>
<br>
Hope this helps,<br>
<br>
Corey<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> archivesspace_users_group-bounces@lyralists.lyrasis.org <archivesspace_users_group-bounces@lyralists.lyrasis.org> on behalf of Cornwall, Daniel
 D (EED) <daniel.cornwall@alaska.gov><br>
<b>Sent:</b> Tuesday, March 22, 2022 4:44 PM<br>
<b>To:</b> Archivesspace Users Group <archivesspace_users_group@lyralists.lyrasis.org><br>
<b>Subject:</b> [Archivesspace_Users_Group] Generating a list of collections URLs</font>
<div> </div>
</div>
<style>
<!--
@font-face
        {font-family:"Cambria Math"}
@font-face
        {font-family:Calibri}
@font-face
        {font-family:"Open Sans ExtraBold"}
@font-face
        {font-family:"Open Sans"}
p.x_MsoNormal, li.x_MsoNormal, div.x_MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif}
a:link, span.x_MsoHyperlink
        {color:#0563C1;
        text-decoration:underline}
span.x_EmailStyle17
        {font-family:"Calibri",sans-serif;
        color:windowtext}
.x_MsoChpDefault
        {}
@page WordSection1
        {margin:1.0in 1.0in 1.0in 1.0in}
div.x_WordSection1
        {}
-->
</style>
<div lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word"><font color="BA0C2F">[EXTERNAL SENDER - PROCEED CAUTIOUSLY]</font><br>
<br>
<div>
<div class="x_WordSection1">
<p class="x_MsoNormal">Hi All, </p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">My institution has cataloged our finding aids into our regular library catalog. With our recent-ish migration to ArchivesSpace, there is interest to ensure that all of our catalog finding aid records actually have ArchivesSpace URLs.</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">I know there is a resource list report in AS, but it doesn’t provide the URL. Ideally, I’d like a report that lists:</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">Collection Name</p>
<p class="x_MsoNormal">Collection Identifier</p>
<p class="x_MsoNormal">Collection URL</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">For example, </p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">George L. Harrington Photograph Collection, ca. 1909-1917</p>
<p class="x_MsoNormal">Identifier: PCA 6</p>
<p class="x_MsoNormal"><a href="https://alaska.libraryhost.com/repositories/2/resources/458">https://alaska.libraryhost.com/repositories/2/resources/458</a></p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">We’re currently on v. 3.1.1 – Could such a report be run on this version, and if not, could something like this be run in the custom reports module in 3.2? I’m not sure we’d immediately upgrade if we couldn’t get such a report anyway.
</p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal">Thanks for any thoughts, insight or experience. - Daniel</p>
<p class="x_MsoNormal"></p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal"> </p>
<p class="x_MsoNormal"> </p>
<table class="x_MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="684" style="width:513.0pt; border-collapse:collapse">
<tbody>
<tr>
<td width="168" valign="top" style="width:126.35pt; padding:0in 5.4pt 0in 5.4pt">
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans",sans-serif"> </span></p>
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans",sans-serif"><img border="0" width="132" height="129" id="x_Picture_x0020_3" style="width:1.375in; height:1.3416in" data-outlook-trace="F:1|T:1" src="cid:image001.png@01D83DEA.286A0CF0"></span><span style="font-family:"Open Sans",sans-serif"></span></p>
</td>
<td width="516" valign="top" style="width:386.65pt; padding:0in 5.4pt 0in 5.4pt">
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans ExtraBold",sans-serif">====================================================</span></p>
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans ExtraBold",sans-serif">Daniel Cornwall</span></p>
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans",sans-serif">Pronouns: he/him/his</span></p>
<p class="x_MsoNormal" style="line-height:105%"><i><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans",sans-serif">Continuing Resources Libarian</span></i></p>
<p class="x_MsoNormal" style="line-height:105%"><i><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans",sans-serif">Information Services Staff, Alaska State Library</span></i></p>
<p class="x_MsoNormal" style="line-height:105%"><i><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans",sans-serif"> </span></i></p>
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif; color:#C00000">Andrew P. Kashevaroff Building</span><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif"></span></p>
<p class="x_MsoNormal" style="line-height:105%"><b><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif">Phone:
</span></b><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif">907.465.2988</span></p>
<p class="x_MsoNormal" style="line-height:105%"><b><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif">Mail:</span></b><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif"> PO Box 110571, Juneau,
 AK 99811</span></p>
<p class="x_MsoNormal" style="line-height:105%"><b><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif">Visit:</span></b><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif"> 395 Whittier St.,
 Juneau, AK 99801</span></p>
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif; color:#C00000"> </span><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif"></span></p>
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:10.0pt; line-height:105%; font-family:"Open Sans",sans-serif"><a href="mailto:daniel.cornwall@alaska.gov"><span style="color:blue">email</span></a><span style="color:#C00000"> |
</span><a href="http://library.alaska.gov/"><span style="color:blue">web</span></a><span style="color:#C00000"> | 
</span><a href="http://list.state.ak.us/mailman/listinfo/at-apk-and-sjm"><span style="color:blue">sign up for event notifications</span></a>
</span></p>
<p class="x_MsoNormal" style="line-height:105%"><span style="font-size:8.0pt; line-height:105%; font-family:"Open Sans",sans-serif"> </span></p>
</td>
</tr>
</tbody>
</table>
<p class="x_MsoNormal"><span style=""> </span></p>
<p class="x_MsoNormal"> </p>
</div>
</div>
</div>
</body>
</html>