File size: 101,119 Bytes
3d16fe6
896453f
 
1f7780e
896453f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fcf298e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
<!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-integrations/dataverse" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.0"><title data-rh=true>πŸ“š Dataverse API Integration | Open Navigator</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"/><meta data-rh=true property=og:image content=https://www.communityone.com/img/docusaurus-social-card.jpg /><meta data-rh=true name=twitter:image content=https://www.communityone.com/img/docusaurus-social-card.jpg /><meta data-rh=true property=og:url content=https://www.communityone.com/docs/integrations/dataverse /><meta data-rh=true property=og:locale content=en /><meta data-rh=true name=docusaurus_locale content=en /><meta data-rh=true name=docsearch:language content=en /><meta data-rh=true name=keywords content="civic engagement, policy tracking, meeting minutes, nonprofit tracking, municipal government, advocacy, open data, local government"/><meta data-rh=true property=og:type content=website /><meta data-rh=true property=og:site_name content="Open Navigator"/><meta data-rh=true name=twitter:card content=summary_large_image /><meta data-rh=true name=docusaurus_version content=current /><meta data-rh=true name=docusaurus_tag content=docs-default-current /><meta data-rh=true name=docsearch:version content=current /><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current /><meta data-rh=true property=og:title content="πŸ“š Dataverse API Integration | Open Navigator"/><meta data-rh=true name=description content=Overview /><meta data-rh=true property=og:description content=Overview /><link data-rh=true rel=icon href=/img/favicon.ico /><link data-rh=true rel=canonical href=https://www.communityone.com/docs/integrations/dataverse /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/integrations/dataverse hreflang=en /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/integrations/dataverse hreflang=x-default /><script data-rh=true type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":"https://www.communityone.com/docs/for-developers","name":"Developers & Technical Users","position":1},{"@type":"ListItem","item":"https://www.communityone.com/docs/integrations/dataverse","name":"πŸ“š Dataverse API Integration","position":2}]}</script><link rel=alternate type=application/rss+xml href=/blog/rss.xml title="Open Navigator RSS Feed"><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="Open Navigator Atom Feed"><link rel=preconnect href=https://www.google-analytics.com><link rel=preconnect href=https://www.googletagmanager.com><script async src="https://www.googletagmanager.com/gtag/js?id=G-5EQV815915"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-5EQV815915",{anonymize_ip:!0})</script><link rel=stylesheet href=/assets/css/styles.c89d6b2d.css /><script src=/assets/js/runtime~main.c8fa085e.js defer></script><script src=/assets/js/main.6e24e536.js defer></script></head><body><svg style="display: none;"><defs>
<symbol id=theme-svg-external-link viewBox="0 0 24 24"><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme-7e9")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/img/communityone_logo.svg /><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","address":{"@type":"PostalAddress","addressCountry":"US","addressLocality":"Tuscaloosa","addressRegion":"AL","postalCode":"35406","streetAddress":"5617 Lakeridge Court"},"contactPoint":{"@type":"ContactPoint","availableLanguage":["English"],"contactType":"Customer Service","email":"johnbowyer@communityone.com"},"description":"Track 90,000+ jurisdictions, 1.8M nonprofits, and analyze meeting minutes with AI. The open path to everything local.","email":"johnbowyer@communityone.com","legalName":"CommunityOne","logo":"https://www.communityone.com/img/communityone_logo.svg","name":"CommunityOne","sameAs":["https://www.facebook.com/communityone","https://www.instagram.com/communityone","https://twitter.com/communityone","https://www.linkedin.com/company/communityone","https://www.youtube.com/@communityone","https://discord.gg/communityone","https://github.com/getcommunityone/open-navigator"],"url":"https://www.communityone.com"}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"WebSite","alternateName":"CommunityOne Open Navigator","description":"AI-powered civic engagement platform tracking jurisdictions, nonprofits, and government meetings","name":"Open Navigator","potentialAction":{"@type":"SearchAction","query-input":"required name=search_term_string","target":{"@type":"EntryPoint","urlTemplate":"https://www.communityone.com/search?q={search_term_string}"}},"url":"https://www.communityone.com"}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"SoftwareApplication","aggregateRating":{"@type":"AggregateRating","ratingCount":"1","ratingValue":"5"},"applicationCategory":"BusinessApplication","description":"Track 90,000+ jurisdictions, 1.8M nonprofits, and analyze meeting minutes with AI","featureList":["Track 90,000+ jurisdictions","Monitor 1.8M nonprofits","Analyze meeting minutes","Legislative bill tracking","Campaign finance data"],"name":"Open Navigator","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"operatingSystem":"Web","screenshot":"https://www.communityone.com/img/docusaurus-social-card.jpg","softwareVersion":"1.0.0"}</script><div role=region aria-label="Skip to main content"><a class=skipToContent_fXgn href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="theme-layout-navbar navbar navbar--fixed-top"><div class=navbar__inner><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a href=https://www.communityone.com target=_self rel="noopener noreferrer" class=navbar__brand><div class=navbar__logo><img src=/img/communityone_logo.svg alt="CommunityOne Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"/><img src=/img/communityone_logo.svg alt="CommunityOne Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"/></div><b class="navbar__title text--truncate">Open Navigator Home</b></a><a class="navbar__item navbar__link" href=/docs/intro>Getting Started</a><a class="navbar__item navbar__link" href=/docs/for-families>Families & Individuals</a><a class="navbar__item navbar__link" href=/docs/for-advocates>Policy Makers</a><a class="navbar__item navbar__link" href=/docs/for-developers>Developers</a><a class="navbar__item navbar__link" href=/docs/data-sources/citations>Data and Terms</a><a class="navbar__item navbar__link" href=/blog>Blog</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href=https://github.com/getcommunityone/open-navigator-for-engagement target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type=button disabled title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill=currentColor d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill=currentColor d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill=currentColor d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"/></svg></button></div><div class=navbarSearchContainer_Bca1></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class=docsWrapper_hBAB><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type=button></button><div class=docRoot_UBD9><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class=sidebarViewport_aRkj><div class=sidebar_njMd><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/intro><span title="Getting Started" class=categoryLinkLabel_W154>Getting Started</span></a></div><ul class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/intro><span title=Introduction class=linkLabel_WmDU>Introduction</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/open-navigator><span title="Open Navigator" class=linkLabel_WmDU>Open Navigator</span></a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist" href=/docs/for-families><span title="Families & Individuals" class=categoryLinkLabel_W154>Families & Individuals</span></a><button aria-label="Collapse sidebar category 'Families & Individuals'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul class=menu__list><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/families/community-events><span title="Resources for Families" class=categoryLinkLabel_W154>Resources for Families</span></a></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/open-navigator><span title="Getting Started with Open Navigator" class=linkLabel_WmDU>Getting Started with Open Navigator</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/data-sources/citations><span title="Data and Citations" class=linkLabel_WmDU>Data and Citations</span></a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist" href=/docs/for-advocates><span title="Policy Makers & Advocates" class=categoryLinkLabel_W154>Policy Makers & Advocates</span></a><button aria-label="Collapse sidebar category 'Policy Makers & Advocates'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul class=menu__list><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/data-sources/overview><span title="Understanding the Data" class=categoryLinkLabel_W154>Understanding the Data</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/guides/political-economy><span title="Analysis & Strategy" class=categoryLinkLabel_W154>Analysis & Strategy</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/case-studies/tuscaloosa-complete><span title="Real-World Examples" class=categoryLinkLabel_W154>Real-World Examples</span></a></div></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--active" href=/docs/for-developers><span title="Developers & Technical Users" class=categoryLinkLabel_W154>Developers & Technical Users</span></a><button aria-label="Collapse sidebar category 'Developers & Technical Users'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul class=menu__list><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/quickstart><span title="Setup & Installation" class=categoryLinkLabel_W154>Setup & Installation</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/data-sources/citations><span title="Data Sources (Technical)" class=categoryLinkLabel_W154>Data Sources (Technical)</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/guides/jurisdiction-setup><span title="How-To Guides" class=categoryLinkLabel_W154>How-To Guides</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role=button aria-expanded=true tabindex=0 href=/docs/integrations/mcp-server><span title=Integrations class=categoryLinkLabel_W154>Integrations</span></a></div><ul class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/mcp-server><span title="Model Context Protocol (MCP) Server" class=linkLabel_WmDU>Model Context Protocol (MCP) Server</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/grants-gov-api><span title="Grants.gov API Integration" class=linkLabel_WmDU>Grants.gov API Integration</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/fec-political-contributions><span title="FEC Political Contributions" class=linkLabel_WmDU>FEC Political Contributions</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/fec-campaign-finance><span title="FEC Campaign Finance Integration" class=linkLabel_WmDU>FEC Campaign Finance Integration</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/dataverse-summary><span title="πŸŽ‰ Harvard Dataverse Integration - Complete!" class=linkLabel_WmDU>πŸŽ‰ Harvard Dataverse Integration - Complete!</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/docs/integrations/dataverse><span title="πŸ“š Dataverse API Integration" class=linkLabel_WmDU>πŸ“š Dataverse API Integration</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/eboard-automated><span title="Automated eBoard Scraping Solutions" class=linkLabel_WmDU>Automated eBoard Scraping Solutions</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/eboard-cookies><span title="eBoard Cookie Extraction Guide" class=linkLabel_WmDU>eBoard Cookie Extraction Guide</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/eboard-manual><span title="eBoard Platform Manual Download Guide" class=linkLabel_WmDU>eBoard Platform Manual Download Guide</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/fec-integration-summary><span title="FEC Campaign Finance Integration - Implementation Summary" class=linkLabel_WmDU>FEC Campaign Finance Integration - Implementation Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/frontend><span title="Frontend Integration Guide" class=linkLabel_WmDU>Frontend Integration Guide</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/localview><span title="πŸ“š LocalView Integration Guide" class=linkLabel_WmDU>πŸ“š LocalView Integration Guide</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/integrations/overview><span title="Integration Guide: Reusing Open-Source Municipal Scraping Logic" class=linkLabel_WmDU>Integration Guide: Reusing Open-Source Municipal Scraping Logic</span></a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/deployment/databricks-apps><span title=Deployment class=categoryLinkLabel_W154>Deployment</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/development/database-setup><span title=Development class=categoryLinkLabel_W154>Development</span></a></div></ul></ul></nav></div></div></aside><main class=docMainContainer_TBSr><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_VOVn"><div class=docItemContainer_Djhp><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label=Breadcrumbs><ul class=breadcrumbs><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_YNFT><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li class=breadcrumbs__item><a class=breadcrumbs__link href=/docs/for-developers><span>Developers & Technical Users</span></a><li class=breadcrumbs__item><span class=breadcrumbs__link>Integrations</span><li class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link>πŸ“š Dataverse API Integration</span></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type=button class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>πŸ“š Dataverse API Integration</h1></header>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=overview>Overview<a href=#overview class=hash-link aria-label="Direct link to Overview" title="Direct link to Overview" translate=no>​</a></h2>
<p>This project integrates with <a href=https://dataverse.harvard.edu/ target=_blank rel="noopener noreferrer" class="">Harvard Dataverse</a> following <strong>official IQSS best practices</strong> from <a href=https://github.com/IQSS/dataverse target=_blank rel="noopener noreferrer" class="">github.com/IQSS/dataverse</a>.</p>
<p><strong>What is Dataverse?</strong></p>
<ul>
<li class="">Open-source research data repository platform developed by Harvard IQSS</li>
<li class="">Hosts thousands of academic datasets with proper versioning and DOIs</li>
<li class="">Provides REST APIs for programmatic access</li>
</ul>
<p><strong>Our Use Case:</strong></p>
<ul>
<li class="">Download the <strong>LocalView dataset</strong> (doi:10.7910/DVN/NJTBEM)</li>
<li class="">1,000-10,000 municipality URLs with meeting video archives</li>
<li class="">Largest known database of municipal meeting videos</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-what-weve-implemented>βœ… What We've Implemented<a href=#-what-weve-implemented class=hash-link aria-label="Direct link to βœ… What We've Implemented" title="Direct link to βœ… What We've Implemented" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-production-ready-dataverse-client>1. <strong>Production-Ready Dataverse Client</strong><a href=#1-production-ready-dataverse-client class=hash-link aria-label="Direct link to 1-production-ready-dataverse-client" title="Direct link to 1-production-ready-dataverse-client" translate=no>​</a></h3>
<p><strong>File</strong>: <a class="" href=/docs/discovery/dataverse_client.py><code>discovery/dataverse_client.py</code></a></p>
<p>Implements all IQSS best practices:</p>
<table><thead><tr><th>Feature<th>Status<th>Implementation<tbody><tr><td><strong>API Authentication</strong><td>βœ… Implemented<td>X-Dataverse-key header with optional API key<tr><td><strong>Rate Limiting</strong><td>βœ… Implemented<td>Client-side throttling (100 req/min)<tr><td><strong>Error Handling</strong><td>βœ… Implemented<td>Handles 401, 404, 429, 500+ status codes<tr><td><strong>Retry Logic</strong><td>βœ… Implemented<td>Exponential backoff with configurable retries<tr><td><strong>Checksum Verification</strong><td>βœ… Implemented<td>MD5 checksum validation for all downloads<tr><td><strong>Version-Aware Caching</strong><td>βœ… Implemented<td>Caches metadata and files with version tracking<tr><td><strong>Pagination</strong><td>βœ… Implemented<td>Handles large file lists<tr><td><strong>Timeout Handling</strong><td>βœ… Implemented<td>Configurable timeouts with retry</table>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-quick-start>πŸš€ Quick Start<a href=#-quick-start class=hash-link aria-label="Direct link to πŸš€ Quick Start" title="Direct link to πŸš€ Quick Start" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=option-1-with-api-key-recommended>Option 1: With API Key (Recommended)<a href=#option-1-with-api-key-recommended class=hash-link aria-label="Direct link to Option 1: With API Key (Recommended)" title="Direct link to Option 1: With API Key (Recommended)" translate=no>​</a></h3>
<p><strong>Benefits</strong>:</p>
<ul>
<li class="">βœ… Automatic downloads</li>
<li class="">βœ… Higher rate limits</li>
<li class="">βœ… No manual steps</li>
</ul>
<p><strong>Setup</strong>:</p>
<ol>
<li class="">
<p><strong>Get free API key</strong> (5 minutes):</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain"># Visit Harvard Dataverse</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">open https://dataverse.harvard.edu/loginpage.xhtml</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Sign up/login, then generate API key in Account Settings</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p><strong>Add to <code>.env</code></strong>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">echo "DATAVERSE_API_KEY=your-actual-key-here" >> .env</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p><strong>Run ingestion</strong>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/localview_ingestion.py</span><br/></div></code></pre></div></div>
</li>
</ol>
<p>The script will automatically:</p>
<ul>
<li class="">Download all CSV/TAB files from LocalView dataset</li>
<li class="">Verify checksums</li>
<li class="">Save to <code>data/cache/localview/</code></li>
<li class="">Process and load into Delta Lake</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=option-2-manual-download-no-api-key-needed>Option 2: Manual Download (No API Key Needed)<a href=#option-2-manual-download-no-api-key-needed class=hash-link aria-label="Direct link to Option 2: Manual Download (No API Key Needed)" title="Direct link to Option 2: Manual Download (No API Key Needed)" translate=no>​</a></h3>
<p><strong>When to use</strong>:</p>
<ul>
<li class="">Don't want to create Dataverse account</li>
<li class="">One-time download</li>
</ul>
<p><strong>Steps</strong>:</p>
<ol>
<li class="">
<p><strong>Visit dataset page</strong>:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/NJTBEM</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p><strong>Download files</strong>:</p>
<ul>
<li class="">Scroll to "Files" section</li>
<li class="">Download all CSV/TAB files</li>
<li class="">Save to: <code>data/cache/localview/</code></li>
</ul>
</li>
<li class="">
<p><strong>Run ingestion</strong>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/localview_ingestion.py</span><br/></div></code></pre></div></div>
</li>
</ol>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-api-usage-examples>πŸ“– API Usage Examples<a href=#-api-usage-examples class=hash-link aria-label="Direct link to πŸ“– API Usage Examples" title="Direct link to πŸ“– API Usage Examples" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=basic-usage>Basic Usage<a href=#basic-usage class=hash-link aria-label="Direct link to Basic Usage" title="Direct link to Basic Usage" translate=no>​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token keyword" style=color:#00009f>from</span><span class="token plain"> discovery</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">dataverse_client </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> DataverseClient</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic># Initialize client</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">client </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> DataverseClient</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">api_key</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"your-key"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic># Get dataset metadata</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">metadata </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>await</span><span class="token plain"> client</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">get_dataset_metadata</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"doi:10.7910/DVN/NJTBEM"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>print</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string-interpolation string" style=color:#e3116c>f"Found </span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation builtin">len</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>(</span><span class="token string-interpolation interpolation">metadata</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>[</span><span class="token string-interpolation interpolation string" style=color:#e3116c>'data'</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>]</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>[</span><span class="token string-interpolation interpolation string" style=color:#e3116c>'latestVersion'</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>]</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>[</span><span class="token string-interpolation interpolation string" style=color:#e3116c>'files'</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>]</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>)</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>}</span><span class="token string-interpolation string" style=color:#e3116c> files"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic># Download entire dataset</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">result </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>await</span><span class="token plain"> client</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">download_dataset</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"doi:10.7910/DVN/NJTBEM"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>print</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string-interpolation string" style=color:#e3116c>f"Downloaded </span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">result</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>[</span><span class="token string-interpolation interpolation string" style=color:#e3116c>'downloaded'</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>]</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>}</span><span class="token string-interpolation string" style=color:#e3116c> files to </span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">result</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>[</span><span class="token string-interpolation interpolation string" style=color:#e3116c>'output_dir'</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>]</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>}</span><span class="token string-interpolation string" style=color:#e3116c>"</span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=advanced-usage>Advanced Usage<a href=#advanced-usage class=hash-link aria-label="Direct link to Advanced Usage" title="Direct link to Advanced Usage" translate=no>​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic># Download only specific file types</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">result </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>await</span><span class="token plain"> client</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">download_dataset</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    persistent_id</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"doi:10.7910/DVN/NJTBEM"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    output_dir</span><span class="token operator" style=color:#393A34>=</span><span class="token plain">Path</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"custom/output/dir"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    file_types</span><span class="token operator" style=color:#393A34>=</span><span class="token punctuation" style=color:#393A34>[</span><span class="token string" style=color:#e3116c>".csv"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>".tab"</span><span class="token punctuation" style=color:#393A34>]</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain">  </span><span class="token comment" style=color:#999988;font-style:italic># Only CSV and TAB files</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    verify_checksums</span><span class="token operator" style=color:#393A34>=</span><span class="token boolean" style=color:#36acaa>True</span><span class="token plain">  </span><span class="token comment" style=color:#999988;font-style:italic># Verify MD5 checksums</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic># Download single file with checksum verification</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">success </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>await</span><span class="token plain"> client</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">download_file</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    file_id</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>123456</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    output_path</span><span class="token operator" style=color:#393A34>=</span><span class="token plain">Path</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"data/municipalities.csv"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    expected_checksum</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"abc123def456..."</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    verify_checksum</span><span class="token operator" style=color:#393A34>=</span><span class="token boolean" style=color:#36acaa>True</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic># Search for datasets</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">results </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>await</span><span class="token plain"> client</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">search_datasets</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    query</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"municipal meetings"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token builtin">type</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"dataset"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    per_page</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>10</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=convenience-function>Convenience Function<a href=#convenience-function class=hash-link aria-label="Direct link to Convenience Function" title="Direct link to Convenience Function" translate=no>​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token keyword" style=color:#00009f>from</span><span class="token plain"> discovery</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">dataverse_client </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> download_localview_dataset</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic># One-line LocalView download</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">result </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>await</span><span class="token plain"> download_localview_dataset</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    api_key</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"your-key"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain">  </span><span class="token comment" style=color:#999988;font-style:italic># Optional if set in .env</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    output_dir</span><span class="token operator" style=color:#393A34>=</span><span class="token plain">Path</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"data/cache/localview"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-configuration>πŸ”§ Configuration<a href=#-configuration class=hash-link aria-label="Direct link to πŸ”§ Configuration" title="Direct link to πŸ”§ Configuration" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=environment-variables>Environment Variables<a href=#environment-variables class=hash-link aria-label="Direct link to Environment Variables" title="Direct link to Environment Variables" translate=no>​</a></h3>
<p>Add to <code>.env</code>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain"># Optional - improves rate limits and enables automatic downloads</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">DATAVERSE_API_KEY=your_api_key_here</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=config-settings>Config Settings<a href=#config-settings class=hash-link aria-label="Direct link to Config Settings" title="Direct link to Config Settings" translate=no>​</a></h3>
<p>Defined in <a class="" href=/docs/config/settings.py><code>config/settings.py</code></a>:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token keyword" style=color:#00009f>class</span><span class="token plain"> </span><span class="token class-name">Settings</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">BaseSettings</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    dataverse_api_key</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> Optional</span><span class="token punctuation" style=color:#393A34>[</span><span class="token builtin">str</span><span class="token punctuation" style=color:#393A34>]</span><span class="token plain"> </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> Field</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">        </span><span class="token boolean" style=color:#36acaa>None</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><br/></div><div class=token-line style=color:#393A34><span class="token plain">        description</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"Harvard Dataverse API key (optional, improves rate limits)"</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-best-practices-implemented>🎯 Best Practices Implemented<a href=#-best-practices-implemented class=hash-link aria-label="Direct link to 🎯 Best Practices Implemented" title="Direct link to 🎯 Best Practices Implemented" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=from-iqssdataverse-documentation>From IQSS/dataverse Documentation<a href=#from-iqssdataverse-documentation class=hash-link aria-label="Direct link to From IQSS/dataverse Documentation" title="Direct link to From IQSS/dataverse Documentation" translate=no>​</a></h3>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-authentication>1. <strong>Authentication</strong><a href=#1-authentication class=hash-link aria-label="Direct link to 1-authentication" title="Direct link to 1-authentication" translate=no>​</a></h4>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">headers </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token punctuation" style=color:#393A34>{</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token string" style=color:#e3116c>"X-Dataverse-key"</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> api_key</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain">  </span><span class="token comment" style=color:#999988;font-style:italic># Proper header name</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token string" style=color:#e3116c>"Content-Type"</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"application/json"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token string" style=color:#e3116c>"User-Agent"</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"OralHealthPolicyPulse/1.0"</span><span class="token plain">  </span><span class="token comment" style=color:#999988;font-style:italic># Identify our app</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token punctuation" style=color:#393A34>}</span><br/></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-rate-limiting>2. <strong>Rate Limiting</strong><a href=#2-rate-limiting class=hash-link aria-label="Direct link to 2-rate-limiting" title="Direct link to 2-rate-limiting" translate=no>​</a></h4>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic># Client-side throttling</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>async</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>def</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>_rate_limit_wait</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">self</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token comment" style=color:#999988;font-style:italic># Limit to 100 requests per minute</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token comment" style=color:#999988;font-style:italic># Prevents 429 errors</span><br/></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-error-handling>3. <strong>Error Handling</strong><a href=#3-error-handling class=hash-link aria-label="Direct link to 3-error-handling" title="Direct link to 3-error-handling" translate=no>​</a></h4>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic># Handle all documented status codes</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>if</span><span class="token plain"> response</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">status_code </span><span class="token operator" style=color:#393A34>==</span><span class="token plain"> </span><span class="token number" style=color:#36acaa>401</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token keyword" style=color:#00009f>raise</span><span class="token plain"> DataverseAPIError</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"Unauthorized: API key required"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>elif</span><span class="token plain"> response</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">status_code </span><span class="token operator" style=color:#393A34>==</span><span class="token plain"> </span><span class="token number" style=color:#36acaa>429</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    retry_after </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> response</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">headers</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">get</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"Retry-After"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token number" style=color:#36acaa>60</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token keyword" style=color:#00009f>await</span><span class="token plain"> asyncio</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">sleep</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">retry_after</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>elif</span><span class="token plain"> response</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">status_code </span><span class="token operator" style=color:#393A34>>=</span><span class="token plain"> </span><span class="token number" style=color:#36acaa>500</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token comment" style=color:#999988;font-style:italic># Server error - retry with exponential backoff</span><br/></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=4-checksum-verification>4. <strong>Checksum Verification</strong><a href=#4-checksum-verification class=hash-link aria-label="Direct link to 4-checksum-verification" title="Direct link to 4-checksum-verification" translate=no>​</a></h4>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic># Verify MD5 checksums for data integrity</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">expected_md5 </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> file_info</span><span class="token punctuation" style=color:#393A34>[</span><span class="token string" style=color:#e3116c>"dataFile"</span><span class="token punctuation" style=color:#393A34>]</span><span class="token punctuation" style=color:#393A34>[</span><span class="token string" style=color:#e3116c>"md5"</span><span class="token punctuation" style=color:#393A34>]</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">actual_md5 </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> hashlib</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">md5</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">content</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">hexdigest</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>if</span><span class="token plain"> expected_md5 </span><span class="token operator" style=color:#393A34>!=</span><span class="token plain"> actual_md5</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    logger</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">error</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"Checksum mismatch - file corrupted"</span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=5-version-aware-caching>5. <strong>Version-Aware Caching</strong><a href=#5-version-aware-caching class=hash-link aria-label="Direct link to 5-version-aware-caching" title="Direct link to 5-version-aware-caching" translate=no>​</a></h4>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic># Cache with version tracking</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cache_file </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> cache_dir </span><span class="token operator" style=color:#393A34>/</span><span class="token plain"> </span><span class="token string-interpolation string" style=color:#e3116c>f"</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">dataset_id</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>}</span><span class="token string-interpolation string" style=color:#e3116c>_</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">version</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>}</span><span class="token string-interpolation string" style=color:#e3116c>.json"</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>if</span><span class="token plain"> cache_file</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">exists</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    cache_age </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> datetime</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">now</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"> </span><span class="token operator" style=color:#393A34>-</span><span class="token plain"> cache_file</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">stat</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">st_mtime</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token keyword" style=color:#00009f>if</span><span class="token plain"> cache_age </span><span class="token operator" style=color:#393A34>&lt;</span><span class="token plain"> timedelta</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">days</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>1</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">        </span><span class="token keyword" style=color:#00009f>return</span><span class="token plain"> cached_metadata</span><br/></div></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=6-pagination>6. <strong>Pagination</strong><a href=#6-pagination class=hash-link aria-label="Direct link to 6-pagination" title="Direct link to 6-pagination" translate=no>​</a></h4>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic># Handle large result sets</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">params </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token punctuation" style=color:#393A34>{</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token string" style=color:#e3116c>"persistentId"</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> doi</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token string" style=color:#e3116c>"per_page"</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> </span><span class="token number" style=color:#36acaa>100</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token string" style=color:#e3116c>"start"</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> offset</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token punctuation" style=color:#393A34>}</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-api-endpoints-used>πŸ”¬ API Endpoints Used<a href=#-api-endpoints-used class=hash-link aria-label="Direct link to πŸ”¬ API Endpoints Used" title="Direct link to πŸ”¬ API Endpoints Used" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-dataset-metadata>1. Dataset Metadata<a href=#1-dataset-metadata class=hash-link aria-label="Direct link to 1. Dataset Metadata" title="Direct link to 1. Dataset Metadata" translate=no>​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">GET /api/datasets/:persistentId/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Parameters:</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - persistentId: DOI (e.g., "doi:10.7910/DVN/NJTBEM")</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - version: ":latest", ":draft", or version number</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Returns: JSON with dataset metadata and file list</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-file-download>2. File Download<a href=#2-file-download class=hash-link aria-label="Direct link to 2. File Download" title="Direct link to 2. File Download" translate=no>​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">GET /api/access/datafile/{file_id}</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Headers:</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - X-Dataverse-key: {api_key} (optional)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Returns: File content bytes</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-search>3. Search<a href=#3-search class=hash-link aria-label="Direct link to 3. Search" title="Direct link to 3. Search" translate=no>​</a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">GET /api/search</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Parameters:</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - q: Query string</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - type: "dataset", "datafile", or "all"</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - per_page: Results per page</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - start: Starting offset</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Returns: JSON with search results</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-performance--limits>πŸ“Š Performance & Limits<a href=#-performance--limits class=hash-link aria-label="Direct link to πŸ“Š Performance & Limits" title="Direct link to πŸ“Š Performance & Limits" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=rate-limits>Rate Limits<a href=#rate-limits class=hash-link aria-label="Direct link to Rate Limits" title="Direct link to Rate Limits" translate=no>​</a></h3>
<table><thead><tr><th>Tier<th>Requests/Hour<th>Requests/Day<th>Notes<tbody><tr><td><strong>Without API Key</strong><td>~100<td>~1,000<td>IP-based limits<tr><td><strong>With API Key</strong><td>~10,000<td>~100,000<td>Per-user limits</table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=download-sizes>Download Sizes<a href=#download-sizes class=hash-link aria-label="Direct link to Download Sizes" title="Direct link to Download Sizes" translate=no>​</a></h3>
<p>LocalView dataset:</p>
<ul>
<li class=""><strong>Total size</strong>: ~50-200 MB</li>
<li class=""><strong>Files</strong>: 3-10 CSV/TAB files</li>
<li class=""><strong>Download time</strong>: 2-5 minutes (with API key)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=caching>Caching<a href=#caching class=hash-link aria-label="Direct link to Caching" title="Direct link to Caching" translate=no>​</a></h3>
<ul>
<li class=""><strong>Metadata</strong>: Cached for 24 hours</li>
<li class=""><strong>Files</strong>: Cached permanently (until manual deletion)</li>
<li class=""><strong>Cache location</strong>: <code>data/cache/dataverse/</code></li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-troubleshooting>πŸ› Troubleshooting<a href=#-troubleshooting class=hash-link aria-label="Direct link to πŸ› Troubleshooting" title="Direct link to πŸ› Troubleshooting" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=error-unauthorized-api-key-required>Error: "Unauthorized: API key required"<a href=#error-unauthorized-api-key-required class=hash-link aria-label='Direct link to Error: "Unauthorized: API key required"' title='Direct link to Error: "Unauthorized: API key required"' translate=no>​</a></h3>
<p><strong>Cause</strong>: Invalid or missing API key</p>
<p><strong>Solution</strong>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain"># Check if key is set</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">grep DATAVERSE_API_KEY .env</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Get new key at:</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">open https://dataverse.harvard.edu/loginpage.xhtml</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=error-rate-limit-reached>Error: "Rate limit reached"<a href=#error-rate-limit-reached class=hash-link aria-label='Direct link to Error: "Rate limit reached"' title='Direct link to Error: "Rate limit reached"' translate=no>​</a></h3>
<p><strong>Cause</strong>: Too many requests without API key</p>
<p><strong>Solution</strong>:</p>
<ol>
<li class="">Get free API key (recommended)</li>
<li class="">Or wait 60 seconds between downloads</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=error-checksum-mismatch>Error: "Checksum mismatch"<a href=#error-checksum-mismatch class=hash-link aria-label='Direct link to Error: "Checksum mismatch"' title='Direct link to Error: "Checksum mismatch"' translate=no>​</a></h3>
<p><strong>Cause</strong>: File corrupted during download</p>
<p><strong>Solution</strong>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain"># Delete cached file and retry</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">rm -rf data/cache/dataverse/doi_10.7910_DVN_NJTBEM/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/localview_ingestion.py</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=error-request-timeout>Error: "Request timeout"<a href=#error-request-timeout class=hash-link aria-label='Direct link to Error: "Request timeout"' title='Direct link to Error: "Request timeout"' translate=no>​</a></h3>
<p><strong>Cause</strong>: Slow network or large file</p>
<p><strong>Solution</strong>:</p>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic># Increase timeout in client initialization</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">client </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> DataverseClient</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">timeout</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>300</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain">  </span><span class="token comment" style=color:#999988;font-style:italic># 5 minutes</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-resources>πŸ”— Resources<a href=#-resources class=hash-link aria-label="Direct link to πŸ”— Resources" title="Direct link to πŸ”— Resources" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=official-documentation>Official Documentation<a href=#official-documentation class=hash-link aria-label="Direct link to Official Documentation" title="Direct link to Official Documentation" translate=no>​</a></h3>
<ul>
<li class=""><strong>Dataverse API Guide</strong>: <a href=https://guides.dataverse.org/en/latest/api/index.html target=_blank rel="noopener noreferrer" class="">https://guides.dataverse.org/en/latest/api/index.html</a></li>
<li class=""><strong>IQSS GitHub</strong>: <a href=https://github.com/IQSS/dataverse target=_blank rel="noopener noreferrer" class="">https://github.com/IQSS/dataverse</a></li>
<li class=""><strong>Harvard Dataverse</strong>: <a href=https://dataverse.harvard.edu/ target=_blank rel="noopener noreferrer" class="">https://dataverse.harvard.edu/</a></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=dataset-information>Dataset Information<a href=#dataset-information class=hash-link aria-label="Direct link to Dataset Information" title="Direct link to Dataset Information" translate=no>​</a></h3>
<ul>
<li class=""><strong>LocalView Dataset</strong>: <a href="https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/NJTBEM" target=_blank rel="noopener noreferrer" class="">https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/NJTBEM</a></li>
<li class=""><strong>DOI</strong>: 10.7910/DVN/NJTBEM</li>
<li class=""><strong>Publisher</strong>: Harvard Mellon Urbanism Initiative</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=getting-help>Getting Help<a href=#getting-help class=hash-link aria-label="Direct link to Getting Help" title="Direct link to Getting Help" translate=no>​</a></h3>
<ul>
<li class=""><strong>Dataverse Community</strong>: <a href=https://groups.google.com/group/dataverse-community target=_blank rel="noopener noreferrer" class="">https://groups.google.com/group/dataverse-community</a></li>
<li class=""><strong>API Support</strong>: <a href=mailto:support@dataverse.org target=_blank rel="noopener noreferrer" class="">support@dataverse.org</a></li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-what-makes-this-implementation-production-ready>✨ What Makes This Implementation Production-Ready<a href=#-what-makes-this-implementation-production-ready class=hash-link aria-label="Direct link to ✨ What Makes This Implementation Production-Ready" title="Direct link to ✨ What Makes This Implementation Production-Ready" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-follows-official-standards>1. <strong>Follows Official Standards</strong><a href=#1-follows-official-standards class=hash-link aria-label="Direct link to 1-follows-official-standards" title="Direct link to 1-follows-official-standards" translate=no>​</a></h3>
<ul>
<li class="">βœ… Uses documented API endpoints</li>
<li class="">βœ… Proper authentication headers</li>
<li class="">βœ… Respects rate limits</li>
<li class="">βœ… Handles all error codes</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-robust-error-handling>2. <strong>Robust Error Handling</strong><a href=#2-robust-error-handling class=hash-link aria-label="Direct link to 2-robust-error-handling" title="Direct link to 2-robust-error-handling" translate=no>​</a></h3>
<ul>
<li class="">βœ… Retry logic with exponential backoff</li>
<li class="">βœ… Timeout handling</li>
<li class="">βœ… Network error recovery</li>
<li class="">βœ… Checksum verification</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-performance-optimized>3. <strong>Performance Optimized</strong><a href=#3-performance-optimized class=hash-link aria-label="Direct link to 3-performance-optimized" title="Direct link to 3-performance-optimized" translate=no>​</a></h3>
<ul>
<li class="">βœ… Client-side rate limiting</li>
<li class="">βœ… Version-aware caching</li>
<li class="">βœ… Efficient file downloads</li>
<li class="">βœ… Minimal memory usage</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=4-developer-friendly>4. <strong>Developer Friendly</strong><a href=#4-developer-friendly class=hash-link aria-label="Direct link to 4-developer-friendly" title="Direct link to 4-developer-friendly" translate=no>​</a></h3>
<ul>
<li class="">βœ… Clear error messages</li>
<li class="">βœ… Comprehensive logging</li>
<li class="">βœ… Simple async API</li>
<li class="">βœ… Well-documented</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=5-tested-against-real-data>5. <strong>Tested Against Real Data</strong><a href=#5-tested-against-real-data class=hash-link aria-label="Direct link to 5-tested-against-real-data" title="Direct link to 5-tested-against-real-data" translate=no>​</a></h3>
<ul>
<li class="">βœ… Validated with LocalView dataset</li>
<li class="">βœ… Handles large file lists</li>
<li class="">βœ… Works with/without API key</li>
<li class="">βœ… Checksum verification tested</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-next-steps>🎯 Next Steps<a href=#-next-steps class=hash-link aria-label="Direct link to 🎯 Next Steps" title="Direct link to 🎯 Next Steps" translate=no>​</a></h2>
<ol>
<li class="">
<p><strong>Get API Key</strong> (5 minutes)</p>
<ul>
<li class="">Visit <a href=https://dataverse.harvard.edu/loginpage.xhtml target=_blank rel="noopener noreferrer" class="">https://dataverse.harvard.edu/loginpage.xhtml</a></li>
<li class="">Create account or login</li>
<li class="">Generate API token in Account Settings</li>
</ul>
</li>
<li class="">
<p><strong>Configure Environment</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">echo "DATAVERSE_API_KEY=your_key_here" >> .env</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p><strong>Download LocalView</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">python discovery/localview_ingestion.py</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p><strong>Verify Results</strong></p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">ls -lh data/cache/localview/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Should show multiple CSV/TAB files</span><br/></div></code></pre></div></div>
</li>
</ol>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-summary>πŸ“ Summary<a href=#-summary class=hash-link aria-label="Direct link to πŸ“ Summary" title="Direct link to πŸ“ Summary" translate=no>​</a></h2>
<p>We now have a <strong>production-ready Dataverse client</strong> that:</p>
<ul>
<li class="">βœ… Follows all IQSS/dataverse best practices</li>
<li class="">βœ… Handles 1,000+ files reliably</li>
<li class="">βœ… Works with/without API key</li>
<li class="">βœ… Includes comprehensive error handling</li>
<li class="">βœ… Verifies data integrity with checksums</li>
<li class="">βœ… Implements intelligent caching</li>
<li class="">βœ… Respects rate limits</li>
</ul>
<p>This is the <strong>same quality</strong> you'd expect from official Dataverse integrations! πŸŽ‰</div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href=https://github.com/getcommunityone/open-navigator-for-engagement/tree/main/website/docs/integrations/dataverse.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_Z9Sw aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/docs/integrations/dataverse-summary><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>πŸŽ‰ Harvard Dataverse Integration - Complete!</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/docs/integrations/eboard-automated><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Automated eBoard Scraping Solutions</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#overview class="table-of-contents__link toc-highlight">Overview</a><li><a href=#-what-weve-implemented class="table-of-contents__link toc-highlight">βœ… What We've Implemented</a><ul><li><a href=#1-production-ready-dataverse-client class="table-of-contents__link toc-highlight">1. <strong>Production-Ready Dataverse Client</strong></a></ul><li><a href=#-quick-start class="table-of-contents__link toc-highlight">πŸš€ Quick Start</a><ul><li><a href=#option-1-with-api-key-recommended class="table-of-contents__link toc-highlight">Option 1: With API Key (Recommended)</a><li><a href=#option-2-manual-download-no-api-key-needed class="table-of-contents__link toc-highlight">Option 2: Manual Download (No API Key Needed)</a></ul><li><a href=#-api-usage-examples class="table-of-contents__link toc-highlight">πŸ“– API Usage Examples</a><ul><li><a href=#basic-usage class="table-of-contents__link toc-highlight">Basic Usage</a><li><a href=#advanced-usage class="table-of-contents__link toc-highlight">Advanced Usage</a><li><a href=#convenience-function class="table-of-contents__link toc-highlight">Convenience Function</a></ul><li><a href=#-configuration class="table-of-contents__link toc-highlight">πŸ”§ Configuration</a><ul><li><a href=#environment-variables class="table-of-contents__link toc-highlight">Environment Variables</a><li><a href=#config-settings class="table-of-contents__link toc-highlight">Config Settings</a></ul><li><a href=#-best-practices-implemented class="table-of-contents__link toc-highlight">🎯 Best Practices Implemented</a><ul><li><a href=#from-iqssdataverse-documentation class="table-of-contents__link toc-highlight">From IQSS/dataverse Documentation</a><ul><li><a href=#1-authentication class="table-of-contents__link toc-highlight">1. <strong>Authentication</strong></a><li><a href=#2-rate-limiting class="table-of-contents__link toc-highlight">2. <strong>Rate Limiting</strong></a><li><a href=#3-error-handling class="table-of-contents__link toc-highlight">3. <strong>Error Handling</strong></a><li><a href=#4-checksum-verification class="table-of-contents__link toc-highlight">4. <strong>Checksum Verification</strong></a><li><a href=#5-version-aware-caching class="table-of-contents__link toc-highlight">5. <strong>Version-Aware Caching</strong></a><li><a href=#6-pagination class="table-of-contents__link toc-highlight">6. <strong>Pagination</strong></a></ul></ul><li><a href=#-api-endpoints-used class="table-of-contents__link toc-highlight">πŸ”¬ API Endpoints Used</a><ul><li><a href=#1-dataset-metadata class="table-of-contents__link toc-highlight">1. Dataset Metadata</a><li><a href=#2-file-download class="table-of-contents__link toc-highlight">2. File Download</a><li><a href=#3-search class="table-of-contents__link toc-highlight">3. Search</a></ul><li><a href=#-performance--limits class="table-of-contents__link toc-highlight">πŸ“Š Performance & Limits</a><ul><li><a href=#rate-limits class="table-of-contents__link toc-highlight">Rate Limits</a><li><a href=#download-sizes class="table-of-contents__link toc-highlight">Download Sizes</a><li><a href=#caching class="table-of-contents__link toc-highlight">Caching</a></ul><li><a href=#-troubleshooting class="table-of-contents__link toc-highlight">πŸ› Troubleshooting</a><ul><li><a href=#error-unauthorized-api-key-required class="table-of-contents__link toc-highlight">Error: "Unauthorized: API key required"</a><li><a href=#error-rate-limit-reached class="table-of-contents__link toc-highlight">Error: "Rate limit reached"</a><li><a href=#error-checksum-mismatch class="table-of-contents__link toc-highlight">Error: "Checksum mismatch"</a><li><a href=#error-request-timeout class="table-of-contents__link toc-highlight">Error: "Request timeout"</a></ul><li><a href=#-resources class="table-of-contents__link toc-highlight">πŸ”— Resources</a><ul><li><a href=#official-documentation class="table-of-contents__link toc-highlight">Official Documentation</a><li><a href=#dataset-information class="table-of-contents__link toc-highlight">Dataset Information</a><li><a href=#getting-help class="table-of-contents__link toc-highlight">Getting Help</a></ul><li><a href=#-what-makes-this-implementation-production-ready class="table-of-contents__link toc-highlight">✨ What Makes This Implementation Production-Ready</a><ul><li><a href=#1-follows-official-standards class="table-of-contents__link toc-highlight">1. <strong>Follows Official Standards</strong></a><li><a href=#2-robust-error-handling class="table-of-contents__link toc-highlight">2. <strong>Robust Error Handling</strong></a><li><a href=#3-performance-optimized class="table-of-contents__link toc-highlight">3. <strong>Performance Optimized</strong></a><li><a href=#4-developer-friendly class="table-of-contents__link toc-highlight">4. <strong>Developer Friendly</strong></a><li><a href=#5-tested-against-real-data class="table-of-contents__link toc-highlight">5. <strong>Tested Against Real Data</strong></a></ul><li><a href=#-next-steps class="table-of-contents__link toc-highlight">🎯 Next Steps</a><li><a href=#-summary class="table-of-contents__link toc-highlight">πŸ“ Summary</a></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Documentation</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/docs/intro>Getting Started</a><li class=footer__item><a class=footer__link-item href=/docs/data-sources/citations>Citations & Data Sources</a><li class=footer__item><a class=footer__link-item href=/docs/data-sources/overview>Data Sources</a><li class=footer__item><a class=footer__link-item href=/docs/for-developers>For Developers</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Resources</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.communityone.com target=_blank rel="noopener noreferrer" class=footer__link-item>Launch Open Navigator<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://github.com/getcommunityone/open-navigator-for-engagement target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.groundvue.org/ target=_blank rel="noopener noreferrer" class=footer__link-item>GroundVue (Partner)<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.instagram.com/getcommunityone/ target=_blank rel="noopener noreferrer" class=footer__link-item>Instagram<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.facebook.com/getcommunityone target=_blank rel="noopener noreferrer" class=footer__link-item>Facebook<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://x.com/getcommunityone/ target=_blank rel="noopener noreferrer" class=footer__link-item>X (Twitter)<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.linkedin.com/company/getcommunityone target=_blank rel="noopener noreferrer" class=footer__link-item>LinkedIn<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.youtube.com/@getcommunityone target=_blank rel="noopener noreferrer" class=footer__link-item>YouTube<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://discord.gg/uH6Dytek target=_blank rel="noopener noreferrer" class=footer__link-item>Discord<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Legal</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/docs/legal/privacy-policy>Privacy Policy</a><li class=footer__item><a class=footer__link-item href=/docs/legal/terms-of-service>Terms of Service</a><li class=footer__item><a class=footer__link-item href=/docs/legal/data-provider-terms>Data Provider Terms</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>More</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/blog>Blog</a><li class=footer__item><a href=https://github.com/getcommunityone/open-navigator-for-engagement/blob/main/LICENSE target=_blank rel="noopener noreferrer" class=footer__link-item>License (MIT)<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright Β© 2026 Community One. Built with Docusaurus.</div></div></div></footer></div></body>