\n\n\n\n\n
\n\n\n\n\n\n\n\n","html_footer_meta":"\n\n
\n","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"","promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"","text":"","_id":"5fa9a583c88a1e003de1fb64"}],"ai_dropdown":"disabled","ai_options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","view_as_markdown":"enabled"},"showPageIcons":true,"layout":{"full_width":false,"style":"classic"}},"child":{"_id":"6606e9c5e8ce1f005276b057","appearance":{"changelog":{"layoutExpanded":false,"showAuthor":false,"showExactDate":true},"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"eeeeee","main_alt":"","header_text":"","body_highlight":"#3333FF","custom_login_link_color":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"style":"solid","img":[],"img_size":"auto","img_pos":"tl","linkStyle":"buttons"},"body":{"style":"none"},"global_landing_page":{"html":"","redirect":""},"allowApiExplorerJsonEditor":false,"referenceSimpleMode":true,"referenceLayout":"column","link_logo_to_url":true,"theme":"line","colorScheme":"light","overlay":"triangles","landing":true,"sticky":false,"hide_logo":true,"childrenAsPills":false,"subheaderStyle":"dropdown","splitReferenceDocs":true,"showMetricsInReference":false,"logo":["https://files.readme.io/af60d4b-small-395ef92-small-docs.png","af60d4b-small-395ef92-small-docs.png",324,40,"#000000","https://files.readme.io/99736b7-395ef92-small-docs.png","660acd14efe91e001fbe334d"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"favicon":["https://files.readme.io/8053e33-small-favicon.png","favicon.png",32,32,"#1c1c1c","https://files.readme.io/6735b58-favicon.png"],"stylesheet":"","stylesheet_hub2":"#ssr-main > div > header > div.Header-bottom2eLKOFXMEmh5.rm-Header-bottom > div > nav > div.Dropdown{\n display:none; \n}\n\n.icon-arrow-up-right:before {\n display:none;\n\n}\n\n.Sidebar-item23D-2Kd61_k3:last-child a[href=\"https://docs.foursquare.com/developer/reference/places-api-overview\"] .Sidebar-link-text_label1gCT_uPnx7Gu {\n color: red; /* Example */\n font-weight: bold;\n font-size:12px;\n}\n\n\n.Param1QyvwHroaCgH .Collapseda2tBtFifUAjo .Param1QyvwHroaCgH {\n display: block;\n}\n\n.Param1QyvwHroaCgH .Collapseda2tBtFifUAjo .Param-form1SoAutupIaz3 {\n margin-left: 10px;\n max-width: 100%;\n}\n\n\n/* Custom Console Doc Styles */\n@media (max-width: 768px){\nbody:not(.showSidebarFlyout) #hub-sidebar.Sidebar_flyout2qTF85usvHxB, body:not(.showSidebarFlyout) #reference-sidebar.Sidebar_flyout2qTF85usvHxB {\n display: none !important;\n}\n}\n\n.rm-Sidebar_guides .hub-sidebar-content > section:last-of-type > .Sidebar-headingTRQyOa2pk0gh {\n display: none !important;\n}\n\nli.Sidebar-item23D-2Kd61_k3.expanded-section-item a[href=\"/developer/docs/developer-console-overview\"] {\n /* Applying styles */\n border-radius: 4px;\n background: #F2EEFB !important;\n box-shadow: 2px 0 0 0 #686df3 inset;\n color: #4f5a66 !important;\n margin-left:-15px !important;\n font-weight:500;\n}\n\n\n.rm-Sidebar_guides {\n opacity: 0;\n animation: fadeIn 0s 1s forwards;\n}\n\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"document.addEventListener('DOMContentLoaded', () => {\n // Select all links in the header\n const headerLinks = document.querySelectorAll('.Header-leftADQdGVqx1wqU a');\n\n headerLinks.forEach(link => {\n const href = link.getAttribute('href');\n\n // Check if the href contains the versioned path (e.g., \"/developer/v20241206/\")\n if (href && href.includes('/developer/v')) {\n // Rewrite the URL by removing the versioned part\n const updatedHref = href.replace(/\\/developer\\/v\\d+\\//, '/developer/');\n link.setAttribute('href', updatedHref);\n }\n });\n});\n\n\n\n$(window).on(\"pageLoad\", function (e, state) {\n setTimeout(function () {\n // Check if there's an active link within the Developer Console section\n const isActiveDeveloperConsolePage =\n document.querySelector(\n \".Sidebar-listWrapper6Q9_yUrG906C .Sidebar-link2Dsha-r-GKh2.active\"\n ) !== null;\n\n if (isActiveDeveloperConsolePage) {\n const developerConsoleSection = Array.from(\n document.querySelectorAll(\n \".rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh\"\n )\n ).find(\n (heading) =>\n heading.textContent.includes(\"Developer Console\") &&\n heading.classList.contains(\"section-expanded\")\n )?.parentNode;\n\n if (developerConsoleSection) {\n document\n .querySelectorAll(\n \".rm-Sidebar_guides .Sidebar-listWrapper6Q9_yUrG906C\"\n )\n .forEach((section) => {\n section.style.display =\n section === developerConsoleSection ? \"\" : \"none\";\n section\n .querySelectorAll(\n \".Sidebar-item23D-2Kd61_k3, .subpages .Sidebar-item23D-2Kd61_k3\"\n )\n .forEach((item) => {\n item.style.display = \"\";\n });\n });\n\n const lastSectionHeading = document.querySelector(\n \".rm-Sidebar_guides .hub-sidebar-content > section:last-of-type > .Sidebar-headingTRQyOa2pk0gh\"\n );\n if (\n lastSectionHeading &&\n lastSectionHeading.textContent.includes(\"Developer Console\")\n ) {\n lastSectionHeading.style.display = \"block\";\n }\n\n // Call the function to duplicate navigation after a short delay to ensure the page is fully loaded\n setTimeout(function () {\n duplicateNavigation();\n }, 1); // Adjust the delay as needed\n }\n } else {\n\n // Hide the Developer Console section\n const developerConsoleSection = document.querySelector('.rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh');\n if (developerConsoleSection) {\n developerConsoleSection.parentNode.style.display = \"none\";\n }\n\n // Restore visibility of all other sidebar sections\n document\n .querySelectorAll(\".rm-Sidebar_guides .Sidebar-listWrapper6Q9_yUrG906C\")\n .forEach((section) => {\n section.style.display = \"\";\n });\n\n // Ensure that all section headings are visible\n document\n .querySelectorAll(\".rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh\")\n .forEach((heading) => {\n heading.style.display = \"block\"; // Or whatever the default should be\n });\n\n // Remove the 'active' class from the Console Docs link in the top navigation, if it was set\n const consoleDocsLink = document.querySelector(\n '.Header-bottom-link[href*=\"developer/docs/developer-console-overview\"]'\n );\n if (consoleDocsLink) {\n consoleDocsLink.classList.remove(\"active\");\n }\n\n // Add the 'active' class to the Console Docs link\n const newConsoleDocsLink = document.querySelector('.Header-bottom-link[href*=\"developer/docs/developer-console-overview\"]');\n if (newConsoleDocsLink) {\n newConsoleDocsLink.classList.add(\"active\");\n }\n }\n }, 10); // Adjust delay as needed\n});\n\n\n// Function to duplicate and insert the original navigation\nfunction duplicateNavigation() {\n // Get the original element to be duplicated\n var originalElement = document.querySelector(\n \".rm-Header-bottom\"\n );\n\n // Check if the original element exists\n if (originalElement) {\n // Clone the original element\n var clonedElement = originalElement.cloneNode(true);\n\n // Insert the cloned element directly after the original element\n originalElement.parentNode.insertBefore(\n clonedElement,\n originalElement.nextSibling\n );\n\n // Hide the original element\n originalElement.style.display = \"none\";\n\n // Remove 'active' class from navigation links below\n const navigationLinks = document.querySelectorAll('.Header-leftADQdGVqx1wqU a');\n navigationLinks.forEach(link => {\n link.classList.remove('active');\n });\n\n // Add the 'active' class to the first Console Docs link\n const consoleDocsLink = document.querySelectorAll('.rm-Header-link[href*=\"developer/docs/developer-console-overview\"]')[1];\n if (consoleDocsLink) {\n consoleDocsLink.classList.add(\"active\");\n console.log(\"Added Active to Console Docs Link\");\n }\n }\n}\n\n\n\n$(window).on('pageLoad', function(e, state) {\n if (state && state.params && state.params.slug === \"address-form-autofill\") {\n function localAddressAutoFillJs() {\n const fsqAPIToken = \"fsq3gM6Yqlox6l+EPn1ITXAlJxk5YaBFlQS5bKofN7ov5W8=\";\n let sessionToken = generateRandomSessionToken();\n const addressInput = document.getElementById(\"autofill-search\");\n const dropDownField = document.getElementById(\"autofill-dropdown\");\n const ulField = document.getElementById(\"autofill-suggestions\");\n const errorField = document.getElementById(\"autofill-error\");\n const notFoundField = document.getElementById(\"autofill-not-found\");\n const cityInput = document.getElementById(\"autofill-city\");\n const regionInput = document.getElementById(\"autofill-region\");\n const countryInput = document.getElementById(\"autofill-country\");\n const postcodeInput = document.getElementById(\"autofill-postcode\");\n const address2Input = document.getElementById(\"autofill-address2\");\n const form = document.getElementById(\"autofill-form\");\n const searchContainer = document.getElementById(\n \"autofill-search-container\"\n );\n\n form && form.addEventListener(\"submit\", preventFormSubmit, true);\n const onChangeAutoComplete = debounce(changeAutoComplete);\n addressInput &&\n addressInput.addEventListener(\"input\", onChangeAutoComplete);\n searchContainer &&\n searchContainer.addEventListener(\"focusin\", focusEventAutoComplete);\n searchContainer &&\n searchContainer.addEventListener(\"focusout\", focusEventAutoComplete);\n\n ulField && ulField.addEventListener(\"click\", selectItem);\n\n function focusEventAutoComplete(event) {\n if (event.type === \"focusin\" && event.target.value) {\n dropDownField.style.display = \"block\";\n } else if (\n event.type === \"focusout\" &&\n !event.currentTarget.contains(event.relatedTarget)\n ) {\n dropDownField.style.display = \"none\";\n }\n }\n\n function preventFormSubmit(event) {\n event.preventDefault();\n }\n\n function logError(err) {\n console.warn(`ERROR(${err.code}): ${err.message}`);\n }\n\n /* Generate a random string with 32 characters.\n Session Token is a user-generated token to identify a session for billing purposes.\n Learn more about session tokens.\n https://docs.foursquare.com/reference/session-tokens\n */\n function generateRandomSessionToken(length = 32) {\n let result = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n return result;\n }\n\n let isFetching = false;\n async function changeAutoComplete({ target }) {\n const { value: inputSearch = \"\" } = target;\n ulField.innerHTML = \"\";\n notFoundField.style.display = \"none\";\n errorField.style.display = \"none\";\n if (inputSearch.length && !isFetching) {\n try {\n isFetching = true;\n const results = await autoComplete(inputSearch);\n if (results && results.length) {\n results.forEach((value) => {\n addItem(value);\n });\n } else {\n notFoundField.innerHTML = `Foursquare can't\n find ${inputSearch}. Make sure your search is spelled correctly.`;\n notFoundField.style.display = \"block\";\n }\n } catch (err) {\n errorField.style.display = \"block\";\n logError(err);\n } finally {\n isFetching = false;\n dropDownField.style.display = \"block\";\n }\n } else {\n dropDownField.style.display = \"none\";\n }\n }\n\n async function autoComplete(query) {\n try {\n const searchParams = new URLSearchParams({\n query,\n types: \"address\",\n session_token: sessionToken,\n }).toString();\n const searchResults = await fetch(\n `https://api.foursquare.com/v3/autocomplete?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await searchResults.json();\n return data.results;\n } catch (error) {\n throw error;\n }\n }\n\n function addItem(value) {\n const { link } = value;\n if (!link) return;\n ulField.innerHTML += `
\n ${highlightedNameElement(value.text)}
\n ${value.text.secondary}
\n `;\n }\n\n async function selectItem({ target }) {\n if (target.tagName === \"BUTTON\") {\n const link = target.dataset.object;\n const addressDetail = await fetchAddressDetails(link);\n const { location = {} } = addressDetail;\n const {\n address = \"\",\n country = \"\",\n postcode = \"\",\n locality = \"\",\n region = \"\",\n } = location;\n addressInput.value = address;\n address2Input.value = \"\";\n countryInput.value = country;\n postcodeInput.value = postcode;\n cityInput.value = locality;\n regionInput.value = region;\n // generate new session token after a complete search\n sessionToken = generateRandomSessionToken();\n\n address2Input && address2Input.focus();\n dropDownField.style.display = \"none\";\n }\n }\n\n async function fetchAddressDetails(link) {\n try {\n const results = await fetch(`https://api.foursquare.com${link}`, {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n });\n const data = await results.json();\n return data;\n } catch (err) {\n logError(err);\n }\n }\n\n function highlightedNameElement(textObject) {\n if (!textObject) return \"\";\n const { primary, highlight } = textObject;\n if (highlight && highlight.length) {\n let beginning = 0;\n let hightligtedWords = \"\";\n for (let i = 0; i < highlight.length; i++) {\n const { start, length } = highlight[i];\n hightligtedWords += primary.substr(beginning, start - beginning);\n hightligtedWords += \"
\" + primary.substr(start, length) + \" \";\n beginning = start + length;\n }\n hightligtedWords += primary.substr(beginning);\n return hightligtedWords;\n }\n return primary;\n }\n\n function debounce(func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n }\n }\n\n localAddressAutoFillJs();\n }\n if (state && state.params && state.params.slug === \"local-search-map\") {\n function loadLocalMapSearchJs() {\n mapboxgl.accessToken =\n \"pk.eyJ1IjoiZm91cnNxdWFyZSIsImEiOiJjbDNqNXdrN20wN3JtM2JvMWFqZGxoaGljIn0.uSxJ2t7E96TrBFsn3cXT_g\";\n const fsqAPIToken = \"fsq3bgqdcpLAJFkodk8gisc2F+NenA7gK/zI97A9nKQAXIw=\";\n let userLat = 40.7128;\n let userLng = -74.006;\n let sessionToken = generateRandomSessionToken();\n const inputField = document.getElementById(\"explorer-search\");\n const dropDownField = document.getElementById(\"explorer-dropdown\");\n const ulField = document.getElementById(\"explorer-suggestions\");\n const errorField = document.getElementById(\"explorer-error\");\n const notFoundField = document.getElementById(\"explorer-not-found\");\n\n const onChangeAutoComplete = debounce(changeAutoComplete);\n inputField.addEventListener(\"input\", onChangeAutoComplete);\n ulField.addEventListener(\"click\", selectItem);\n\n function success(pos) {\n const { latitude, longitude } = pos.coords;\n userLat = latitude;\n userLng = longitude;\n flyToLocation(userLat, userLng);\n }\n\n function logError(err) {\n console.warn(`ERROR(${err.code}): ${err.message}`);\n }\n\n navigator.geolocation.getCurrentPosition(success, logError, {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n });\n\n const map = new mapboxgl.Map({\n container: \"map\",\n style: \"mapbox://styles/mapbox/light-v10\",\n center: [userLng, userLat],\n zoom: 12,\n });\n\n map.addControl(new mapboxgl.GeolocateControl());\n map.addControl(new mapboxgl.NavigationControl());\n\n let currentMarker;\n\n /* Generate a random string with 32 characters.\n Session Token is a user-generated token to identify a session for billing purposes.\n Learn more about session tokens.\n https://docs.foursquare.com/reference/session-tokens\n */\n function generateRandomSessionToken(length = 32) {\n let result = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n return result;\n }\n\n let isFetching = false;\n async function changeAutoComplete({ target }) {\n const { value: inputSearch = \"\" } = target;\n ulField.innerHTML = \"\";\n notFoundField.style.display = \"none\";\n errorField.style.display = \"none\";\n if (inputSearch.length && !isFetching) {\n try {\n isFetching = true;\n const results = await autoComplete(inputSearch);\n if (results && results.length) {\n results.forEach((value) => {\n addItem(value);\n });\n } else {\n notFoundField.innerHTML = `Foursquare can't\n find ${inputSearch}. Make sure your search is spelled correctly.\n
Don't see the place you're looking for? .`;\n notFoundField.style.display = \"block\";\n }\n } catch (err) {\n errorField.style.display = \"block\";\n logError(err);\n } finally {\n isFetching = false;\n dropDownField.style.display = \"block\";\n }\n } else {\n dropDownField.style.display = \"none\";\n }\n }\n\n async function autoComplete(query) {\n const { lng, lat } = map.getCenter();\n userLat = lat;\n userLng = lng;\n try {\n const searchParams = new URLSearchParams({\n query,\n types: \"place\",\n ll: `${userLat},${userLng}`,\n radius: 50000,\n session_token: sessionToken,\n }).toString();\n const searchResults = await fetch(\n `https://api.foursquare.com/v3/autocomplete?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await searchResults.json();\n return data.results;\n } catch (error) {\n throw error;\n }\n }\n\n function addItem(value) {\n const placeDetail = value[value.type];\n if (!placeDetail || !placeDetail.geocodes || !placeDetail.geocodes.main)\n return;\n const { latitude, longitude } = placeDetail.geocodes.main;\n const fsqId = placeDetail.fsq_id;\n const dataObject = JSON.stringify({ latitude, longitude, fsqId });\n ulField.innerHTML += `
\n ${highlightedNameElement(value.text)}
\n ${value.text.secondary}
\n `;\n }\n\n async function selectItem({ target }) {\n if (target.tagName === \"LI\") {\n const valueObject = JSON.parse(target.dataset.object);\n const { latitude, longitude, fsqId } = valueObject;\n const placeDetail = await fetchPlacesDetails(fsqId);\n addMarkerAndPopup(latitude, longitude, placeDetail);\n flyToLocation(latitude, longitude);\n\n // generate new session token after a complete search\n sessionToken = generateRandomSessionToken();\n const name = target.dataset.name;\n inputField.value = target.children[0].textContent;\n dropDownField.style.display = \"none\";\n }\n }\n\n async function fetchPlacesDetails(fsqId) {\n try {\n const searchParams = new URLSearchParams({\n fields: \"fsq_id,name,geocodes,location,photos,rating\",\n session_token: sessionToken,\n }).toString();\n const results = await fetch(\n `https://api.foursquare.com/v3/places/${fsqId}?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await results.json();\n return data;\n } catch (err) {\n logError(err);\n }\n }\n\n function createPopup(placeDetail) {\n const { location = {}, name = \"\", photos = [], rating } = placeDetail;\n let photoUrl = \"https://files.readme.io/c163d6e-placeholder.svg\";\n if (photos.length && photos[0]) {\n photoUrl = `${photos[0].prefix}56${photos[0].suffix}`;\n }\n const popupHTML = ``;\n\n const markerHeight = 35;\n const markerRadius = 14;\n const linearOffset = 8;\n const verticalOffset = 8;\n const popupOffsets = {\n top: [0, verticalOffset],\n \"top-left\": [0, verticalOffset],\n \"top-right\": [0, verticalOffset],\n bottom: [0, -(markerHeight + verticalOffset)],\n \"bottom-left\": [\n 0,\n (markerHeight + verticalOffset - markerRadius + linearOffset) * -1,\n ],\n \"bottom-right\": [\n 0,\n (markerHeight + verticalOffset - markerRadius + linearOffset) * -1,\n ],\n left: [\n markerRadius + linearOffset,\n (markerHeight - markerRadius) * -1,\n ],\n right: [\n -(markerRadius + linearOffset),\n (markerHeight - markerRadius) * -1,\n ],\n };\n return new mapboxgl.Popup({\n offset: popupOffsets,\n closeButton: false,\n }).setHTML(popupHTML);\n }\n\n function addMarkerAndPopup(lat, lng, placeDetail) {\n if (currentMarker) currentMarker.remove();\n currentMarker = new mapboxgl.Marker({\n color: \"#3333FF\",\n })\n .setLngLat([lng, lat])\n .setPopup(createPopup(placeDetail))\n .addTo(map);\n\n currentMarker.togglePopup();\n }\n\n function flyToLocation(lat, lng) {\n map.flyTo({\n center: [lng, lat],\n });\n }\n\n function highlightedNameElement(textObject) {\n if (!textObject) return \"\";\n const { primary, highlight } = textObject;\n if (highlight && highlight.length) {\n let beginning = 0;\n let hightligtedWords = \"\";\n for (let i = 0; i < highlight.length; i++) {\n const { start, length } = highlight[i];\n hightligtedWords += primary.substr(beginning, start - beginning);\n hightligtedWords += \"
\" + primary.substr(start, length) + \" \";\n beginning = start + length;\n }\n hightligtedWords += primary.substr(beginning);\n return hightligtedWords;\n }\n return primary;\n }\n\n function debounce(func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n }\n }\n\n loadLocalMapSearchJs();\n }\n});\n\n$(window).on(\"pageLoad\", function (e, state) {\n const openSearchPopup = () => {\n const headerSearch = document.getElementById(\"hub-search-results\");\n if (headerSearch) {\n headerSearch.classList.add(\"hub-search-results-active\");\n document\n .getElementsByClassName(\"Input Input_md SearchBox-InputUQZAW9QXMe-c\")[0]\n ?.focus();\n }\n };\n\n const triggerSearchButton = document.getElementsByClassName(\n \"landing-page-trigger-search-button\"\n )[0];\n if (triggerSearchButton) {\n triggerSearchButton.addEventListener(\"click\", openSearchPopup);\n }\n});\n\n// START: Add Segment Tracking to Try It button\n// TODO: Verify this runs on route changes, so button gets instrumented on every page\n$(window).on(\"load\", function (e, state) {\n var tryItBtn = document.querySelector(\".rm-TryIt\");\n\n // in case the button has not yet renedered\n if (tryItBtn === undefined) return;\n\n tryItBtn.addEventListener(\"click\", () => {\n console.log(\"Try It button Clicked (project)\");\n analytics.track(\"Try It button Clicked\");\n });\n});\n// END: Add Segment Tracking to Try It button\n\n\n\n// CUSTOM LAUNCH TOP NAV CODE - README \ndocument.addEventListener('DOMContentLoaded', () => {\n setTimeout(() => {\n document.querySelectorAll('.Header-leftADQdGVqx1wqU a[href]').forEach(a => {\n a.addEventListener('click', e => {\n e.preventDefault();\n window.location.href = a.href;\n });\n });\n }, 100);\n});\n\n// CUSTOM LAUNCH SIDEBAR CODE (FINAL project: inject Places first, then Users under Welcome)\n// Runs after a short delay to avoid flicker or unwanted auto-expansion.\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Delay entire injection by 1 second\n setTimeout(() => {\n (async function() {\n // Normalize path (strip trailing slash)\n const path = window.location.pathname.replace(/\\/$/, '');\n\n // Only act on the FINAL project paths\n if (!path.startsWith('/developer/reference/')) {\n return;\n }\n\n // Pages to pull from: Places API overview and Users API overview\n // **Places first**, then Users\n const toInject = [\n {\n otherPageUrl: '/fsq-developers-places/reference/places-api-overview',\n targetSectionText: 'Places API'\n },\n {\n otherPageUrl: '/fsq-developers-users/reference/users-api-overview',\n targetSectionText: 'Users API'\n }\n ];\n\n // If versioned (e.g. /v2023-05-01/ in URL), insert version segment into otherPageUrl\n const versionMatch = window.location.pathname.match(/\\/(v\\d{4}-\\d{2}-\\d{2})\\//);\n function applyVersion(url) {\n if (versionMatch) {\n const version = versionMatch[1];\n return url.replace('/reference/', `/${version}/reference/`);\n }\n return url;\n }\n\n // Fetch & cache a single section's HTML from another page\n async function fetchSectionHtml(otherPageUrl, targetSectionText) {\n const versionedUrl = applyVersion(otherPageUrl);\n const cacheKey = `crossSection:${versionedUrl}:${targetSectionText}`;\n const cached = sessionStorage.getItem(cacheKey);\n if (cached) {\n return cached;\n }\n try {\n const resp = await fetch(versionedUrl, { credentials: 'same-origin' });\n if (!resp.ok) {\n console.warn('[CrossInject] Fetch failed', resp.status, versionedUrl);\n return null;\n }\n const htmlText = await resp.text();\n // Parse to DOM\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlText, 'text/html');\n // Find the sidebar section\n const sidebarSelector = '.rm-Sidebar';\n const otherSidebar = doc.querySelector(sidebarSelector);\n if (!otherSidebar) {\n console.warn('[CrossInject] Sidebar not found for', versionedUrl);\n return null;\n }\n // Locate the
whose includes targetSectionText\n let foundSection = null;\n otherSidebar.querySelectorAll('section').forEach(sec => {\n if (foundSection) return;\n const h2 = sec.querySelector('h2');\n if (h2 && h2.textContent.trim().includes(targetSectionText)) {\n foundSection = sec;\n }\n });\n if (!foundSection) {\n console.warn('[CrossInject] Section not found:', targetSectionText, 'in', versionedUrl);\n return null;\n }\n const sectionHtml = foundSection.outerHTML;\n try {\n sessionStorage.setItem(cacheKey, sectionHtml);\n } catch (_) {}\n return sectionHtml;\n } catch (err) {\n console.error('[CrossInject] Error fetching/parsing:', err);\n return null;\n }\n }\n\n // Wait until the current page's sidebar is present\n function whenSidebarReady(fn) {\n const interval = setInterval(() => {\n const sidebarNav = document.querySelector('.rm-Sidebar');\n if (sidebarNav) {\n clearInterval(interval);\n fn(sidebarNav);\n }\n }, 100);\n // Stop polling after 5s\n setTimeout(() => clearInterval(interval), 5000);\n }\n\n // Collapse helper for a section element\n function collapseSection(sec) {\n const h2 = sec.querySelector('h2');\n const ul = sec.querySelector('ul');\n if (h2) {\n h2.classList.remove('section-expanded');\n h2.classList.add('section-collapsed');\n h2.setAttribute('aria-expanded', 'false');\n }\n if (ul) {\n ul.classList.add('section-collapsed');\n ul.classList.remove('section-list-expanded');\n }\n }\n // Expand helper\n function expandSection(sec) {\n const h2 = sec.querySelector('h2');\n const ul = sec.querySelector('ul');\n if (h2) {\n h2.classList.remove('section-collapsed');\n h2.classList.add('section-expanded');\n h2.setAttribute('aria-expanded', 'true');\n }\n if (ul) {\n ul.classList.remove('section-collapsed');\n ul.classList.add('section-list-expanded');\n }\n }\n\n // Fetch all needed sections in parallel\n const results = await Promise.all(\n toInject.map(item =>\n fetchSectionHtml(item.otherPageUrl, item.targetSectionText)\n .then(html => ({ ...item, sectionHtml: html }))\n )\n );\n const validSections = results.filter(r => r.sectionHtml);\n if (validSections.length === 0) {\n return;\n }\n\n // Once our sidebar is ready, inject under \"Welcome\"\n whenSidebarReady(sidebarNav => {\n const contentDiv = sidebarNav.querySelector('.hub-sidebar-content');\n if (!contentDiv) {\n console.warn('[CrossInject] .hub-sidebar-content not found; abort insertion.');\n return;\n }\n\n // Find \"Welcome\" section\n const welcomeSection = Array.from(contentDiv.querySelectorAll('section')).find(sec => {\n const h2 = sec.querySelector('h2');\n return h2 && h2.textContent.trim() === 'Welcome';\n });\n let insertAfter = welcomeSection;\n\n validSections.forEach(({ targetSectionText, sectionHtml }) => {\n const wrapper = document.createElement('div');\n wrapper.innerHTML = sectionHtml;\n const originalSectionNode = wrapper.firstElementChild;\n if (!originalSectionNode) {\n console.warn('[CrossInject] No section node for', targetSectionText);\n return;\n }\n const sectionClone = originalSectionNode.cloneNode(true);\n\n // Adapt heading & toggle as needed:\n const injectedH2 = sectionClone.querySelector('h2');\n const injectedUL = sectionClone.querySelector('ul');\n if (injectedH2 && injectedUL) {\n // Copy classes from an existing template if present\n const templateH2 = sidebarNav.querySelector('.hub-sidebar-content section h2');\n if (templateH2) {\n injectedH2.className = templateH2.className;\n } else {\n injectedH2.classList.add('Sidebar-headingTRQyOa2pk0gh', 'rm-Sidebar-heading');\n }\n injectedH2.setAttribute('tabindex', '0');\n // Remove existing chevrons, clone from template or fallback\n Array.from(injectedH2.querySelectorAll('.icon-chevron')).forEach(el => el.remove());\n if (templateH2) {\n templateH2.querySelectorAll('.icon-chevron').forEach(iconSpan => {\n injectedH2.appendChild(iconSpan.cloneNode(true));\n });\n } else {\n const fallbackSpan = document.createElement('span');\n fallbackSpan.className = 'icon-chevron';\n injectedH2.appendChild(fallbackSpan);\n }\n // Initially collapsed\n collapseSection(sectionClone);\n\n // Toggle handler\n const toggleFn = () => {\n const isCollapsed = injectedUL.classList.contains('section-collapsed');\n if (isCollapsed) {\n expandSection(sectionClone);\n } else {\n collapseSection(sectionClone);\n }\n };\n injectedH2.style.cursor = 'pointer';\n injectedH2.addEventListener('click', toggleFn);\n injectedH2.addEventListener('keydown', e => {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n toggleFn();\n }\n });\n }\n\n // Nested toggles\n sectionClone.querySelectorAll('a.Sidebar-link_parent').forEach(aParent => {\n let btn = aParent.querySelector('button');\n if (!btn && aParent.nextElementSibling && aParent.nextElementSibling.tagName === 'BUTTON') {\n btn = aParent.nextElementSibling;\n }\n let subUl = null;\n if (btn) {\n const maybeUl = btn.parentElement.nextElementSibling;\n if (maybeUl && maybeUl.classList.contains('subpages')) subUl = maybeUl;\n }\n if (!subUl) {\n const parentLi = aParent.closest('li');\n if (parentLi) {\n const maybe = parentLi.querySelector('ul.subpages');\n if (maybe) subUl = maybe;\n }\n }\n if (btn && subUl) {\n // collapsed by default\n btn.setAttribute('aria-expanded', 'false');\n subUl.classList.add('section-collapsed');\n subUl.classList.remove('section-list-expanded');\n btn.style.cursor = 'pointer';\n btn.addEventListener('click', e => {\n e.preventDefault();\n const expanded = btn.getAttribute('aria-expanded') === 'true';\n if (expanded) {\n btn.setAttribute('aria-expanded', 'false');\n subUl.classList.add('section-collapsed');\n subUl.classList.remove('section-list-expanded');\n } else {\n btn.setAttribute('aria-expanded', 'true');\n subUl.classList.remove('section-collapsed');\n subUl.classList.add('section-list-expanded');\n }\n });\n }\n });\n\n // Insert right after Welcome (Places first, then Users)\n if (insertAfter && insertAfter.parentElement === contentDiv) {\n insertAfter.insertAdjacentElement('afterend', sectionClone);\n insertAfter = sectionClone;\n } else {\n contentDiv.appendChild(sectionClone);\n }\n console.log(`[CrossInject] Injected \"${targetSectionText}\" after Welcome.`);\n });\n\n // After injecting both, auto-expand whichever matches current path\n function normalizeHref(href) {\n try {\n const url = new URL(href, window.location.origin);\n return url.pathname.replace(/\\/$/, '');\n } catch {\n return href.replace(/\\/$/, '');\n }\n }\n const normPath = window.location.pathname.replace(/\\/$/, '');\n // Clear any previous active marks:\n contentDiv.querySelectorAll('a[aria-current]').forEach(a => {\n a.removeAttribute('aria-current');\n a.classList.remove('active');\n });\n // Find matches among injected links:\n const allLinks = Array.from(contentDiv.querySelectorAll('a'));\n allLinks.forEach(a => {\n const href = a.getAttribute('href');\n if (!href) return;\n if (normalizeHref(href) === normPath) {\n // mark active\n a.setAttribute('aria-current', 'page');\n a.classList.add('active');\n // expand its parent section\n let sec = a.closest('section');\n if (sec) expandSection(sec);\n // expand ancestors\n let anc = a.parentElement;\n while (anc && anc !== contentDiv) {\n if (anc.tagName === 'UL' && anc.classList.contains('subpages')) {\n anc.classList.remove('section-collapsed');\n anc.classList.add('section-list-expanded');\n const parentLi = anc.closest('li');\n if (parentLi) {\n const btn = parentLi.querySelector('button[aria-expanded]');\n if (btn) btn.setAttribute('aria-expanded', 'true');\n }\n }\n if (anc.tagName === 'SECTION') {\n expandSection(anc);\n }\n anc = anc.parentElement;\n }\n }\n });\n // If none matched exactly, all remain collapsed.\n });\n })();\n }, 600);\n});","html_promo":"","html_body":"","html_footer":"\n\n\n\n\n\n ","html_head":"","html_footer_meta":"\n \n","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"","promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"","text":"","_id":"5fa9a583c88a1e003de1fb64"}],"ai_dropdown":"disabled","ai_options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","view_as_markdown":"enabled"},"showPageIcons":true,"layout":{"full_width":false,"style":"classic"}},"custom_domain":"","childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"error404":"","experiments":[],"first_page":"landing","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"requiresJQuery":true,"externalSdkSnippets":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-developers.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"glossaryTerms":[{"_id":"600a29fd5ba23c002b40c7d2","term":"POI","definition":"A point of interest"},{"_id":"623bbd4616acf4005d31315f","term":"UUID","definition":"A unique identifier for your map or dataset. Can be found at the end of asset's URL or metadata."}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"settings":{"page":"","status":false,"url":""},"provider":""},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","html":"\n
\n \n
Foursquare Developer Documentation \n
\n Explore our comprehensive technical documentation, tools and more to up your location game.\n
\n
\n Search\n
\n
\n \n\n \n
\n \n
\n
Products
\n
Explore our products \n
\n Learn more about our complete suite of developer products.\n
\n
\n
\n View All \n APIs \n SDKs \n \n
\n
\n \n
\n
\n
API
\n
Places API New! \n
\n Access global POI data and rich content via our new Places API endpoints.\n
\n
\n
\n\n \n
\n
\n
API
\n
Users API New! \n
\n Manage user accounts and authentication endpoints for Foursquare users.\n
\n
\n
\n\n\n \n \n
\n
\n
API
\n
Movement Geofence API \n
\n Enable Movement SDK user-configured geofences for specific venues, categories, and more.\n
\n
\n
\n\n \n
\n
\n
API
\n
Studio Data API \n
\n Create, manage, and modify geospatial assets used on Foursquare Studio. Integrate into\n your pipeline tasks for the bulk processing of geospatial data, allowing for the\n efficient flow of data into Studio.\n
\n
\n
\n\n \n
\n
\n
API
\n
Measurement API \n
\n Measurement API (MAPI) is a tool for accessing measurement data, powering everything\n from insights gathering to campaign optimization. MAPI combines unparalleled data\n granularity with a flexible syntax to put you in control of your report data.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Movement SDK \n
\n Create real-time, contextual mobile experiences, and bridge the gap between online\n interests and real-world behaviors.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Studio Data SDK \n
\n Supports automated, scalable management of maps and seamless integration with your work\n flows.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Map SDK \n
\n Control, embed and customize maps on your own webpage or in Jupyter Notebooks.\n
\n
\n
\n\n \n\n
\n
X\n
\n
API
\n
Places API - Deprecated \n
\n Access global POI data and rich content from 100K+ trusted sources via our API for\n real-time venue search, discovery, and ranking.\n
\n
\n
\n\n
\n
X\n
\n
API
\n
Personalization API - Deprecated \n
\n Leverage our global POI database alongside our personalization algorithms to provide a\n personalized search experience unique to a user’s specific tastes, visit history, review\n sentiment, and more.\n
\n
\n
\n
\n
\n \n\n \n\n
\n \n
\n
\n
Developer Tools
\n
API Explorer \n
\n View working code examples and make authenticated API requests with full responses. Try\n it out!\n
\n
\n \n \n \n \n Full sample responses without writing code\n \n \n \n \n \n Build your own requests and see responses in real-time\n \n \n \n \n \n Multiple code language support\n \n \n
\n
\n
\n
\n
\n
\n
\n \n\n
\n \n
\n
\n
\n
API Tools \n
\n View working web experiences leveraging our most popular API endpoints, including code,\n and step-by-step code walkthroughs of our most popular API use cases.\n
\n
\n
\n
\n
\n
SDK Tools \n
\n Take Foursquare technology for a test ride before you spend the time and effort to\n implement the code.\n
\n
\n
\n
\n
\n
Developer Support \n
\n Resources aimed at providing a dedicated experience where you can interact with other\n developers.\n
\n
\n
\n
\n
\n \n\n
\n \n
\n
Resources
\n
Get Started Guides \n
\n
\n
\n
Feature
\n
Get Started with the Places API \n
\n New to the Foursquare Places API? Not to worry, we've got you covered. In just a few\n simple steps, you'll be up and running with your first API call in no time!\n
\n
\n Read more \n
\n
\n
\n
APIs
\n
Get Started with the Personalization APIs \n
\n New to the Foursquare Personalization APIs? Not to worry, we've got you covered. In just\n a few simple steps, you'll be up and running with your first API call in no time!\n
\n
\n Read more \n
\n
\n
\n
Feature
\n
Get Started with Foursquare Studio \n
\n Using Foursquare Studio, you can create powerful geospatial visualizations that you can\n share with the world.\n
\n
\n Read more \n
\n
\n
\n
\n \n\n
\n \n
Unlock Your App's Full Potential with Foursquare Developer \n
\n Register now to get the monthly 10,000 monthly free Places Pro Calls and more.\n
\n
Sign up \n
\n \n
"}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Developer","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"domain":false,"jwt":false,"logs":true,"metricsSDK":false},"owlbot":{"customization":{"tone":"neutral","customTone":"","answerLength":"long","forbiddenWords":"","defaultAnswer":""},"enabled":false,"isPaying":false,"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"enterprise","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":true,"points":10},"customLogin":{"enabled":false,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":false,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":false,"points":10},"support":{"enabled":false,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":false,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"totalScore":140},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":true,"defaultExpandResponseSchema":true,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]},"subdomain":"fsq-developers","subpath":"developer","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://support.foursquare.com/hc/en-us/requests/new?ticket_form_id=13089705025180"},{"type":"user"}],"bottom":[{"type":"url","url":"https://docs.foursquare.com/developer/docs/developer-console-overview","text":"❯ Console Docs"}],"edited":true},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2024-04-12T16:18:13.348Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://docs.foursquare.com","versions":[{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]},{"_id":"6606e9c5e8ce1f005276a815","version":"0.2","version_clean":"0.2.0","codename":"New Help Dev","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a82e","6606e9c5e8ce1f005276a82f","6606e9c5e8ce1f005276a830","6606e9c5e8ce1f005276a831","6606e9c5e8ce1f005276a832","6606e9c5e8ce1f005276a833","6606e9c5e8ce1f005276a834","6606e9c5e8ce1f005276a835","6606e9c5e8ce1f005276a836","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a838","6606e9c5e8ce1f005276a839","6606e9c5e8ce1f005276a83a","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a83d"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a814","updatedAt":"2023-10-30T22:02:33.548Z"},{"_id":"6606e9c5e8ce1f005276a814","version":"0.1","version_clean":"0.1.0","codename":"Old DevEx","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a821","6606e9c5e8ce1f005276a822","6606e9c5e8ce1f005276a823","6606e9c5e8ce1f005276a824","6606e9c5e8ce1f005276a825","6606e9c5e8ce1f005276a826","6606e9c5e8ce1f005276a827","6606e9c5e8ce1f005276a828","6606e9c5e8ce1f005276a82b","6606e9c5e8ce1f005276a82c","6606e9c5e8ce1f005276a82d","6606e9c5e8ce1f005276a837","6606e9c5e8ce1f005276a83c"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":5,"forked_from":"6606e9c5e8ce1f005276a813"},{"_id":"6606e9c5e8ce1f005276a813","version":"0.0","version_clean":"0.0.0","codename":"Old Ent Docs","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a819","6606e9c5e8ce1f005276a819","6606e9c5e8ce1f005276a81a","6606e9c5e8ce1f005276a81b","6606e9c5e8ce1f005276a81c","6606e9c5e8ce1f005276a81d","6606e9c5e8ce1f005276a81e","6606e9c5e8ce1f005276a81f","6606e9c5e8ce1f005276a820","6606e9c5e8ce1f005276a829","6606e9c5e8ce1f005276a82a","6606e9c5e8ce1f005276a83b"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":3},{"_id":"6606e9c5e8ce1f005276a816","version":"0.3","version_clean":"0.3.0","codename":"New Dev - Manual API","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a83e","6606e9c5e8ce1f005276a83f","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a840","6606e9c5e8ce1f005276a841","6606e9c5e8ce1f005276a842","6606e9c5e8ce1f005276a843","6606e9c5e8ce1f005276a844","6606e9c5e8ce1f005276a845","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a846","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a847","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a848","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a849","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2023-09-05T18:57:22.670Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a815","updatedAt":"2024-01-09T20:22:14.497Z"},{"_id":"6606e9c5e8ce1f005276a818","version":"1.1111","version_clean":"1.1111.0","codename":"Demo Day MAPI","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a85b","6606e9c5e8ce1f005276a85c","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a85d","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a85e","6606e9c5e8ce1f005276a85f","6606e9c5e8ce1f005276a860","6606e9c5e8ce1f005276a861","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a862","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a863","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a864","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a865","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a866","6606e9c5e8ce1f005276a867","6606e9c5e8ce1f005276a868","6606e9c5e8ce1f005276a869","6606e9c5e8ce1f005276a86a","6606e9c5e8ce1f005276a86b"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-03-28T10:17:25.142Z","__v":0,"forked_from":"6606e9c5e8ce1f005276a817","updatedAt":"2024-03-28T10:17:25.904Z"},{"_id":"67632b52f5b7cf0061fd6ee2","version":"20241206","version_clean":"20241206.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["67632b52f5b7cf0061fd6d11","67632b52f5b7cf0061fd6d12","64f77a125b90e20045ad3f37","67632b52f5b7cf0061fd6d13","659d9bd8788254004fcbbf9b","67632b52f5b7cf0061fd6d14","67632b52f5b7cf0061fd6d15","67632b52f5b7cf0061fd6d16","67632b52f5b7cf0061fd6d17","634d7c4489e57300949dfc2f","67632b52f5b7cf0061fd6d18","64f77a125b90e20045ad3f3f","67632b52f5b7cf0061fd6d19","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","67632b52f5b7cf0061fd6d1a","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","67632b52f5b7cf0061fd6d1b","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","67632b52f5b7cf0061fd6d1c","67632b52f5b7cf0061fd6d1d","67632b52f5b7cf0061fd6d1e","67632b52f5b7cf0061fd6d1f","67632b52f5b7cf0061fd6d20","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","67632b52f5b7cf0061fd6d21","67800188cfca3400623c7c3b"],"pdfStatus":"","project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-12-18T20:06:42.178Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a817","updatedAt":"2025-01-09T17:04:08.987Z","apiRegistries":[]}],"variableDefaults":[{"source":"security","_id":"63405a756dda10000f0ee8a1","name":"Authorization","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a898"},{"source":"security","_id":"64e8f31e4b5dd10958059cb2","name":"BearerAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8b0"},{"source":"security","_id":"64f8c5cfcef95d006694b93d","name":"BearerTokenAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8ae"},{"source":"security","_id":"65fabf83d8b563003024e550","name":"x-api-key","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a8ce"},{"source":"security","_id":"66172602ef644d001382eb70","name":"oauth_token","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a8cd"},{"source":"security","_id":"664cd2257fdd3a0010197ea1","name":"ServiceKeyBearerTokenAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8ca"}],"webhookEnabled":false},"custom_domain":"docs.foursquare.com","childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"error404":"","experiments":[],"first_page":"landing","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":true,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"superHubBranches":false,"requiresJQuery":true,"externalSdkSnippets":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false,"superHubMergePermissions":false,"maskErrorMessages":true},"fullBaseUrl":"https://docs.foursquare.com/developer","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"glossaryTerms":[{"_id":"600a29fd5ba23c002b40c7d2","term":"POI","definition":"A point of interest"},{"_id":"623bbd4616acf4005d31315f","term":"UUID","definition":"A unique identifier for your map or dataset. Can be found at the end of asset's URL or metadata."}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"settings":{"page":"","status":false,"url":""},"provider":""},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","html":"\n
\n \n
Foursquare Developer Documentation \n
\n Explore our comprehensive technical documentation, tools and more to up your location game.\n
\n
\n Search\n
\n
\n \n\n \n
\n \n
\n
Products
\n
Explore our products \n
\n Learn more about our complete suite of developer products.\n
\n
\n
\n View All \n APIs \n SDKs \n \n
\n
\n \n
\n
\n
API
\n
Places API New! \n
\n Access global POI data and rich content via our new Places API endpoints.\n
\n
\n
\n\n \n
\n
\n
API
\n
Users API New! \n
\n Manage user accounts and authentication endpoints for Foursquare users.\n
\n
\n
\n\n\n \n \n
\n
\n
API
\n
Movement Geofence API \n
\n Enable Movement SDK user-configured geofences for specific venues, categories, and more.\n
\n
\n
\n\n \n
\n
\n
API
\n
Studio Data API \n
\n Create, manage, and modify geospatial assets used on Foursquare Studio. Integrate into\n your pipeline tasks for the bulk processing of geospatial data, allowing for the\n efficient flow of data into Studio.\n
\n
\n
\n\n \n
\n
\n
API
\n
Measurement API \n
\n Measurement API (MAPI) is a tool for accessing measurement data, powering everything\n from insights gathering to campaign optimization. MAPI combines unparalleled data\n granularity with a flexible syntax to put you in control of your report data.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Movement SDK \n
\n Create real-time, contextual mobile experiences, and bridge the gap between online\n interests and real-world behaviors.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Studio Data SDK \n
\n Supports automated, scalable management of maps and seamless integration with your work\n flows.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Map SDK \n
\n Control, embed and customize maps on your own webpage or in Jupyter Notebooks.\n
\n
\n
\n\n \n\n
\n
X\n
\n
API
\n
Places API - Deprecated \n
\n Access global POI data and rich content from 100K+ trusted sources via our API for\n real-time venue search, discovery, and ranking.\n
\n
\n
\n\n
\n
X\n
\n
API
\n
Personalization API - Deprecated \n
\n Leverage our global POI database alongside our personalization algorithms to provide a\n personalized search experience unique to a user’s specific tastes, visit history, review\n sentiment, and more.\n
\n
\n
\n
\n
\n \n\n \n\n
\n \n
\n
\n
Developer Tools
\n
API Explorer \n
\n View working code examples and make authenticated API requests with full responses. Try\n it out!\n
\n
\n \n \n \n \n Full sample responses without writing code\n \n \n \n \n \n Build your own requests and see responses in real-time\n \n \n \n \n \n Multiple code language support\n \n \n
\n
\n
\n
\n
\n
\n
\n \n\n
\n \n
\n
\n
\n
API Tools \n
\n View working web experiences leveraging our most popular API endpoints, including code,\n and step-by-step code walkthroughs of our most popular API use cases.\n
\n
\n
\n
\n
\n
SDK Tools \n
\n Take Foursquare technology for a test ride before you spend the time and effort to\n implement the code.\n
\n
\n
\n
\n
\n
Developer Support \n
\n Resources aimed at providing a dedicated experience where you can interact with other\n developers.\n
\n
\n
\n
\n
\n \n\n
\n \n
\n
Resources
\n
Get Started Guides \n
\n
\n
\n
Feature
\n
Get Started with the Places API \n
\n New to the Foursquare Places API? Not to worry, we've got you covered. In just a few\n simple steps, you'll be up and running with your first API call in no time!\n
\n
\n Read more \n
\n
\n
\n
APIs
\n
Get Started with the Personalization APIs \n
\n New to the Foursquare Personalization APIs? Not to worry, we've got you covered. In just\n a few simple steps, you'll be up and running with your first API call in no time!\n
\n
\n Read more \n
\n
\n
\n
Feature
\n
Get Started with Foursquare Studio \n
\n Using Foursquare Studio, you can create powerful geospatial visualizations that you can\n share with the world.\n
\n
\n Read more \n
\n
\n
\n
\n \n\n
\n \n
Unlock Your App's Full Potential with Foursquare Developer \n
\n Register now to get the monthly 10,000 monthly free Places Pro Calls and more.\n
\n
Sign up \n
\n \n
"}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Developer","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"oauth_url":"https://foursquare.com/developers/login","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"domain":false,"jwt":false,"logs":true,"metricsSDK":false},"owlbot":{"customization":{"tone":"neutral","customTone":"","answerLength":"long","forbiddenWords":"","defaultAnswer":""},"enabled":false,"isPaying":false,"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"business","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":true,"points":10},"customLogin":{"enabled":false,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":false,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":false,"points":10},"support":{"enabled":false,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":false,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"totalScore":140},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":true,"defaultExpandResponseSchema":true,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"siblings":[{"_id":"6606e9e46d03dc004a19dbb3","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"nav_names":{"docs":"Documentation","reference":"","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"name":"Data Products","subpath":"data-products","subdomain":"fsq-data","description":"","robotsAllow":true,"is_active":true,"internal":"","owner":"603437d04f249d008184fbdd","stable":"6606e9e46d03dc004a19db33","git":{"sync":{"connection":[],"github":[],"gitlab":[],"logs":[],"connections":[],"providers":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"6606ea084f38af000fe23ce1","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"nav_names":{"docs":"Documentation","reference":"","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"name":"Campaign Products","subpath":"campaign-products","subdomain":"fsq-campaign","description":"","robotsAllow":true,"is_active":true,"internal":"","owner":"603437d04f249d008184fbdd","stable":"6606ea074f38af000fe23c3a","git":{"sync":{"connection":[],"github":[],"gitlab":[],"logs":[],"connections":[],"providers":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"6606ea3fcfdebc002a58a6f9","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"nav_names":{"docs":"Documentation","reference":"","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"name":"Analytics Products","subpath":"analytics-products","subdomain":"fsq-analytics","description":"","robotsAllow":true,"is_active":true,"internal":"","owner":"603437d04f249d008184fbdd","stable":"660ae2939b63f000123bb7bc","git":{"sync":{"connection":[],"github":[],"gitlab":[],"logs":[],"connections":[],"providers":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"5fa9a583c88a1e003de1fb62","flags":{"allow_hub2":false,"enterprise":true,"alwaysShowDocPublishStatus":false,"hub2":true,"migrationRun":false,"migrationSwaggerRun":false,"oauth":false,"swagger":false,"correctnewlines":false,"rdmdCompatibilityMode":false,"speedyRender":false,"allowXFrame":false,"cookieAuthentication":false,"hideGoogleAnalytics":false,"newEditor":true,"oldMarkdown":false,"newMarkdownBetaProgram":true,"newApiExplorer":true,"disableAnonForum":false,"directGoogleToStableVersion":false,"translation":false,"staging":false,"newSearch":true,"tutorials":true,"allowApiExplorerJsonEditor":false,"useReactApp":true,"newHeader":false,"referenceRedesign":false,"auth0Oauth":false,"graphql":false,"singleProjectEnterprise":false,"dashReact":false,"allowReferenceUpgrade":true,"metricsV2":true,"newEditorDash":true,"enableRealtimeExperiences":false,"reviewWorkflow":true,"star":false,"allowDarkMode":false,"forceDarkMode":false,"useReactGLP":false,"disablePasswordlessLogin":false,"personalizedDocs":false,"myDevelopers":false,"superHub":false,"developerDashboard":false,"allowReusableOTPs":false,"dashHomeRefresh":false,"owlbotAi":false,"apiV2":false,"git":{"read":false,"write":false},"superHubBeta":false,"dashQuickstart":false,"disableAutoTranslate":false,"customBlocks":false,"devDashHub":false,"disableSAMLScoping":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"apiAccessRevoked":false,"passwordlessLogin":"default","disableSignups":false,"billingRedesignEnabled":true,"developerPortal":false,"mdx":false,"superHubDevelopment":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"changelog":false,"discuss":false,"suggested_edits":false,"logs":false,"custompages":false,"tutorials":true,"graphql":false},"nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":"Code Tutorials"},"name":"Code Tutorials (ARCHIVED)","subdomain":"fsq-tutorials","description":"Foursquare Code Tutorials","robotsAllow":false,"is_active":false,"internal":"","owner":"603437d04f249d008184fbdd","stable":"659d9bd8788254004fcbc149","subpath":"developer-tutorials","git":{"sync":{"connection":[],"github":[],"gitlab":[],"logs":[],"connections":[],"providers":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"6606e9c5e8ce1f005276b057","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"requiresJQuery":true,"externalSdkSnippets":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"name":"Developer","subpath":"developer","subdomain":"fsq-developers","description":"","robotsAllow":true,"is_active":true,"internal":"","owner":"6362c6c6ada30600a023c012","stable":"6606e9c5e8ce1f005276a817","git":{"sync":{"connection":[],"github":[],"gitlab":[],"logs":[],"connections":[],"providers":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"682f7aee39811e005ab82d7e","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"bidiSync":false,"changelogRssAlwaysPublic":false,"childManagedBidi":false,"correctnewlines":false,"dashReact":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSignups":false,"enableOidc":false,"enterprise":true,"graphql":false,"hideEnforceSSO":false,"localLLM":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"star":false,"staging":false,"superHub":false,"superHubBranches":false,"superHubMigrationSelfServeFlow":false,"translation":false,"disableDiscussionSpamRecaptchaBypass":false,"externalSdkSnippets":false,"requiresJQuery":true,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"modules":{"landing":false,"docs":false,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"git":{"sync":{"providers":[],"connections":[],"logs":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"name":"Developer - Users","subpath":"","subdomain":"fsq-developers-users","description":"","robotsAllow":false,"is_active":true,"internal":"","owner":"603437d04f249d008184fbdd","stable":"684b49ea4c9681004c950548","mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"682f7b0f3e4a0649aca9f2d0","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"bidiSync":false,"changelogRssAlwaysPublic":false,"childManagedBidi":false,"correctnewlines":false,"dashReact":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSignups":false,"enableOidc":false,"enterprise":true,"graphql":false,"hideEnforceSSO":false,"localLLM":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"star":false,"staging":false,"superHub":false,"superHubBranches":false,"superHubMigrationSelfServeFlow":false,"translation":false,"disableDiscussionSpamRecaptchaBypass":false,"requiresJQuery":true,"externalSdkSnippets":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"modules":{"landing":false,"docs":false,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"git":{"sync":{"providers":[],"connections":[],"logs":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"name":"Developer - Places","subpath":"","subdomain":"fsq-developers-places","description":"","robotsAllow":false,"is_active":true,"internal":"","owner":"603437d04f249d008184fbdd","stable":"684af68b75763b00183a120c","mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"685077dd8ac7e200112fcb8a","mcp":{"state":"disabled"},"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"bidiSync":false,"changelogRssAlwaysPublic":false,"childManagedBidi":false,"correctnewlines":false,"dashReact":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSignups":false,"enableOidc":false,"enterprise":true,"externalSdkSnippets":false,"graphql":false,"hideEnforceSSO":false,"localLLM":false,"migrationPreview":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"star":false,"staging":false,"superHub":false,"superHubBranches":false,"superHubMigrationSelfServeFlow":false,"superHubPreview":false,"translation":false,"disableDiscussionSpamRecaptchaBypass":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"git":{"sync":{"providers":[],"connections":[],"logs":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"name":"Developer (AI Owlbot Test)","subpath":"","subdomain":"fsq-developers-final","description":"","robotsAllow":true,"is_active":false,"internal":"password","owner":"603437d04f249d008184fbdd","stable":"685077dc8ac7e200112fc263","github_user":"","github_repo":"","github_color":"green_007200"},{"_id":"664e8876d73a9100120f567c","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"annualBillingEnabled":true,"apiAccessRevoked":false,"billingRedesignEnabled":false,"correctnewlines":false,"dashReact":false,"devDashBillingRedesignEnabled":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"requiresJQuery":true,"externalSdkSnippets":false,"migrationPreview":false,"superHubBranches":false,"superHubPreview":false,"superHubBranchReviews":false},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"name":"Staging Developer (removing?)","subpath":"","subdomain":"fsq-developers-staging","description":"","robotsAllow":true,"is_active":false,"internal":"password","owner":"603437d04f249d008184fbdd","stable":"664e8876d73a9100120f4e3c","git":{"sync":{"connection":[],"github":[],"gitlab":[],"logs":[],"connections":[],"providers":[],"installationRequest":{}},"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}}},"mcp":{"state":"disabled"},"github_user":"","github_repo":"","github_color":"green_007200"}],"stable":{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]},"subdomain":"fsq-developers","subpath":"developer","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://support.foursquare.com/hc/en-us/requests/new?ticket_form_id=13089705025180"},{"type":"user","text":"User","url":"/login?redirect_uri=/reference/mapi-reports"}],"bottom":[{"type":"url","url":"https://docs.foursquare.com/developer/docs/developer-console-overview","text":"❯ Console Docs"}],"edited":true},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2024-04-12T16:18:13.348Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://docs.foursquare.com","versions":[{"_id":"6606e9c5e8ce1f005276a813","version":"0.0","version_clean":"0.0.0","codename":"Old Ent Docs","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a819","6606e9c5e8ce1f005276a819","6606e9c5e8ce1f005276a81a","6606e9c5e8ce1f005276a81b","6606e9c5e8ce1f005276a81c","6606e9c5e8ce1f005276a81d","6606e9c5e8ce1f005276a81e","6606e9c5e8ce1f005276a81f","6606e9c5e8ce1f005276a820","6606e9c5e8ce1f005276a829","6606e9c5e8ce1f005276a82a","6606e9c5e8ce1f005276a83b"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":3},{"_id":"6606e9c5e8ce1f005276a814","version":"0.1","version_clean":"0.1.0","codename":"Old DevEx","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a821","6606e9c5e8ce1f005276a822","6606e9c5e8ce1f005276a823","6606e9c5e8ce1f005276a824","6606e9c5e8ce1f005276a825","6606e9c5e8ce1f005276a826","6606e9c5e8ce1f005276a827","6606e9c5e8ce1f005276a828","6606e9c5e8ce1f005276a82b","6606e9c5e8ce1f005276a82c","6606e9c5e8ce1f005276a82d","6606e9c5e8ce1f005276a837","6606e9c5e8ce1f005276a83c"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":5,"forked_from":"6606e9c5e8ce1f005276a813"},{"_id":"6606e9c5e8ce1f005276a815","version":"0.2","version_clean":"0.2.0","codename":"New Help Dev","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a82e","6606e9c5e8ce1f005276a82f","6606e9c5e8ce1f005276a830","6606e9c5e8ce1f005276a831","6606e9c5e8ce1f005276a832","6606e9c5e8ce1f005276a833","6606e9c5e8ce1f005276a834","6606e9c5e8ce1f005276a835","6606e9c5e8ce1f005276a836","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a838","6606e9c5e8ce1f005276a839","6606e9c5e8ce1f005276a83a","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a83d"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a814","updatedAt":"2023-10-30T22:02:33.548Z"},{"_id":"6606e9c5e8ce1f005276a816","version":"0.3","version_clean":"0.3.0","codename":"New Dev - Manual API","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a83e","6606e9c5e8ce1f005276a83f","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a840","6606e9c5e8ce1f005276a841","6606e9c5e8ce1f005276a842","6606e9c5e8ce1f005276a843","6606e9c5e8ce1f005276a844","6606e9c5e8ce1f005276a845","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a846","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a847","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a848","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a849","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2023-09-05T18:57:22.670Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a815","updatedAt":"2024-01-09T20:22:14.497Z"},{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]},{"_id":"6606e9c5e8ce1f005276a818","version":"1.1111","version_clean":"1.1111.0","codename":"Demo Day MAPI","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a85b","6606e9c5e8ce1f005276a85c","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a85d","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a85e","6606e9c5e8ce1f005276a85f","6606e9c5e8ce1f005276a860","6606e9c5e8ce1f005276a861","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a862","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a863","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a864","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a865","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a866","6606e9c5e8ce1f005276a867","6606e9c5e8ce1f005276a868","6606e9c5e8ce1f005276a869","6606e9c5e8ce1f005276a86a","6606e9c5e8ce1f005276a86b"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-03-28T10:17:25.142Z","__v":0,"forked_from":"6606e9c5e8ce1f005276a817","updatedAt":"2024-03-28T10:17:25.904Z"},{"_id":"67632b52f5b7cf0061fd6ee2","version":"20241206","version_clean":"20241206.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["67632b52f5b7cf0061fd6d11","67632b52f5b7cf0061fd6d12","64f77a125b90e20045ad3f37","67632b52f5b7cf0061fd6d13","659d9bd8788254004fcbbf9b","67632b52f5b7cf0061fd6d14","67632b52f5b7cf0061fd6d15","67632b52f5b7cf0061fd6d16","67632b52f5b7cf0061fd6d17","634d7c4489e57300949dfc2f","67632b52f5b7cf0061fd6d18","64f77a125b90e20045ad3f3f","67632b52f5b7cf0061fd6d19","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","67632b52f5b7cf0061fd6d1a","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","67632b52f5b7cf0061fd6d1b","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","67632b52f5b7cf0061fd6d1c","67632b52f5b7cf0061fd6d1d","67632b52f5b7cf0061fd6d1e","67632b52f5b7cf0061fd6d1f","67632b52f5b7cf0061fd6d20","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","67632b52f5b7cf0061fd6d21","67800188cfca3400623c7c3b"],"pdfStatus":"","project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-12-18T20:06:42.178Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a817","updatedAt":"2025-01-09T17:04:08.987Z","apiRegistries":[]}],"variableDefaults":[{"source":"security","_id":"63405a756dda10000f0ee8a1","name":"Authorization","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a898"},{"source":"security","_id":"64e8f31e4b5dd10958059cb2","name":"BearerAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8b0"},{"source":"security","_id":"64f8c5cfcef95d006694b93d","name":"BearerTokenAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8ae"},{"source":"security","_id":"65fabf83d8b563003024e550","name":"x-api-key","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a8ce"},{"source":"security","_id":"66172602ef644d001382eb70","name":"oauth_token","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a8cd"},{"source":"security","_id":"664cd2257fdd3a0010197ea1","name":"ServiceKeyBearerTokenAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8ca"}],"webhookEnabled":false,"parent":{"_id":"6606ec7d41d324002a857d4b","appearance":{"changelog":{"layoutExpanded":false,"showAuthor":true,"showExactDate":false},"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"eeeeee","main_alt":"","header_text":"","body_highlight":"","custom_login_link_color":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"style":"solid","img":[],"img_size":"auto","img_pos":"tl","linkStyle":"buttons"},"body":{"style":"none"},"global_landing_page":{"html":"\n
\n \n
Foursquare Product Documentation \n
\n Find help, follow step-by-step guides, technical documentation, and learn more about how to power your business forward with Foursquare Products.\n
\n
Search
\n \n
\n \n \n
\n \n
\n
Products
\n
Explore our products \n
\n Learn more about our complete suite of geospatial technology products.\n
\n
\n \n
\n View All \n Analytics Products \n Campaign Products \n Data Products \n Developer \n \n
\n
\n
\n
\n
Analytics Products
\n
Studio \n
Next-generation geospatial analytics platform for working with big geospatial data.
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
Campaign Products
\n
Targeting \n
Create and deploy audience segment, dervied from our rich repository of historical place visits.
\n
\n
\n
\n
\n
Campaign Products
\n
Attribution \n
Quantify the effectiveness of advertising campaigns at driving conversions across all channels.
\n
\n
\n
\n
\n
Data Products
\n
Places \n
Enrich your understanding of locations to help you drive business decisions or develop engaging user experiences.
\n
\n
\n
\n
\n
\n
\n
Data Products
\n
Placemaker Tools \n
Foursquare Placemakers are the guardians and curators of our Places dataset – playing a crucial role in shaping how people understand and interact with physical spaces in our digital world.
\n
\n
\n\n\n
\n
\n
Developer
\n
Places API New! \n
\n Access global POI data and rich content via our new Places API endpoints.\n
\n
\n
\n\n\n
\n
\n
Developer
\n
Users API New! \n
\n Manage user accounts and authentication endpoints for Foursquare users.\n
\n
\n
\n\n\n\n
\n
\n
Developer
\n
Movement Geofence API \n
\n Enable Movement SDK user-configured geofences for specific venues, categories, and more.\n
\n
\n
\n\n
\n
\n
Developer
\n
Studio Data API \n
\n Create, manage, and modify geospatial assets used on Foursquare Studio . Integrate into\n your pipeline tasks for the bulk processing of geospatial data, allowing for the\n efficient flow of data into Studio.\n
\n
\n
\n\n
\n
\n
Developer
\n
Measurement API \n
\n Measurement API (MAPI) is a tool for accessing measurement data, powering everything from insights gathering to campaign optimization. MAPI combines unparalleled data granularity with a flexible syntax to put you in control of your report data.\n
\n
\n
\n\n \n
\n
\n
Developer
\n
Movement SDK \n
\n Create real-time, contextual mobile experiences, and bridge the gap between online\n interests and real-world behaviors.\n
\n
\n
\n\n
\n
\n
Developer
\n
Studio Data SDK \n
\n Supports automated, scalable management of maps and seamless integration with your work\n flows.\n
\n
\n
\n \n
\n
\n
Developer
\n
Studio Map SDK \n
Control, embed and customize maps on your own webpage or in Jupyter Notebooks.
\n
\n
\n\n \n
\n
\n
Developer
\n
Places API - Deprecated \n
\n Access global POI data and rich content from 100K+ trusted sources via our API for\n real-time venue search, discovery, and ranking.\n
\n
\n
\n\n\n
\n
\n
Developer
\n
Personalization API - Deprecated \n
\n Leverage our global POI database alongside our personalization algorithms to provide a\n personalized search experience unique to a user’s specific tastes, visit history, review\n sentiment, and more.\n
\n
\n
\n\n
\n
\n \n
\n \n
\n
\n
Product Spotlight
\n
Placemaker Tools \n
\n Foursquare Placemakers are the guardians and curators of our Places dataset – playing a crucial role in shaping how people understand and interact with physical spaces in our digital world.\n
\n
\n \n \n \n \n Placemakers are the dedicated, passionate members of our global open source community who contribute to our shared understanding of places around the world.\n \n \n \n \n \n \n There are 10 levels in the Placemaker community. Each time you advance, you gain benefits and influence within the community, plus improve the quality of our places.\n \n \n \n \n \n \n Directly contribute to the accuracy of places for Swarm users and developers using our data to build rich, location-powered features.\n \n \n \n
\n
\n
\n
\n \n \n \n \n
\n
\n
\n \n
\n \n
\n
Resources
\n
Get Started Guides \n
\n
\n
\n
APIs
\n
Get Started with the Placemaker Tools \n
\n Placemakers are the most dedicated and passionate members of our community. They care deeply about maintaining the accuracy and quality of our data.\n
\n
\n Read more \n
\n
\n
\n
Feature
\n
Get Started with the Places API \n
\n New to the Foursquare Places API? Not to worry, we've got you covered. In just a few\n simple steps, you'll be up and running with your first API call in no time!\n
\n
\n Read more \n
\n
\n
\n
Feature
\n
Get Started with Foursquare Studio \n
\n Using Foursquare Studio, you can create powerful geospatial visualizations that you can\n share with the world.\n
\n
\n Read more \n
\n
\n
\n
\n \n
\n \n
Get in touch with an expert \n
\n Interested in exploring how Foursquare can help drive your business forward? Let us show you.\n
\n
Request a Demo \n
\n \n
\n \n \n \n \n \n \n \n ","redirect":""},"allowApiExplorerJsonEditor":false,"referenceSimpleMode":true,"referenceLayout":"row","link_logo_to_url":false,"theme":"line","colorScheme":"system","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"logo":["https://files.readme.io/395ef92-small-docs.png","395ef92-small-docs.png",324,40,"#000000","https://files.readme.io/e6bf6a6-docs.png","66073de859b0cb005930f3ce"],"loginLogo":["https://files.readme.io/369886b-small-readme-logo.png","readme.png",60,60,"#018EF5"],"logo_white":[],"logo_white_use":false,"logo_large":false,"favicon":["https://files.readme.io/ab74fae-small-favicon.png","ab74fae-small-favicon.png",32,32,"#000000","https://files.readme.io/8bd4089-favicon.png","66073e7c6de45200245db22e"],"stylesheet":"","stylesheet_hub2":"/*****************************************/ \n/************ General GLP ****************/ \n/*****************************************/ \n* {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n.rdmd-html iframe {\n background: #FFF;\n}\n.rm-LandingPage{\n margin: 0 auto;\n max-width: 100%;\n padding: 0;\n width: 100%;\n}\n\n.rm-Header-top [id^=\"tippy-\"] > div > div > div > div > div > div:nth-child(2){\n display:none !important; \n}\n\n.doc-search-button {\n font-size: 0.9rem;\n line-height: 1.6;\n color: #000;\n opacity: 0.999;\n display: inline-block;\n border: solid 1px #6666FF;\n background-color: white;\n border-radius: 7px;\n padding: 0.5em 1em;\n transition: background 100ms;\n width: 50%;\n cursor: pointer;\n}\n\n.landing-page-home .container {\n max-width: 1440px;\n margin: 0 auto;\n padding: 0 24px;\n}\n\n.landing-page-home .content {\n padding: 0 24px 24px;\n}\n\n.landing-page-home .content p {\n margin: 0 0 10px;\n line-height: 24px;\n}\n\n.landing-page-home section {\n padding: 48px 0;\n}\n\n.landing-page-home .button {\n border-radius: 12px;\n border: 1px solid #3333FF;\n background: #3333FF;\n color: #FFF;\n display: inline-block;\n padding: 12px 16px;\n text-decoration: none !important;\n margin-top: 24px;\n}\n\n.landing-page-home .button:hover {\n color: #3333FF;\n background: #FFF;\n}\n\n.landing-page-home .banner {\n background: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url(\"https://location.foursquare.com/wp-content/uploads/sites/2/2023/10/foursquare-hero-docs.jpg\") no-repeat center center #010101;\n}\n\n.landing-page-home .banner.signup {\n background: linear-gradient(0deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.3)), url(\"https://location.foursquare.com/wp-content/uploads/sites/2/2023/10/foursquare-signup.jpg\") no-repeat center center #010101;\n}\n\n.landing-page-home .banner h1 {\n color: #FFF;\n font-size: 48px;\n line-height: 64px;\n margin: 0 0 10px;\n padding: 0;\n font-weight: 300;\n}\n\n.landing-page-home .banner p.description {\n color: #B3B0B1;\n}\n\n.landing-page-home h2 {\n font-size: 32px;\n line-height: 40px;\n margin: 0;\n}\n\n.landing-page-home .tag {\n text-transform: uppercase;\n color: #2ED9C3;\n font-size: 12px;\n}\n\n.landing-page-home ul.filters {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n gap: 10px;\n padding: 0;\n}\n\n.landing-page-home ul.filters li {\n cursor: pointer;\n margin: 0;\n padding: 0;\n font-size: 14px !important;\n display: block;\n border-radius: 12px;\n padding: 6px 8px;\n border: 1px solid #F8F8F8;\n background: #F8F8F8;\n color: #171417;\n}\n\n.landing-page-home ul.filters li.active {\n background: #010101;\n color: #F8F8F8;\n border: 1px solid #010101;\n}\n\n.landing-page-home ul.pills {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n gap: 10px;\n padding: 0;\n}\n\n.landing-page-home ul.pills li {\n margin: 0;\n padding: 0;\n}\n\n.landing-page-home ul.pills li a {\n text-decoration: none;\n font-size: 14px !important;\n display: block;\n border: 1px solid #B3B0B1;\n border-radius: 50px;\n padding: 12px 16px;\n background: #F8F8F8;\n color: #171417;\n}\n\n.landing-page-home ul.pills li a:hover {\n background: #E0DDDE;\n text-decoration: none !important;\n}\n\n.landing-page-home ul.pills.blue li a {\n color: #3333FF;\n border-radius: 8px;\n background: #FFF;\n border: 1px solid #3333FF;\n}\n\n.landing-page-home ul.pills.blue li a:hover {\n background: #F2EEFB;\n\n}\n\n.landing-page-home ul.ticks {\n margin: 0 0 25px;\n padding: 0;\n list-style: none;\n}\n\n.landing-page-home .tiles {\n display: grid;\n gap: 20px;\n /* Adjust spacing between tiles as needed */\n row-gap: 40px;\n}\n\n.landing-page-home .tiles .tile-image {\n border-radius: 24px;\n box-shadow: 0px 3.38082px 11.77026px 0px rgba(0, 0, 0, 0.06), 0px 8.13971px 28.33825px 0px rgba(0, 0, 0, 0.08), 0px 27px 94px 0px rgba(0, 0, 0, 0.13), 0px 4px 4px 0px rgba(0, 0, 0, 0.25);\n}\n\n.landing-page-home .tile-container-border .tile {\n position: relative;\n padding: 24px;\n border-radius: 16px;\n box-sizing: border-box;\n border: 1px solid #ccc;\n}\n\n.landing-page-home .tile-container-border .tile .external {\n position: absolute;\n right: 24px;\n width: 32px;\n height: 32px;\n border: 1px solid #F8F8F8;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50px;\n}\n\n.landing-page-home .tile .icon {\n box-sizing: content-box;\n background: #EFF4FE;\n border-radius: 12px;\n padding: 10px;\n width: 24px;\n height: 24px;\n display: inline-block;\n color: blue;\n margin-bottom: 16px;\n}\n\n.landing-page-home .tile .icon.text {\n padding: 4px 8px;\n font-size: 12px;\n height: unset;\n width: unset;\n border-radius: 6px;\n}\n\n.landing-page-home .tile .icon.text.green {\n color: #0A5E14;\n background: #D7F6E7;\n}\n\n.landing-page-home .tile-container-bg {\n background: #F8F8F8;\n}\n\n.landing-page-home .tile-container-bg .tile {\n box-shadow: 0px 0px 8px 0px rgba(23, 20, 23, 0.1);\n background: #FFF;\n\n}\n\n.landing-page-home .tile-container-bg .tile h3 {\n margin-top: 0;\n}\n\n.landing-page-home .tile-container-bg .tile a {\n text-decoration: none;\n}\n\n.landing-page-home .tile-container-bg .tile a:hover {\n text-decoration: underline;\n}\n \n/*****************************************/\n/********* Viewport Changes **************/ \n/*****************************************/ \n \n@media (min-width: 768px) {\n \n .hub-is-home .rm-Header-top .rm-SearchToggle {\n \n }\n \n .landing-page-home .tiles {\n padding: 24px;\n }\n \n .landing-page-home .banner {\n padding: 80px 48px;\n }\n\n .landing-page-home .tiles .tile-image.tile-image-mobile {\n display: none;\n }\n\n .landing-page-home .tiles .tile-image.tile-image-desktop {\n display: block;\n }\n \n .landing-page-home .tiles-third {\n grid-template-columns: repeat(3, 1fr);\n }\n \n .landing-page-home .tiles-half {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 767px) {\n .landing-page-home .tiles .tile-image.tile-image-mobile {\n display: block;\n }\n\n .landing-page-home .tiles .tile-image.tile-image-desktop {\n display: none;\n }\n}\n\n/*****************************************/ \n/************* Footer ******************/ \n/*****************************************/ \n \n.footer-section {\n background-color: #f6f6f6;\n padding: 2rem 1rem;\n}\n\nfooter .footer-section ul {\n list-style-type: none !important;\n}\n\n.footer-section div>ul {\n display: grid;\n column-gap: 1rem;\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n\n.footer-section div>ul>li>ul>li {\n margin-bottom: 1rem;\n}\n\n.footer-section ul li a {\n color: #000;\n}\n\n.footer-section ul li a:hover {\n text-decoration: underline;\n}\n\n.below-footer a {\n color: #999999;\n text-decoration: none;\n}\n\n.below-footer a:hover {\n color: #000;\n}\n\n.below-footer p {\n display: flex;\n justify-content: space-around;\n}\n \n/*****************************************/ \n/********** Dark Mode ****************/ \n/*****************************************/ \n\n[data-color-mode=\"dark\"] .Header-logo-img3YvV4lcGKkeb {\n filter: invert(100%);\n}\n\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link.active {\n background: #fff !important;\n color: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link.active i {\n color: #0d0d0d !important;\n opacity: 1 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link {\n background: none !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link:hover {\n background: #1e2021 !important;\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link {\n color: #fff;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a {\n padding: 8px 16px !important;\n border: 1px solid #66f !important;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a:nth-child(1) {\n border: 1px solid #66f;\n background: #0d0d0d !important;\n color: #66f !important;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a:nth-child(1):hover {\n background: #242e34 !important;\n}\n\n[data-color-mode=\"dark\"] .Button_primary:not(.Button_white_text) {\n color: #fff !important;\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a:nth-child(2) {\n background: #66f !important;\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-button {\n color: #f8f8f8 !important;\n border: none !important;\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-list {\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-list li a {\n color: #f8f8f8 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-list li a:hover {\n background: #1e2021 !important;\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] a.readmore {\n color: #4d4dff !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home svg path {\n fill: #4d4dff !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .button {\n border: 1px solid #4d4dff !important;\n background: #4d4dff !important;\n color: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .button:hover {\n border: 1px solid #4d4dff !important;\n background: #4d4dff !important;\n color: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.filters li {\n background: #1e2021 !important;\n border: 1px solid #1e2021 !important;\n color: #f8f8f8 !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.filters li.active {\n border: 1px solid #f8f8f8 !important;\n background: #f8f8f8 !important;\n color: #171417 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-SearchToggle {\n background-color: #171717 !important;\n border-color: #171717 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-SearchToggle-icon,\n[data-color-mode=\"dark\"] .rm-SearchToggle-placeholder,\n[data-color-mode=\"dark\"] .footer-section ul {\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg {\n background-color: #20292e;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg .tile,\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg .tile a,\n[data-color-mode=\"dark\"] .landing-page-home .tile .icon {\n background-color: #171717;\n border-color: #171717;\n color: #fff;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg .tile a {\n background-color: #141414;\n border-color: #fff;\n color: #fff;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container.tile-bg-alternate,\n[data-color-mode=\"dark\"] .footer-section {\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"dark\"] .landing-page-home ul.pills li a {\n background-color: #0d0d0d;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"dark\"] .landing-page-home .tiles.tiles-third ul.pills li a path {\n fill: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .footer-section path {\n fill: #fff;\n}\n\n[data-color-mode=\"dark\"] .footer-section ul li a {\n color: #757575;\n}\n \n[data-color-mode=\"dark\"] .below-footer p{\n color: #000 !important;\n}\n\n/*****************************************/ \n/*********** System Mode *************/ \n/*****************************************/ \n \n@media(prefers-color-scheme: dark) {\n[data-color-mode=\"system\"] {\n /* Common properties for system color mode */\n}\n\n[data-color-mode=\"system\"] .Button_primary:not(.Button_white_text) {\n color: #FFF !important;\n background: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .Header-logo-img3YvV4lcGKkeb {\n -webkit-filter: grayscale(1) invert(1);\n filter: grayscale(1) invert(1); \n}\n\n[data-color-mode=\"system\"] .rm-SearchToggle {\n background-color: #171717 !important;\n border-color: #171717 !important;\n}\n\n[data-color-mode=\"system\"] .rm-SearchToggle-icon,\n[data-color-mode=\"system\"] .rm-SearchToggle-placeholder,\n[data-color-mode=\"system\"] .footer-section ul {\n color: #fff !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg {\n background-color: #20292E;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile,\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile a,\n[data-color-mode=\"system\"] .landing-page-home .tile .icon {\n background-color: #171717;\n border-color: #171717;\n color: #fff;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile a {\n background-color: #141414;\n border-color: #fff;\n color: #fff;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container.tile-bg-alternate,\n[data-color-mode=\"system\"] .footer-section {\n background: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"system\"] .landing-page-home ul.pills li a {\n background-color: #0D0D0D;\n}\n\n[data-color-mode=\"system\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"system\"] .landing-page-home .tiles.tiles-third ul.pills li a path {\n fill: #fff !important;\n}\n\n[data-color-mode=\"system\"] .footer-section path {\n fill: #fff;\n}\n\n[data-color-mode=\"system\"] .footer-section ul li a {\n color: #757575;\n}\n\n/* Additional rules */\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a {\n padding: 8px 16px !important;\n border: 1px solid #66F !important;\n}\n\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a:nth-child(1) {\n border: 1px solid #66F;\n background: #0D0D0D !important;\n color: #66F !important;\n}\n\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a:nth-child(1):hover {\n background: #242E34 !important;\n}\n\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a:nth-child(2) {\n background: #66F !important;\n color: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-button,\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-list,\n[data-color-mode=\"system\"] .landing-page-home ul.filters li {\n background: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-button,\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-list li a,\n[data-color-mode=\"system\"] .rm-Header-bottom-link,\n[data-color-mode=\"system\"] a.readmore {\n color: #F8F8F8 !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom-link:hover,\n[data-color-mode=\"system\"] .landing-page-home ul.filters li.active {\n background: #1E2021 !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom-link.active {\n background: #FFF !important;\n color: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom-link.active i {\n color: #0D0D0D !important;\n opacity: 1 !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile .icon,\n[data-color-mode=\"system\"] .landing-page-home .button,\n[data-color-mode=\"system\"] .landing-page-home .button:hover {\n border: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .button,\n[data-color-mode=\"system\"] .landing-page-home .button:hover {\n background: #4D4DFF !important;\n color: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home svg path {\n fill: #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .below-footer p{\n color: #000 !important;\n} \n}\n\n/*****************************************/ \n/************** Interior ****************/ \n/*****************************************/ \n\n.rm-SearchModal .Tabs-listItem_active {\n -webkit-box-shadow: inset 0 -2px 0 currentcolor !important;\n box-shadow: inset 0 -2px 0 currentcolor !important;\n color: black !important;\n}\n\n.hub-is-home .rm-SearchToggle {display:none;}\n\n\n/* Guides Thumb Votes*/ \n.rm-Guides .PageThumbs-helpful {\n\tword-break: normal;\n overflow-wrap: normal;\n display: block;\n font-size: 10px;\n margin-bottom: 10px;\n padding: 5px;\n text-align: center;\n border-color: rgba(0, 0, 0, 0);\n}\n\n.rm-Guides .PageThumbs {\n display: table;\n margin: 0;\n padding: 0;\n position: absolute !important;\n top: 120px;\n margin-left: 665px;\n}\n\n.rm-Guides #content-head h1 {\n margin-bottom: 0;\n margin-top: 0;\n max-width: 600px;\n}\n\n.rm-Guides .PageThumbs-cta {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: space-evenly;\n -ms-flex-pack: space-evenly;\n justify-content: space-evenly;\n padding-left: 0;\n}\n\n.rm-Guides .PageThumbs-button {\n padding:0; \n}\n\n.rm-Guides .content-body {\n padding-top: 35px !important;\n}\n\n.headline-container_basic1DFntTggitfX {\n border-bottom: 0;\n margin-bottom: 30px;\n padding-bottom: 30px;\n}\n\n.Button_secondary_text {\n background: rgba(0, 0, 0, 0);\n -webkit-box-shadow: none;\n box-shadow: none;\n color: #4f5a66;\n font-size: 11px;\n}\n\n.icon-thumbs-up-2:before {\n content: \"\\ea39\";\n font-size: 15px;\n}\n\n.icon-thumbs-down1:before {\n content: \"\\ea47\";\n font-size: 15px;\n}\n\n/* Ref Thumb Votes\n#Explorer .PageThumbs-helpful {\n\tword-break: normal;\n overflow-wrap: normal;\n display: block;\n font-size: 10px;\n margin-bottom: 10px;\n padding: 5px;\n text-align: center;\n border-color: rgba(0, 0, 0, 0);\n}\n\n#Explorer .PageThumbs {\n\t\tdisplay: table;\n margin: 0;\n padding: 0;\n position: absolute !important;\n top: 105px;\n margin-left: 495px;\n}\n\n#Explorer #content-head h1 {\n margin-bottom: 0;\n margin-top: 0;\n max-width: 600px;\n}\n\n#Explorer .PageThumbs-cta {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: space-evenly;\n -ms-flex-pack: space-evenly;\n justify-content: space-evenly;\n padding-left: 0;\n}\n\n#Explorer .PageThumbs-button {\n padding:0; \n}\n\n#Explorer .content-body {\n padding-top: 35px !important;\n}\n*/ \n.removeLogoutLink {\n outline: none !important;\n border: none !important;\n box-shadow: none !important;\n cursor: initial !important;\n}\n\n.rm-Flyout {\n background: #FFFFFF !important;\n}\n\n.Header-right21PC2XTT6aMg a {\n padding: 8px 16px !important;\n border: 1px solid #3333FF !important;\n}\n\n.Header-right21PC2XTT6aMg a:nth-child(1) {\n color: #3333FF !important;\n}\n\n.Header-right21PC2XTT6aMg a:nth-child(2) {\n background: #3333FF !important;\n color: #FFF !important;\n}\n\n.Header-right21PC2XTT6aMg a:first-child:hover {\n background: #F2EEFB !important\n}\n\n.Header-right21PC2XTT6aMg a:nth-child(2):hover {\n background: #1C1F9F !important;\n color: #FFF !important;\n}\n\n/* Content */\n\n.rm-Guides #content-head {\n border-bottom: none !important;\n padding-bottom: 0 !important;\n}\n\n.rm-PlaygroundRequest button {\n color: #FFF !important;\n}\n\n/* Alerts and Callouts */\n\n.callout.callout {\n padding: 1.5rem !important;\n border-radius: 12px !important;\n}\n\n.field-description blockquote,\n.markdown-body blockquote {\n border: none !important;\n}\n\n.callout.callout .callout-heading.empty .callout-icon {\n margin-left: 0 !important;\n\n}\n\n.callout.callout .callout-heading.empty {\n margin-left: 0 !important;\n}\n\n.tabbed-content {\n display: grid;\n column-gap: 1.25rem;\n row-gap: 1.25rem;\n max-width: 99%;\n}\n\n@media only screen and (min-width: 48em) {\n .tabbed-content {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n}\n\n@media only screen and (min-width: 64em) {\n .tabbed-content {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n}\n\n.tabbed-content .tabbed-tile {\n box-shadow: 0px 0px 8px 0px rgba(23, 20, 23, 0.10) !important;\n background-color: #FFFFFF;\n padding: 20px;\n border-radius: 12px;\n display: none;\n}\n\n@media only screen and (min-width: 48em) {\n .tabbed-content .tabbed-tile {\n padding: 20px;\n }\n}\n\n\n@media only screen and (min-width: 64em) {\n .tabbed-content .tabbed-tile {\n padding: 20px;\n }\n}\n\n.tabbed-content .tabbed-tile.active {\n display: block;\n}\n\n.tabbed-content .tabbed-tile .svg-container {\n height: 44px;\n width: 44px;\n padding: 8px;\n display: flex;\n border-radius: 12px;\n background-color: #EFF4FE !important;\n margin-bottom: 16px;\n flex-wrap: wrap;\n align-content: center;\n justify-content: center;\n}\n\n.tabbed-content .tabbed-tile .svg-container img {\n margin-left: 0;\n margin-right: 0;\n max-width: 24px;\n max-height: 24px;\n filter: invert(10%) sepia(74%) saturate(6495%) hue-rotate(246deg) brightness(135%) contrast(104%);\n}\n\n@media only screen and (min-width: 48em) {\n .tabbed-content .tabbed-tile p {\n min-height: 75px;\n }\n}\n\n.tabbed-content img,\n.tabbed-content svg {\n max-width: 40px;\n height: auto;\n}\n\n.tabbed-content h3 {\n margin: 0 0 1rem;\n}\n\n.tabbed-content p:last-child {\n margin: 0;\n}\n\n.tabbed-content a {\n text-decoration: none !important;\n}\n\n.tabbed-content a:hover {\n text-decoration: underline !important;\n}\n\n/* Tokens & Icons */\n\nul.tokens {\n list-style: none;\n display: flex;\n margin-top: 22px;\n flex-wrap: wrap;\n padding-left: 0 !important;\n}\n\nul.tokens li {\n margin-top: 0;\n}\n\nul.tokens li a {\n color: #171417;\n text-align: center;\n border-radius: 50px;\n border: 1px solid #B3B0B1;\n background-color: #F3F3F3 !important;\n padding: 8px 12px;\n margin-top: 0;\n margin-right: 0.5rem;\n font-size: 12px;\n margin-bottom: 0.5rem;\n display: inline-block;\n text-decoration: none !important;\n}\n\nul.tokens li a:hover {\n background-color: #E0DDDE !important;\n color: #171417;\n text-decoration: none !important;\n}\n\nul.tokens li a:active {\n background-color: #e7e7ff !important;\n}\n\n/* TOC List */\n\nnav ul.toc-list li a.tocHeader,\nnav ul.toc-list li a.tocHeader i {\n color: #3AC1AF !important;\n}\n\nnav ul.toc-list li.toc-children {\n border-left: 1px solid #3333FF;\n}\n\nnav ul.toc-list li.toc-children ul li.active>a {\n color: #3333FF;\n}\n\n.rm-Sidebar {\n box-shadow: none !important;\n -webkit-box-shadow: none !important;\n margin-top: 3px !important;\n}\n\n.rm-Sidebar-section {\n margin-top: 8px !important;\n margin-bottom: 0 !important;\n}\n\n.rm-Sidebar-section h2 {\n padding: 12px 20px !important;\n margin: 0 !important;\n line-height: 1 !important;\n}\n\n.rm-Sidebar-heading {\n font-weight: 500 !important;\n margin: 0 0 8px !important;\n}\n\n.rm-Sidebar-heading,\n.rm-Sidebar-link {\n font-size: 16px !important;\n line-height: 24px !important;\n text-transform: none !important;\n padding-left: 20px !important;\n position: relative !important;\n}\n\n.icon-arrow-up-right {\n position: absolute !important;\n bottom: 4px !important;\n right: 15px !important;\n}\n\n.rm-Sidebar-list {\n padding-left: 22px !important;\n}\n\n.rm-Sidebar-list .rm-Sidebar-list {\n padding-left: 5px !important;\n}\n\n.rm-Sidebar-list.subpages:last-child {\n margin-bottom: 8px !important;\n}\n\nul.subpages li a.subpage {\n margin-left: 0 !important;\n\n}\n\n.rm-Sidebar-link {\n display: flex !important;\n padding-left: 6px !important;\n padding-right: 6px !important;\n padding-top: 6px !important;\n padding-bottom: 6px !important;\n margin: 0 !important;\n}\n\n.rm-Sidebar-link:hover {\n background: none !important;\n}\n\n.rm-Sidebar-link span span {\n border-bottom: 1px solid transparent !important;\n}\n\n.rm-Sidebar-link:hover span span {\n border-bottom: 1px solid #000 !important;\n}\n\n\n.rm-Sidebar-link.active,\n.rm-Sidebar-link:active {\n background: none !important;\n color: #3333FF !important;\n\n}\n\n.rm-Sidebar-link.active:hover span span {\n border-bottom: 1px solid transparent !important;\n}\n\n.Sidebar-link-buttonWrapper3hnFHNku8_BJ {\n margin-left: 0px !important;\n}\n\n/* Collapsible sidebar navigation */\n.rm-Sidebar-heading {\n cursor: pointer;\n position: relative;\n}\n\n.rm-Sidebar-heading.section-expanded {\n border-radius: 4px;\n background: var(--secondary-brand-secondary-1, #F2EEFB);\n box-shadow: 2px 0px 0px 0px #686DF3 inset;\n}\n\n.rm-Sidebar-section .subnav-expanded>a {\n color: #33f !important;\n}\n\n.rm-Sidebar-heading.section-expanded .icon-chevron {\n transform: rotate(90deg);\n margin-top:1px;\n}\n\n.rm-Sidebar-heading .icon-chevron {\n transition: transform 0.2s;\n position: absolute;\n top: 12px;\n color: #7C7C7C;\n font-size: 16px;\n opacity: 1;\n margin-left: 4px;\n}\n\n.reference-redesign .Sidebar-link-textLuTE1ySm4Kqn {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n flex-direction: row-reverse;\n}\n\n.reference-redesign .Sidebar-link-buttonWrapper3hnFHNku8_BJ {\n background: none;\n border: 0;\n color: inherit;\n display: inherit;\n padding:10px !important;\n\n}\n\n.rm-Sidebar-heading .icon-chevron::before {\n content: \"\\ea10\" !important;\n}\n\n.rm-Sidebar-section>.rm-Sidebar-list {\n display: none !important;\n}\n\n.rm-Sidebar-list.section-list-expanded {\n display: flex !important;\n /* Footer */\n}\n\n.footer-section {\n background-color: #F6F6F6;\n padding: 2rem 1rem;\n}\n\n.footer-section ul.footer-links__block-list {\n padding-left: 0;\n}\n\n.footer-section div>ul {\n display: grid;\n column-gap: 1rem;\n list-style: none;\n padding-left: 0;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n@media only screen and (min-width: 48em) {\n .footer-section div>ul {\n \n \n \n \n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n}\n\n.footer-section div>ul>li>ul>li {\n margin-bottom: 1rem;\n list-style: none;\n}\n\n.footer-section ul li a {\n color: #000;\n}\n\n.footer-section ul li a:hover {\n text-decoration: underline;\n}\n\n\n.below-footer a {\n color: #999999;\n text-decoration: none;\n}\n\n.below-footer a:hover {\n color: #000;\n}\n\n.below-footer p {\n display: flex;\n justify-content: space-around;\n}\n\n/*****************************************/ \n/********* Dark Mode NON-LANDING ********/ \n/*****************************************/ \n\n[data-color-mode=\"dark\"] .rm-Sidebar-section .subnav-expanded>a {\n background: #1E2021 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Sidebar-heading.section-expanded {\n border-radius: 4px;\n background: #171717;\n box-shadow: 2px 0px 0px 0px #686DF3 inset;\n color: #FFF !important;\n}\n\n[data-color-mode=\"dark\"] .tabbed-content .tabbed-tile {\n background: #171717 !important;\n border: none !important;\n}\n\n[data-color-mode=\"dark\"] .tabbed-content .tabbed-tile .svg-container {\n background: #171717 !important;\n}\n\n[data-color-mode=\"dark\"] nav ul.toc-list li.toc-children {\n border-left: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"dark\"] nav ul.toc-list li.toc-children ul li.active>a {\n color: #4D4DFF !important;\n}\n\n[data-color-mode=dark] ul.tokens li a {\n background: #171417 !important;\n}\n\n/*****************************************/ \n/******* System Mode NON-LANDING ********/ \n/*****************************************/ \n\n@media(prefers-color-scheme: dark) {\n\n[data-color-mode=\"system\"] .rm-Flyout {\n filter: invert(1);\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-heading.section-expanded {\n border-radius: 4px;\n background: #171717;\n box-shadow: 2px 0px 0px 0px #686DF3 inset;\n color: #FFF !important;\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-section .subnav-expanded>a {\n background: #1E2021 !important;\n}\n\n[data-color-mode=\"system\"] .tabbed-content .tabbed-tile {\n background: #171717 !important;\n border: none !important;\n}\n\n[data-color-mode=\"system\"] .tabbed-content .tabbed-tile .svg-container {\n background: #171717 !important;\n}\n\n[data-color-mode=\"system\"] nav ul.toc-list li.toc-children {\n border-left: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] nav ul.toc-list li.toc-children ul li.active>a {\n color: #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-link.active,\n[data-color-mode=\"auto\"] .rm-Sidebar-link:active {\n background-color: none !important;\n color: #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-link:hover span span {\n border-bottom: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] ul.tokens li a {\n background: #171417 !important;\n}\n\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"//Dark Mode Hack\n$(window).on('pageLoad', function(e, state) {\n console.log(\"Page Loaded!\");\n // Counter to track the number of intervals\n let intervalCount = 0;\n\n // Function to check and perform theme toggle behavior if the data-color-mode is set to \"system\"\n const checkAndToggleTheme = () => {\n // Get the current color mode\n var currentMode = document.documentElement.getAttribute('data-color-mode');\n\n console.log('Current color mode:', currentMode);\n\n // Check if the current mode is \"system\"\n if (currentMode === 'system') {\n console.log('System mode detected. Performing theme toggle behavior.');\n\n // Find the theme toggle button by aria-label\n const lightToggleButton = document.querySelector('[aria-label=\"Toggle to light mode\"]');\n\n if (lightToggleButton) {\n // Click the \"Light\" toggle button\n lightToggleButton.click();\n } else {\n console.log('Light mode toggle button not found.');\n }\n } else {\n console.log('Theme toggle behavior not performed because the color mode is not \"system\".');\n }\n\n // Increment intervalCount\n intervalCount++;\n\n // Check if intervalCount reaches 2, then stop further execution\n if (intervalCount >= 2) {\n clearInterval(intervalId);\n }\n };\n\n // Call the function to check and toggle the theme initially\n checkAndToggleTheme();\n\n // Set interval to repeatedly call checkAndToggleTheme every 1100 milliseconds\n const intervalId = setInterval(checkAndToggleTheme, 200);\n});\n\n\n// START - Custom Project Dropdown\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n setTimeout(function () {\n // Create a flag to check if the dropdown has already been inserted\n var dropdownInserted = false;\n\n // Find all elements with a class that starts with \"Header-bottom\" \n var headerBottomElements = document.querySelectorAll('[class^=\"Header-bottom\"] nav');\n\n // Define a mapping of URL paths to section names\n var pathToSectionMap = {\n \"/data-products\": \"Data Products\",\n \"/campaign-products\": \"Campaign Products\",\n \"/analytics-products\": \"Analytics Products\",\n \"/developer\": \"Developer\"\n };\n \n // Function to get the section name based on the current URL\n function getSectionName() {\n var currentPath = window.location.pathname.toLowerCase();\n for (var path in pathToSectionMap) {\n if (currentPath.indexOf(path) !== -1) {\n return pathToSectionMap[path];\n }\n }\n return \"Choose Product\";\n }\n\n // Loop through the matched elements\n headerBottomElements.forEach(function (navElement) {\n // Check if the current element is within an element with the class \"Dropdown\"\n if (!navElement.closest('.Dropdown')) {\n // If not, insert the clickable dropdown at the very beginning of this element\n\n // Create a new dropdown element\n var dropdown = document.createElement(\"div\");\n dropdown.classList.add(\"Dropdown\"); // You can define your CSS styles for the dropdown here\n\n // Create a button for the clickable dropdown\n var dropdownButton = document.createElement(\"button\");\n dropdownButton.classList.add(\"Dropdown-button\");\n\n // Get the section name based on the current URL\n var sectionName = getSectionName();\n\n // Set the dropdown button text\n dropdownButton.textContent = sectionName + \" ▾\";\n dropdown.appendChild(dropdownButton);\n\n // Create a list for the dropdown items\n var dropdownList = document.createElement(\"ul\");\n dropdownList.classList.add(\"Dropdown-list\"); // You can define your CSS styles for the dropdown list here\n\n // Define the items and their URLs\n var items = [\n { text: \"Data Products\", url: \"/data-products\" },\n { text: \"Campaign Products\", url: \"/campaign-products\" },\n { text: \"Analytics Products\", url: \"/analytics-products\" },\n { text: \"Developer\", url: \"/developer\" },\n ];\n\n // Filter out the active item from the list\n var activeSection = sectionName.toLowerCase();\n items = items.filter(function (item) {\n return item.text.toLowerCase() !== activeSection;\n });\n\n // Create list items and links for each item\n items.forEach(function (item) {\n var listItem = document.createElement(\"li\");\n var link = document.createElement(\"a\");\n link.setAttribute(\"href\", item.url);\n link.textContent = item.text;\n listItem.appendChild(link);\n dropdownList.appendChild(listItem);\n });\n\n // Append the dropdown list to the dropdown element\n dropdown.appendChild(dropdownList);\n\n // Insert the clickable dropdown at the very beginning of this element\n navElement.insertBefore(dropdown, navElement.firstChild);\n\n // Add a click event listener to toggle the visibility of the dropdown\n dropdownButton.addEventListener(\"click\", function () {\n dropdownList.classList.toggle(\"active\");\n });\n }\n });\n\n// Inject the styles into the document's head\nvar styleElement = document.createElement(\"style\");\nstyleElement.textContent = `\n/* Define CSS styles for the dropdown and its button */\n.rm-Header-bottom .Dropdown {position: relative;display: inline-block;z-index: 9999;}\n.rm-Header-bottom .Dropdown-button {background-color: transparent;cursor: pointer;font-weight: bold;font-size: 1em;color: #333;border: 1px solid #e8e8e8;padding: 6px 10px;border-radius: 8px;}\n.rm-Header-bottom .Dropdown-list {position: absolute;display: none;background-color: #fff;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);list-style: none;margin: 0;padding: 0;min-width: 125px;}\n.rm-Header-bottom ul.Dropdown-list {border-radius: 2px 2px 10px 10px;}\n.Dropdown-list li {padding: 3px 5px;text-align: left;}\n.Dropdown-button {cursor: pointer;}\n.Dropdown-list.active {display: block;}\n.Dropdown-list a {text-decoration: none;color: #333;display: block;padding: 7px;width: 145px;}\n.Dropdown-list a:hover {background-color: #f2f2f2;}\n.Header-leftADQdGVqx1wqU, .Header-bottom2eLKOFXMEmh5 {overflow: visible !important;}\n `;\n\n // Append the style element to the document's head\n document.head.appendChild(styleElement);\n }, 800); // delay\n}); \n// END - Custom Project Dropdown\n\n// START - Login Link\n$(window).on(\"pageLoad\", function (e, state) {\n const link = document.querySelector(\n \".rm-Header-top-link_login.Button_primary\"\n );\n\n if (link) {\n link.href = \"https://foursquare.com/developers/login\";\n }\n});\n// END - Login Link\n\n//-------------------------------------------------------\n\n// START - Logged in dev console link\nwindow.addEventListener(\"load\", function () {\n const header = document.querySelector(\".rm-Header-top-link_login\");\n const logoutWrapper = header.children[0];\n\n if (logoutWrapper === undefined) return;\n\n logoutWrapper.addEventListener(\"click\", function () {\n setTimeout(() => {\n const logoutDiv = document.querySelector(\n \".tippy-content > div > div > div\"\n );\n\n if (logoutDiv) {\n let logoutLink;\n if (window.hasDeveloperConsoleLink) {\n logoutLink = logoutDiv.children[1];\n } else {\n logoutLink = logoutDiv.children[0];\n }\n logoutLink.href = \"https://foursquare.com/developers/home\";\n logoutLink.target = \"_blank\";\n logoutLink.rel = \"noopener noreferrer\";\n logoutLink.textContent = \"Developer Console\";\n }\n }, \"25\");\n });\n});\n// END - Logged out dev console link\n\n//-------------------------------------------------------\n\n// START - Custom Search Popup\n$(window).on('pageLoad', function(e, state) {\n setTimeout(function() {\n const openSearchPopup = () => {\n const cmsSearchButton = document.querySelector('.rm-SearchToggle');\n if (cmsSearchButton) {\n cmsSearchButton.click();\n }\n };\n\n const triggerSearchButton = document.getElementsByClassName(\"landing-page-trigger-search-button\")[0];\n if (triggerSearchButton) {\n triggerSearchButton.addEventListener(\"click\", openSearchPopup);\n }\n }, 700);\n});\n\n\n\n// END - Custom Search Popup\n \n//-------------------------------------------------------\n\n// START - Tile Filters for Homepage\n// List of allowed URLs\nconst allowedUrls = [\n \"https://docs.foursquare.com/\",\n \"https://docs.foursquare.com/campaign-products\",\n \"https://docs.foursquare.com/data-products\",\n \"https://docs.foursquare.com/analytics-products\",\n \"https://docs.foursquare.com/developer\"\n];\n\n// Check if the current URL is in the allowed list\nif (allowedUrls.includes(window.location.href)) {\n \n // START - Tile Filters for Homepage\n document.addEventListener(\"DOMContentLoaded\", function () {\n let counter = 0; // Initialize counter variable\n\n const intervalId = setInterval(function () {\n console.log(\"Function loaded v2.0\");\n\n // Your filtering logic function\n function filterSections(event) {\n if (!event.target.classList.contains(\"filter-item\")) return;\n\n const filterValues = event.target.textContent.toLowerCase();\n let filterValue = filterValues.split(\" \")[0];\n console.log(filterValue);\n\n const filter = document.getElementById(\"tileFilter\");\n const sections = document.querySelectorAll(\".section-item\");\n\n // Remove active class from all filter items\n filter.querySelectorAll(\".filter-item\").forEach((li) => {\n li.classList.remove(\"active\");\n });\n\n // Add active class to clicked filter item\n event.target.classList.add(\"active\");\n\n sections.forEach((section) => {\n if (\n filterValue === \"all\" ||\n filterValue === \"view\" ||\n filterValue === \"view all\" ||\n section.classList.contains(filterValue)\n ) {\n section.style.display = \"block\";\n } else {\n section.style.display = \"none\";\n }\n });\n\n // Increment counter\n counter++;\n console.log(`Counter: ${counter}`);\n }\n\n // Attach the event listener directly to the filter element\n const filter = document.getElementById(\"tileFilter\");\n if (filter) {\n filter.addEventListener(\"click\", filterSections);\n\n // Clear interval after setting up the event listener to avoid multiple attachments\n clearInterval(intervalId);\n console.log(\"Event listener attached and interval cleared.\");\n }\n }, 1000);\n });\n // END - Tile Filters for Homepage\n}\n\n//-------------------------------------------------------\n\n// START - Change ALL code tabs on page if code type is selected\n$(window).on(\"pageLoad\", function (e, state) {\n document.querySelectorAll(\".CodeTabs-toolbar button\").forEach((item) => {\n item.addEventListener(\"click\", updateCodeTabs);\n });\n\n console.log(\"v7\");\n //$('#signindrop').appendTo('ul#header-nav-left > li');\n //$('#signindrop').appendTo(\".Header-leftADQdGVqx1wqU\");\n //$('#supportdrop').appendTo('ul#header-nav-right > li');\n});\n\nfunction updateCodeTabs(e) {\n if (e.isTrusted) {\n //console.log(\"Clicked\");\n //console.log(e);\n //const activeTabTitle = i.innerHTML;\n const activeTabTitle = e.srcElement.innerText;\n //console.log(\"Title:\", activeTabTitle);\n document.querySelectorAll(\".CodeTabs-toolbar button\").forEach((item) => {\n if (item.innerHTML == activeTabTitle) {\n item.click();\n }\n });\n }\n}\n// END - Change ALL code tabs on page if code type is selected\n\n//-------------------------------------------------------\n\n// START - TOC List highlighting\n$(window).on(\"pageLoad\", function (e, state) {\n var tocList = document.querySelector(\".toc-list li\");\n if (tocList !== null) {\n document.querySelector(\".toc-list li\").innerHTML =\n '';\n }\n $(\".toc-children > ul > li:first-child\").addClass(\"active\");\n\n const spyScrolling = () => {\n const sections = document.querySelectorAll(\".heading-anchor[id]\");\n\n window.onscroll = () => {\n const scrollPos =\n document.documentElement.scrollTop || document.body.scrollTop;\n\n for (let s in sections)\n if (\n sections.hasOwnProperty(s) &&\n sections[s].parentNode.offsetTop <= scrollPos\n ) {\n const id = sections[s].id;\n\n document\n .querySelector(\"ul.toc-list li.active\")\n .classList.remove(\"active\");\n document\n .querySelector(\n 'ul.toc-list li.toc-children ul li a[href=\"#' + id + '\"]'\n )\n .parentNode.classList.add(\"active\");\n }\n };\n };\n\n spyScrolling();\n});\n// END - TOC List highlighting\n\n//-------------------------------------------------------\n\n// START - Collapse Left Navigation\n$(window).on(\"pageLoad\", function (e, state) {\n function initializeSidebar() {\n // Collapse navigation in the sidebar initially\n $(\".rm-Sidebar-section > .rm-Sidebar-list\").addClass(\"section-collapsed\");\n $(\".rm-Sidebar-heading\").append(\" \");\n\n // Expand the section if any sidebar link is active\n const activeLink = $(\".rm-Sidebar-link.active\");\n if (activeLink.length > 0) {\n activeLink.parents(\".rm-Sidebar-list\").addClass(\"section-list-expanded\");\n activeLink\n .parents(\".rm-Sidebar-section\")\n .children(\".rm-Sidebar-heading\")\n .addClass(\"section-expanded\");\n // Add a class to all sidebar items within expanded sections\n $(\".section-list-expanded .Sidebar-item23D-2Kd61_k3\").addClass(\n \"expanded-section-item\"\n );\n }\n\n // Fix issue with sub-items getting stuck expanded\n $(\".subpages\").removeClass(\"section-list-expanded\");\n\n // Auto-expand first category (for landing)\n // $('.rm-Sidebar-heading').first().next().addClass(\"section-list-expanded\");\n\n // Add tabindex attribute to each heading\n $(\".rm-Sidebar-heading\").attr(\"tabindex\", \"0\");\n\n // Unbind existing event handlers to prevent duplication\n $(\".rm-Sidebar-heading, .expand-trigger\").off();\n\n // Handle keyboard navigation for Enter key\n $(document).on(\"keydown\", \".rm-Sidebar-heading\", function (e) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n $(this)\n .toggleClass(\"section-expanded\")\n .next()\n .toggleClass(\"section-list-expanded\");\n // Toggle the class for all sidebar items within expanded sections\n $(\".section-list-expanded .Sidebar-item23D-2Kd61_k3\").toggleClass(\n \"expanded-section-item\"\n );\n }\n });\n\n // Handle click events on sidebar headings\n $(\".rm-Sidebar-heading\").on(\"click\", function () {\n const isExpanded = $(this).hasClass(\"section-expanded\");\n // Remove only the class from the currently clicked section\n $(this)\n .toggleClass(\"section-expanded\")\n .next()\n .toggleClass(\"section-list-expanded\");\n // Toggle the class for all sidebar items within expanded sections\n $(\".section-list-expanded .Sidebar-item23D-2Kd61_k3\").toggleClass(\n \"expanded-section-item\"\n );\n });\n\n // Hide and toggle content for expand-trigger\n $(\".expand-content\").hide();\n $(\".expand-trigger\").on(\"click\", function () {\n const isHidden = $(\".expand-content\").toggle().is(\":hidden\");\n $(this)\n .find(\"span\")\n .text(isHidden ? \"Show\" : \"Hide\");\n });\n }\n\n // Call the initialize function\n initializeSidebar();\n});\n// END - Collapse Left Navigation\n\n//-------------------------------------------------------\n\n// START - Auto Select Response Dropdown\n//$(window).on(\"pageLoad\", function (e, state) {\n //const clickExample = () => {\n // const examples = document.querySelector(\n // \"[class^='APIResponse-menu-status']\"\n //);\n // if (examples) {\n // clearInterval(interval);\n // document.querySelector(\"[class^='APIResponse-menu-status']\").click();\n //}\n //};\n //const interval = setInterval(clickExample, 200);\n//});\n// END - Auto Select Response Dropdown\n\n//-------------------------------------------------------\n// START: Add Segment Tracking to Try It button\n// TODO: Verify this runs on route changes (UPDATED 11/14/2024 by ReadMe)\n$(window).on(\"load\", function(e, state) {\n // Call Segment Identify on all pages\n analytics.identify();\n\n function addTryItButtonEventListener(button) {\n button.addEventListener(\"click\", () => {\n console.log(\"Try It button Clicked (group)\");\n analytics.track(\"Try It button Clicked\");\n });\n }\n\n // Attempt to locate the button initially\n let tryItBtn = document.querySelector(\".rm-TryIt\");\n\n if (tryItBtn) {\n console.log(\"Try It button found initially.\");\n addTryItButtonEventListener(tryItBtn);\n } else {\n console.warn(\"Try It button not found on load. Setting up MutationObserver...\");\n\n // Set up a MutationObserver to watch for changes in the DOM\n const observer = new MutationObserver((mutations, obs) => {\n tryItBtn = document.querySelector(\".rm-TryIt\");\n if (tryItBtn) {\n console.log(\"Try It button found by MutationObserver.\");\n addTryItButtonEventListener(tryItBtn);\n obs.disconnect(); // Stop observing once the button is found\n }\n });\n\n // Start observing the document body for any added nodes\n observer.observe(document.body, { childList: true, subtree: true });\n }\n});\n\n// END: Add Segment Tracking to Try It button\n//-------------------------------------------------------\n\n$(window).on('pageLoad', function(e, state) {\n // Start the timeout\n setTimeout(function() {\n // Select all 'suggestEdits' links\n var editLinks = document.querySelectorAll('a.suggestEdits');\n\n // Function to modify the links\n function modifyLink(link) {\n link.addEventListener('click', function(event) {\n event.preventDefault(); // Prevent the default link behavior\n window.open(link.href, '_blank'); // Open in a new tab\n });\n link.target = '_blank'; // Ensure all links open in a new tab\n }\n\n // Apply the modifications to all 'suggestEdits' links\n editLinks.forEach(modifyLink);\n\n // Select all 'Log In' links using a more inclusive class identifier for login links\n var loginLinks = document.querySelectorAll('a[class*=\"rm-Header-top-link\"]');\n\n // Apply the modifications to all 'Log In' links\n loginLinks.forEach(modifyLink);\n }, 1000); // Delay of 1000 milliseconds (1 second)\n});","html_promo":"","html_body":"","html_footer":"","html_head":"\n\n\n\n\n\n \n\n\n\n\n\n\n","html_footer_meta":"","html_hidelinks":false,"showVersion":true,"hideTableOfContents":false,"nextStepsLabel":"","promos":[],"ai_dropdown":"disabled","ai_options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","view_as_markdown":"enabled","copilot":"enabled","perplexity":"enabled"},"showPageIcons":true,"layout":{"full_width":false,"style":"classic"}},"child":{"_id":"6606e9c5e8ce1f005276b057","appearance":{"changelog":{"layoutExpanded":false,"showAuthor":false,"showExactDate":true},"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"eeeeee","main_alt":"","header_text":"","body_highlight":"#3333FF","custom_login_link_color":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"style":"solid","img":[],"img_size":"auto","img_pos":"tl","linkStyle":"buttons"},"body":{"style":"none"},"global_landing_page":{"html":"","redirect":""},"allowApiExplorerJsonEditor":false,"referenceSimpleMode":true,"referenceLayout":"column","link_logo_to_url":true,"theme":"line","colorScheme":"light","overlay":"triangles","landing":true,"sticky":false,"hide_logo":true,"childrenAsPills":false,"subheaderStyle":"dropdown","splitReferenceDocs":true,"showMetricsInReference":false,"logo":["https://files.readme.io/af60d4b-small-395ef92-small-docs.png","af60d4b-small-395ef92-small-docs.png",324,40,"#000000","https://files.readme.io/99736b7-395ef92-small-docs.png","660acd14efe91e001fbe334d"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"favicon":["https://files.readme.io/8053e33-small-favicon.png","favicon.png",32,32,"#1c1c1c","https://files.readme.io/6735b58-favicon.png"],"stylesheet":"","stylesheet_hub2":"#ssr-main > div > header > div.Header-bottom2eLKOFXMEmh5.rm-Header-bottom > div > nav > div.Dropdown{\n display:none; \n}\n\n.icon-arrow-up-right:before {\n display:none;\n\n}\n\n.Sidebar-item23D-2Kd61_k3:last-child a[href=\"https://docs.foursquare.com/developer/reference/places-api-overview\"] .Sidebar-link-text_label1gCT_uPnx7Gu {\n color: red; /* Example */\n font-weight: bold;\n font-size:12px;\n}\n\n\n.Param1QyvwHroaCgH .Collapseda2tBtFifUAjo .Param1QyvwHroaCgH {\n display: block;\n}\n\n.Param1QyvwHroaCgH .Collapseda2tBtFifUAjo .Param-form1SoAutupIaz3 {\n margin-left: 10px;\n max-width: 100%;\n}\n\n\n/* Custom Console Doc Styles */\n@media (max-width: 768px){\nbody:not(.showSidebarFlyout) #hub-sidebar.Sidebar_flyout2qTF85usvHxB, body:not(.showSidebarFlyout) #reference-sidebar.Sidebar_flyout2qTF85usvHxB {\n display: none !important;\n}\n}\n\n.rm-Sidebar_guides .hub-sidebar-content > section:last-of-type > .Sidebar-headingTRQyOa2pk0gh {\n display: none !important;\n}\n\nli.Sidebar-item23D-2Kd61_k3.expanded-section-item a[href=\"/developer/docs/developer-console-overview\"] {\n /* Applying styles */\n border-radius: 4px;\n background: #F2EEFB !important;\n box-shadow: 2px 0 0 0 #686df3 inset;\n color: #4f5a66 !important;\n margin-left:-15px !important;\n font-weight:500;\n}\n\n\n.rm-Sidebar_guides {\n opacity: 0;\n animation: fadeIn 0s 1s forwards;\n}\n\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"document.addEventListener('DOMContentLoaded', () => {\n // Select all links in the header\n const headerLinks = document.querySelectorAll('.Header-leftADQdGVqx1wqU a');\n\n headerLinks.forEach(link => {\n const href = link.getAttribute('href');\n\n // Check if the href contains the versioned path (e.g., \"/developer/v20241206/\")\n if (href && href.includes('/developer/v')) {\n // Rewrite the URL by removing the versioned part\n const updatedHref = href.replace(/\\/developer\\/v\\d+\\//, '/developer/');\n link.setAttribute('href', updatedHref);\n }\n });\n});\n\n\n\n$(window).on(\"pageLoad\", function (e, state) {\n setTimeout(function () {\n // Check if there's an active link within the Developer Console section\n const isActiveDeveloperConsolePage =\n document.querySelector(\n \".Sidebar-listWrapper6Q9_yUrG906C .Sidebar-link2Dsha-r-GKh2.active\"\n ) !== null;\n\n if (isActiveDeveloperConsolePage) {\n const developerConsoleSection = Array.from(\n document.querySelectorAll(\n \".rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh\"\n )\n ).find(\n (heading) =>\n heading.textContent.includes(\"Developer Console\") &&\n heading.classList.contains(\"section-expanded\")\n )?.parentNode;\n\n if (developerConsoleSection) {\n document\n .querySelectorAll(\n \".rm-Sidebar_guides .Sidebar-listWrapper6Q9_yUrG906C\"\n )\n .forEach((section) => {\n section.style.display =\n section === developerConsoleSection ? \"\" : \"none\";\n section\n .querySelectorAll(\n \".Sidebar-item23D-2Kd61_k3, .subpages .Sidebar-item23D-2Kd61_k3\"\n )\n .forEach((item) => {\n item.style.display = \"\";\n });\n });\n\n const lastSectionHeading = document.querySelector(\n \".rm-Sidebar_guides .hub-sidebar-content > section:last-of-type > .Sidebar-headingTRQyOa2pk0gh\"\n );\n if (\n lastSectionHeading &&\n lastSectionHeading.textContent.includes(\"Developer Console\")\n ) {\n lastSectionHeading.style.display = \"block\";\n }\n\n // Call the function to duplicate navigation after a short delay to ensure the page is fully loaded\n setTimeout(function () {\n duplicateNavigation();\n }, 1); // Adjust the delay as needed\n }\n } else {\n\n // Hide the Developer Console section\n const developerConsoleSection = document.querySelector('.rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh');\n if (developerConsoleSection) {\n developerConsoleSection.parentNode.style.display = \"none\";\n }\n\n // Restore visibility of all other sidebar sections\n document\n .querySelectorAll(\".rm-Sidebar_guides .Sidebar-listWrapper6Q9_yUrG906C\")\n .forEach((section) => {\n section.style.display = \"\";\n });\n\n // Ensure that all section headings are visible\n document\n .querySelectorAll(\".rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh\")\n .forEach((heading) => {\n heading.style.display = \"block\"; // Or whatever the default should be\n });\n\n // Remove the 'active' class from the Console Docs link in the top navigation, if it was set\n const consoleDocsLink = document.querySelector(\n '.Header-bottom-link[href*=\"developer/docs/developer-console-overview\"]'\n );\n if (consoleDocsLink) {\n consoleDocsLink.classList.remove(\"active\");\n }\n\n // Add the 'active' class to the Console Docs link\n const newConsoleDocsLink = document.querySelector('.Header-bottom-link[href*=\"developer/docs/developer-console-overview\"]');\n if (newConsoleDocsLink) {\n newConsoleDocsLink.classList.add(\"active\");\n }\n }\n }, 10); // Adjust delay as needed\n});\n\n\n// Function to duplicate and insert the original navigation\nfunction duplicateNavigation() {\n // Get the original element to be duplicated\n var originalElement = document.querySelector(\n \".rm-Header-bottom\"\n );\n\n // Check if the original element exists\n if (originalElement) {\n // Clone the original element\n var clonedElement = originalElement.cloneNode(true);\n\n // Insert the cloned element directly after the original element\n originalElement.parentNode.insertBefore(\n clonedElement,\n originalElement.nextSibling\n );\n\n // Hide the original element\n originalElement.style.display = \"none\";\n\n // Remove 'active' class from navigation links below\n const navigationLinks = document.querySelectorAll('.Header-leftADQdGVqx1wqU a');\n navigationLinks.forEach(link => {\n link.classList.remove('active');\n });\n\n // Add the 'active' class to the first Console Docs link\n const consoleDocsLink = document.querySelectorAll('.rm-Header-link[href*=\"developer/docs/developer-console-overview\"]')[1];\n if (consoleDocsLink) {\n consoleDocsLink.classList.add(\"active\");\n console.log(\"Added Active to Console Docs Link\");\n }\n }\n}\n\n\n\n$(window).on('pageLoad', function(e, state) {\n if (state && state.params && state.params.slug === \"address-form-autofill\") {\n function localAddressAutoFillJs() {\n const fsqAPIToken = \"fsq3gM6Yqlox6l+EPn1ITXAlJxk5YaBFlQS5bKofN7ov5W8=\";\n let sessionToken = generateRandomSessionToken();\n const addressInput = document.getElementById(\"autofill-search\");\n const dropDownField = document.getElementById(\"autofill-dropdown\");\n const ulField = document.getElementById(\"autofill-suggestions\");\n const errorField = document.getElementById(\"autofill-error\");\n const notFoundField = document.getElementById(\"autofill-not-found\");\n const cityInput = document.getElementById(\"autofill-city\");\n const regionInput = document.getElementById(\"autofill-region\");\n const countryInput = document.getElementById(\"autofill-country\");\n const postcodeInput = document.getElementById(\"autofill-postcode\");\n const address2Input = document.getElementById(\"autofill-address2\");\n const form = document.getElementById(\"autofill-form\");\n const searchContainer = document.getElementById(\n \"autofill-search-container\"\n );\n\n form && form.addEventListener(\"submit\", preventFormSubmit, true);\n const onChangeAutoComplete = debounce(changeAutoComplete);\n addressInput &&\n addressInput.addEventListener(\"input\", onChangeAutoComplete);\n searchContainer &&\n searchContainer.addEventListener(\"focusin\", focusEventAutoComplete);\n searchContainer &&\n searchContainer.addEventListener(\"focusout\", focusEventAutoComplete);\n\n ulField && ulField.addEventListener(\"click\", selectItem);\n\n function focusEventAutoComplete(event) {\n if (event.type === \"focusin\" && event.target.value) {\n dropDownField.style.display = \"block\";\n } else if (\n event.type === \"focusout\" &&\n !event.currentTarget.contains(event.relatedTarget)\n ) {\n dropDownField.style.display = \"none\";\n }\n }\n\n function preventFormSubmit(event) {\n event.preventDefault();\n }\n\n function logError(err) {\n console.warn(`ERROR(${err.code}): ${err.message}`);\n }\n\n /* Generate a random string with 32 characters.\n Session Token is a user-generated token to identify a session for billing purposes.\n Learn more about session tokens.\n https://docs.foursquare.com/reference/session-tokens\n */\n function generateRandomSessionToken(length = 32) {\n let result = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n return result;\n }\n\n let isFetching = false;\n async function changeAutoComplete({ target }) {\n const { value: inputSearch = \"\" } = target;\n ulField.innerHTML = \"\";\n notFoundField.style.display = \"none\";\n errorField.style.display = \"none\";\n if (inputSearch.length && !isFetching) {\n try {\n isFetching = true;\n const results = await autoComplete(inputSearch);\n if (results && results.length) {\n results.forEach((value) => {\n addItem(value);\n });\n } else {\n notFoundField.innerHTML = `Foursquare can't\n find ${inputSearch}. Make sure your search is spelled correctly.`;\n notFoundField.style.display = \"block\";\n }\n } catch (err) {\n errorField.style.display = \"block\";\n logError(err);\n } finally {\n isFetching = false;\n dropDownField.style.display = \"block\";\n }\n } else {\n dropDownField.style.display = \"none\";\n }\n }\n\n async function autoComplete(query) {\n try {\n const searchParams = new URLSearchParams({\n query,\n types: \"address\",\n session_token: sessionToken,\n }).toString();\n const searchResults = await fetch(\n `https://api.foursquare.com/v3/autocomplete?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await searchResults.json();\n return data.results;\n } catch (error) {\n throw error;\n }\n }\n\n function addItem(value) {\n const { link } = value;\n if (!link) return;\n ulField.innerHTML += `\n ${highlightedNameElement(value.text)}
\n ${value.text.secondary}
\n `;\n }\n\n async function selectItem({ target }) {\n if (target.tagName === \"BUTTON\") {\n const link = target.dataset.object;\n const addressDetail = await fetchAddressDetails(link);\n const { location = {} } = addressDetail;\n const {\n address = \"\",\n country = \"\",\n postcode = \"\",\n locality = \"\",\n region = \"\",\n } = location;\n addressInput.value = address;\n address2Input.value = \"\";\n countryInput.value = country;\n postcodeInput.value = postcode;\n cityInput.value = locality;\n regionInput.value = region;\n // generate new session token after a complete search\n sessionToken = generateRandomSessionToken();\n\n address2Input && address2Input.focus();\n dropDownField.style.display = \"none\";\n }\n }\n\n async function fetchAddressDetails(link) {\n try {\n const results = await fetch(`https://api.foursquare.com${link}`, {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n });\n const data = await results.json();\n return data;\n } catch (err) {\n logError(err);\n }\n }\n\n function highlightedNameElement(textObject) {\n if (!textObject) return \"\";\n const { primary, highlight } = textObject;\n if (highlight && highlight.length) {\n let beginning = 0;\n let hightligtedWords = \"\";\n for (let i = 0; i < highlight.length; i++) {\n const { start, length } = highlight[i];\n hightligtedWords += primary.substr(beginning, start - beginning);\n hightligtedWords += \"\" + primary.substr(start, length) + \" \";\n beginning = start + length;\n }\n hightligtedWords += primary.substr(beginning);\n return hightligtedWords;\n }\n return primary;\n }\n\n function debounce(func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n }\n }\n\n localAddressAutoFillJs();\n }\n if (state && state.params && state.params.slug === \"local-search-map\") {\n function loadLocalMapSearchJs() {\n mapboxgl.accessToken =\n \"pk.eyJ1IjoiZm91cnNxdWFyZSIsImEiOiJjbDNqNXdrN20wN3JtM2JvMWFqZGxoaGljIn0.uSxJ2t7E96TrBFsn3cXT_g\";\n const fsqAPIToken = \"fsq3bgqdcpLAJFkodk8gisc2F+NenA7gK/zI97A9nKQAXIw=\";\n let userLat = 40.7128;\n let userLng = -74.006;\n let sessionToken = generateRandomSessionToken();\n const inputField = document.getElementById(\"explorer-search\");\n const dropDownField = document.getElementById(\"explorer-dropdown\");\n const ulField = document.getElementById(\"explorer-suggestions\");\n const errorField = document.getElementById(\"explorer-error\");\n const notFoundField = document.getElementById(\"explorer-not-found\");\n\n const onChangeAutoComplete = debounce(changeAutoComplete);\n inputField.addEventListener(\"input\", onChangeAutoComplete);\n ulField.addEventListener(\"click\", selectItem);\n\n function success(pos) {\n const { latitude, longitude } = pos.coords;\n userLat = latitude;\n userLng = longitude;\n flyToLocation(userLat, userLng);\n }\n\n function logError(err) {\n console.warn(`ERROR(${err.code}): ${err.message}`);\n }\n\n navigator.geolocation.getCurrentPosition(success, logError, {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n });\n\n const map = new mapboxgl.Map({\n container: \"map\",\n style: \"mapbox://styles/mapbox/light-v10\",\n center: [userLng, userLat],\n zoom: 12,\n });\n\n map.addControl(new mapboxgl.GeolocateControl());\n map.addControl(new mapboxgl.NavigationControl());\n\n let currentMarker;\n\n /* Generate a random string with 32 characters.\n Session Token is a user-generated token to identify a session for billing purposes.\n Learn more about session tokens.\n https://docs.foursquare.com/reference/session-tokens\n */\n function generateRandomSessionToken(length = 32) {\n let result = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n return result;\n }\n\n let isFetching = false;\n async function changeAutoComplete({ target }) {\n const { value: inputSearch = \"\" } = target;\n ulField.innerHTML = \"\";\n notFoundField.style.display = \"none\";\n errorField.style.display = \"none\";\n if (inputSearch.length && !isFetching) {\n try {\n isFetching = true;\n const results = await autoComplete(inputSearch);\n if (results && results.length) {\n results.forEach((value) => {\n addItem(value);\n });\n } else {\n notFoundField.innerHTML = `Foursquare can't\n find ${inputSearch}. Make sure your search is spelled correctly.\n Don't see the place you're looking for? .`;\n notFoundField.style.display = \"block\";\n }\n } catch (err) {\n errorField.style.display = \"block\";\n logError(err);\n } finally {\n isFetching = false;\n dropDownField.style.display = \"block\";\n }\n } else {\n dropDownField.style.display = \"none\";\n }\n }\n\n async function autoComplete(query) {\n const { lng, lat } = map.getCenter();\n userLat = lat;\n userLng = lng;\n try {\n const searchParams = new URLSearchParams({\n query,\n types: \"place\",\n ll: `${userLat},${userLng}`,\n radius: 50000,\n session_token: sessionToken,\n }).toString();\n const searchResults = await fetch(\n `https://api.foursquare.com/v3/autocomplete?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await searchResults.json();\n return data.results;\n } catch (error) {\n throw error;\n }\n }\n\n function addItem(value) {\n const placeDetail = value[value.type];\n if (!placeDetail || !placeDetail.geocodes || !placeDetail.geocodes.main)\n return;\n const { latitude, longitude } = placeDetail.geocodes.main;\n const fsqId = placeDetail.fsq_id;\n const dataObject = JSON.stringify({ latitude, longitude, fsqId });\n ulField.innerHTML += `\n ${highlightedNameElement(value.text)}
\n ${value.text.secondary}
\n `;\n }\n\n async function selectItem({ target }) {\n if (target.tagName === \"LI\") {\n const valueObject = JSON.parse(target.dataset.object);\n const { latitude, longitude, fsqId } = valueObject;\n const placeDetail = await fetchPlacesDetails(fsqId);\n addMarkerAndPopup(latitude, longitude, placeDetail);\n flyToLocation(latitude, longitude);\n\n // generate new session token after a complete search\n sessionToken = generateRandomSessionToken();\n const name = target.dataset.name;\n inputField.value = target.children[0].textContent;\n dropDownField.style.display = \"none\";\n }\n }\n\n async function fetchPlacesDetails(fsqId) {\n try {\n const searchParams = new URLSearchParams({\n fields: \"fsq_id,name,geocodes,location,photos,rating\",\n session_token: sessionToken,\n }).toString();\n const results = await fetch(\n `https://api.foursquare.com/v3/places/${fsqId}?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await results.json();\n return data;\n } catch (err) {\n logError(err);\n }\n }\n\n function createPopup(placeDetail) {\n const { location = {}, name = \"\", photos = [], rating } = placeDetail;\n let photoUrl = \"https://files.readme.io/c163d6e-placeholder.svg\";\n if (photos.length && photos[0]) {\n photoUrl = `${photos[0].prefix}56${photos[0].suffix}`;\n }\n const popupHTML = ``;\n\n const markerHeight = 35;\n const markerRadius = 14;\n const linearOffset = 8;\n const verticalOffset = 8;\n const popupOffsets = {\n top: [0, verticalOffset],\n \"top-left\": [0, verticalOffset],\n \"top-right\": [0, verticalOffset],\n bottom: [0, -(markerHeight + verticalOffset)],\n \"bottom-left\": [\n 0,\n (markerHeight + verticalOffset - markerRadius + linearOffset) * -1,\n ],\n \"bottom-right\": [\n 0,\n (markerHeight + verticalOffset - markerRadius + linearOffset) * -1,\n ],\n left: [\n markerRadius + linearOffset,\n (markerHeight - markerRadius) * -1,\n ],\n right: [\n -(markerRadius + linearOffset),\n (markerHeight - markerRadius) * -1,\n ],\n };\n return new mapboxgl.Popup({\n offset: popupOffsets,\n closeButton: false,\n }).setHTML(popupHTML);\n }\n\n function addMarkerAndPopup(lat, lng, placeDetail) {\n if (currentMarker) currentMarker.remove();\n currentMarker = new mapboxgl.Marker({\n color: \"#3333FF\",\n })\n .setLngLat([lng, lat])\n .setPopup(createPopup(placeDetail))\n .addTo(map);\n\n currentMarker.togglePopup();\n }\n\n function flyToLocation(lat, lng) {\n map.flyTo({\n center: [lng, lat],\n });\n }\n\n function highlightedNameElement(textObject) {\n if (!textObject) return \"\";\n const { primary, highlight } = textObject;\n if (highlight && highlight.length) {\n let beginning = 0;\n let hightligtedWords = \"\";\n for (let i = 0; i < highlight.length; i++) {\n const { start, length } = highlight[i];\n hightligtedWords += primary.substr(beginning, start - beginning);\n hightligtedWords += \"\" + primary.substr(start, length) + \" \";\n beginning = start + length;\n }\n hightligtedWords += primary.substr(beginning);\n return hightligtedWords;\n }\n return primary;\n }\n\n function debounce(func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n }\n }\n\n loadLocalMapSearchJs();\n }\n});\n\n$(window).on(\"pageLoad\", function (e, state) {\n const openSearchPopup = () => {\n const headerSearch = document.getElementById(\"hub-search-results\");\n if (headerSearch) {\n headerSearch.classList.add(\"hub-search-results-active\");\n document\n .getElementsByClassName(\"Input Input_md SearchBox-InputUQZAW9QXMe-c\")[0]\n ?.focus();\n }\n };\n\n const triggerSearchButton = document.getElementsByClassName(\n \"landing-page-trigger-search-button\"\n )[0];\n if (triggerSearchButton) {\n triggerSearchButton.addEventListener(\"click\", openSearchPopup);\n }\n});\n\n// START: Add Segment Tracking to Try It button\n// TODO: Verify this runs on route changes, so button gets instrumented on every page\n$(window).on(\"load\", function (e, state) {\n var tryItBtn = document.querySelector(\".rm-TryIt\");\n\n // in case the button has not yet renedered\n if (tryItBtn === undefined) return;\n\n tryItBtn.addEventListener(\"click\", () => {\n console.log(\"Try It button Clicked (project)\");\n analytics.track(\"Try It button Clicked\");\n });\n});\n// END: Add Segment Tracking to Try It button\n\n\n\n// CUSTOM LAUNCH TOP NAV CODE - README \ndocument.addEventListener('DOMContentLoaded', () => {\n setTimeout(() => {\n document.querySelectorAll('.Header-leftADQdGVqx1wqU a[href]').forEach(a => {\n a.addEventListener('click', e => {\n e.preventDefault();\n window.location.href = a.href;\n });\n });\n }, 100);\n});\n\n// CUSTOM LAUNCH SIDEBAR CODE (FINAL project: inject Places first, then Users under Welcome)\n// Runs after a short delay to avoid flicker or unwanted auto-expansion.\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Delay entire injection by 1 second\n setTimeout(() => {\n (async function() {\n // Normalize path (strip trailing slash)\n const path = window.location.pathname.replace(/\\/$/, '');\n\n // Only act on the FINAL project paths\n if (!path.startsWith('/developer/reference/')) {\n return;\n }\n\n // Pages to pull from: Places API overview and Users API overview\n // **Places first**, then Users\n const toInject = [\n {\n otherPageUrl: '/fsq-developers-places/reference/places-api-overview',\n targetSectionText: 'Places API'\n },\n {\n otherPageUrl: '/fsq-developers-users/reference/users-api-overview',\n targetSectionText: 'Users API'\n }\n ];\n\n // If versioned (e.g. /v2023-05-01/ in URL), insert version segment into otherPageUrl\n const versionMatch = window.location.pathname.match(/\\/(v\\d{4}-\\d{2}-\\d{2})\\//);\n function applyVersion(url) {\n if (versionMatch) {\n const version = versionMatch[1];\n return url.replace('/reference/', `/${version}/reference/`);\n }\n return url;\n }\n\n // Fetch & cache a single section's HTML from another page\n async function fetchSectionHtml(otherPageUrl, targetSectionText) {\n const versionedUrl = applyVersion(otherPageUrl);\n const cacheKey = `crossSection:${versionedUrl}:${targetSectionText}`;\n const cached = sessionStorage.getItem(cacheKey);\n if (cached) {\n return cached;\n }\n try {\n const resp = await fetch(versionedUrl, { credentials: 'same-origin' });\n if (!resp.ok) {\n console.warn('[CrossInject] Fetch failed', resp.status, versionedUrl);\n return null;\n }\n const htmlText = await resp.text();\n // Parse to DOM\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlText, 'text/html');\n // Find the sidebar section\n const sidebarSelector = '.rm-Sidebar';\n const otherSidebar = doc.querySelector(sidebarSelector);\n if (!otherSidebar) {\n console.warn('[CrossInject] Sidebar not found for', versionedUrl);\n return null;\n }\n // Locate the whose includes targetSectionText\n let foundSection = null;\n otherSidebar.querySelectorAll('section').forEach(sec => {\n if (foundSection) return;\n const h2 = sec.querySelector('h2');\n if (h2 && h2.textContent.trim().includes(targetSectionText)) {\n foundSection = sec;\n }\n });\n if (!foundSection) {\n console.warn('[CrossInject] Section not found:', targetSectionText, 'in', versionedUrl);\n return null;\n }\n const sectionHtml = foundSection.outerHTML;\n try {\n sessionStorage.setItem(cacheKey, sectionHtml);\n } catch (_) {}\n return sectionHtml;\n } catch (err) {\n console.error('[CrossInject] Error fetching/parsing:', err);\n return null;\n }\n }\n\n // Wait until the current page's sidebar is present\n function whenSidebarReady(fn) {\n const interval = setInterval(() => {\n const sidebarNav = document.querySelector('.rm-Sidebar');\n if (sidebarNav) {\n clearInterval(interval);\n fn(sidebarNav);\n }\n }, 100);\n // Stop polling after 5s\n setTimeout(() => clearInterval(interval), 5000);\n }\n\n // Collapse helper for a section element\n function collapseSection(sec) {\n const h2 = sec.querySelector('h2');\n const ul = sec.querySelector('ul');\n if (h2) {\n h2.classList.remove('section-expanded');\n h2.classList.add('section-collapsed');\n h2.setAttribute('aria-expanded', 'false');\n }\n if (ul) {\n ul.classList.add('section-collapsed');\n ul.classList.remove('section-list-expanded');\n }\n }\n // Expand helper\n function expandSection(sec) {\n const h2 = sec.querySelector('h2');\n const ul = sec.querySelector('ul');\n if (h2) {\n h2.classList.remove('section-collapsed');\n h2.classList.add('section-expanded');\n h2.setAttribute('aria-expanded', 'true');\n }\n if (ul) {\n ul.classList.remove('section-collapsed');\n ul.classList.add('section-list-expanded');\n }\n }\n\n // Fetch all needed sections in parallel\n const results = await Promise.all(\n toInject.map(item =>\n fetchSectionHtml(item.otherPageUrl, item.targetSectionText)\n .then(html => ({ ...item, sectionHtml: html }))\n )\n );\n const validSections = results.filter(r => r.sectionHtml);\n if (validSections.length === 0) {\n return;\n }\n\n // Once our sidebar is ready, inject under \"Welcome\"\n whenSidebarReady(sidebarNav => {\n const contentDiv = sidebarNav.querySelector('.hub-sidebar-content');\n if (!contentDiv) {\n console.warn('[CrossInject] .hub-sidebar-content not found; abort insertion.');\n return;\n }\n\n // Find \"Welcome\" section\n const welcomeSection = Array.from(contentDiv.querySelectorAll('section')).find(sec => {\n const h2 = sec.querySelector('h2');\n return h2 && h2.textContent.trim() === 'Welcome';\n });\n let insertAfter = welcomeSection;\n\n validSections.forEach(({ targetSectionText, sectionHtml }) => {\n const wrapper = document.createElement('div');\n wrapper.innerHTML = sectionHtml;\n const originalSectionNode = wrapper.firstElementChild;\n if (!originalSectionNode) {\n console.warn('[CrossInject] No section node for', targetSectionText);\n return;\n }\n const sectionClone = originalSectionNode.cloneNode(true);\n\n // Adapt heading & toggle as needed:\n const injectedH2 = sectionClone.querySelector('h2');\n const injectedUL = sectionClone.querySelector('ul');\n if (injectedH2 && injectedUL) {\n // Copy classes from an existing template if present\n const templateH2 = sidebarNav.querySelector('.hub-sidebar-content section h2');\n if (templateH2) {\n injectedH2.className = templateH2.className;\n } else {\n injectedH2.classList.add('Sidebar-headingTRQyOa2pk0gh', 'rm-Sidebar-heading');\n }\n injectedH2.setAttribute('tabindex', '0');\n // Remove existing chevrons, clone from template or fallback\n Array.from(injectedH2.querySelectorAll('.icon-chevron')).forEach(el => el.remove());\n if (templateH2) {\n templateH2.querySelectorAll('.icon-chevron').forEach(iconSpan => {\n injectedH2.appendChild(iconSpan.cloneNode(true));\n });\n } else {\n const fallbackSpan = document.createElement('span');\n fallbackSpan.className = 'icon-chevron';\n injectedH2.appendChild(fallbackSpan);\n }\n // Initially collapsed\n collapseSection(sectionClone);\n\n // Toggle handler\n const toggleFn = () => {\n const isCollapsed = injectedUL.classList.contains('section-collapsed');\n if (isCollapsed) {\n expandSection(sectionClone);\n } else {\n collapseSection(sectionClone);\n }\n };\n injectedH2.style.cursor = 'pointer';\n injectedH2.addEventListener('click', toggleFn);\n injectedH2.addEventListener('keydown', e => {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n toggleFn();\n }\n });\n }\n\n // Nested toggles\n sectionClone.querySelectorAll('a.Sidebar-link_parent').forEach(aParent => {\n let btn = aParent.querySelector('button');\n if (!btn && aParent.nextElementSibling && aParent.nextElementSibling.tagName === 'BUTTON') {\n btn = aParent.nextElementSibling;\n }\n let subUl = null;\n if (btn) {\n const maybeUl = btn.parentElement.nextElementSibling;\n if (maybeUl && maybeUl.classList.contains('subpages')) subUl = maybeUl;\n }\n if (!subUl) {\n const parentLi = aParent.closest('li');\n if (parentLi) {\n const maybe = parentLi.querySelector('ul.subpages');\n if (maybe) subUl = maybe;\n }\n }\n if (btn && subUl) {\n // collapsed by default\n btn.setAttribute('aria-expanded', 'false');\n subUl.classList.add('section-collapsed');\n subUl.classList.remove('section-list-expanded');\n btn.style.cursor = 'pointer';\n btn.addEventListener('click', e => {\n e.preventDefault();\n const expanded = btn.getAttribute('aria-expanded') === 'true';\n if (expanded) {\n btn.setAttribute('aria-expanded', 'false');\n subUl.classList.add('section-collapsed');\n subUl.classList.remove('section-list-expanded');\n } else {\n btn.setAttribute('aria-expanded', 'true');\n subUl.classList.remove('section-collapsed');\n subUl.classList.add('section-list-expanded');\n }\n });\n }\n });\n\n // Insert right after Welcome (Places first, then Users)\n if (insertAfter && insertAfter.parentElement === contentDiv) {\n insertAfter.insertAdjacentElement('afterend', sectionClone);\n insertAfter = sectionClone;\n } else {\n contentDiv.appendChild(sectionClone);\n }\n console.log(`[CrossInject] Injected \"${targetSectionText}\" after Welcome.`);\n });\n\n // After injecting both, auto-expand whichever matches current path\n function normalizeHref(href) {\n try {\n const url = new URL(href, window.location.origin);\n return url.pathname.replace(/\\/$/, '');\n } catch {\n return href.replace(/\\/$/, '');\n }\n }\n const normPath = window.location.pathname.replace(/\\/$/, '');\n // Clear any previous active marks:\n contentDiv.querySelectorAll('a[aria-current]').forEach(a => {\n a.removeAttribute('aria-current');\n a.classList.remove('active');\n });\n // Find matches among injected links:\n const allLinks = Array.from(contentDiv.querySelectorAll('a'));\n allLinks.forEach(a => {\n const href = a.getAttribute('href');\n if (!href) return;\n if (normalizeHref(href) === normPath) {\n // mark active\n a.setAttribute('aria-current', 'page');\n a.classList.add('active');\n // expand its parent section\n let sec = a.closest('section');\n if (sec) expandSection(sec);\n // expand ancestors\n let anc = a.parentElement;\n while (anc && anc !== contentDiv) {\n if (anc.tagName === 'UL' && anc.classList.contains('subpages')) {\n anc.classList.remove('section-collapsed');\n anc.classList.add('section-list-expanded');\n const parentLi = anc.closest('li');\n if (parentLi) {\n const btn = parentLi.querySelector('button[aria-expanded]');\n if (btn) btn.setAttribute('aria-expanded', 'true');\n }\n }\n if (anc.tagName === 'SECTION') {\n expandSection(anc);\n }\n anc = anc.parentElement;\n }\n }\n });\n // If none matched exactly, all remain collapsed.\n });\n })();\n }, 600);\n});","html_promo":"","html_body":"","html_footer":"\n\n\n\n\n\n ","html_head":"","html_footer_meta":"\n \n","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"","promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"","text":"","_id":"5fa9a583c88a1e003de1fb64"}],"ai_dropdown":"disabled","ai_options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","view_as_markdown":"enabled"},"showPageIcons":true,"layout":{"full_width":false,"style":"classic"}},"custom_domain":"","childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"error404":"","experiments":[],"first_page":"landing","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"requiresJQuery":true,"externalSdkSnippets":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-developers.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"glossaryTerms":[{"_id":"600a29fd5ba23c002b40c7d2","term":"POI","definition":"A point of interest"},{"_id":"623bbd4616acf4005d31315f","term":"UUID","definition":"A unique identifier for your map or dataset. Can be found at the end of asset's URL or metadata."}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"settings":{"page":"","status":false,"url":""},"provider":""},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","html":"\n
\n \n
Foursquare Developer Documentation \n
\n Explore our comprehensive technical documentation, tools and more to up your location game.\n
\n
\n Search\n
\n
\n \n\n \n
\n \n
\n
Products
\n
Explore our products \n
\n Learn more about our complete suite of developer products.\n
\n
\n
\n View All \n APIs \n SDKs \n \n
\n
\n \n
\n
\n
API
\n
Places API New! \n
\n Access global POI data and rich content via our new Places API endpoints.\n
\n
\n
\n\n \n
\n
\n
API
\n
Users API New! \n
\n Manage user accounts and authentication endpoints for Foursquare users.\n
\n
\n
\n\n\n \n \n
\n
\n
API
\n
Movement Geofence API \n
\n Enable Movement SDK user-configured geofences for specific venues, categories, and more.\n
\n
\n
\n\n \n
\n
\n
API
\n
Studio Data API \n
\n Create, manage, and modify geospatial assets used on Foursquare Studio. Integrate into\n your pipeline tasks for the bulk processing of geospatial data, allowing for the\n efficient flow of data into Studio.\n
\n
\n
\n\n \n
\n
\n
API
\n
Measurement API \n
\n Measurement API (MAPI) is a tool for accessing measurement data, powering everything\n from insights gathering to campaign optimization. MAPI combines unparalleled data\n granularity with a flexible syntax to put you in control of your report data.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Movement SDK \n
\n Create real-time, contextual mobile experiences, and bridge the gap between online\n interests and real-world behaviors.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Studio Data SDK \n
\n Supports automated, scalable management of maps and seamless integration with your work\n flows.\n
\n
\n
\n\n \n
\n
\n
SDK
\n
Map SDK \n
\n Control, embed and customize maps on your own webpage or in Jupyter Notebooks.\n
\n
\n
\n\n \n\n
\n
X\n
\n
API
\n
Places API - Deprecated \n
\n Access global POI data and rich content from 100K+ trusted sources via our API for\n real-time venue search, discovery, and ranking.\n
\n
\n
\n\n
\n
X\n
\n
API
\n
Personalization API - Deprecated \n
\n Leverage our global POI database alongside our personalization algorithms to provide a\n personalized search experience unique to a user’s specific tastes, visit history, review\n sentiment, and more.\n
\n
\n
\n
\n
\n \n\n \n\n
\n \n
\n
\n
Developer Tools
\n
API Explorer \n
\n View working code examples and make authenticated API requests with full responses. Try\n it out!\n
\n
\n \n \n \n \n Full sample responses without writing code\n \n \n \n \n \n Build your own requests and see responses in real-time\n \n \n \n \n \n Multiple code language support\n \n \n
\n
\n
\n
\n
\n
\n
\n \n\n
\n \n
\n
\n
\n
API Tools \n
\n View working web experiences leveraging our most popular API endpoints, including code,\n and step-by-step code walkthroughs of our most popular API use cases.\n
\n
\n
\n
\n
\n
SDK Tools \n
\n Take Foursquare technology for a test ride before you spend the time and effort to\n implement the code.\n
\n
\n
\n
\n
\n
Developer Support \n
\n Resources aimed at providing a dedicated experience where you can interact with other\n developers.\n
\n
\n
\n
\n
\n \n\n
\n \n
\n
Resources
\n
Get Started Guides \n
\n
\n
\n
Feature
\n
Get Started with the Places API \n
\n New to the Foursquare Places API? Not to worry, we've got you covered. In just a few\n simple steps, you'll be up and running with your first API call in no time!\n
\n
\n Read more \n
\n
\n
\n
APIs
\n
Get Started with the Personalization APIs \n
\n New to the Foursquare Personalization APIs? Not to worry, we've got you covered. In just\n a few simple steps, you'll be up and running with your first API call in no time!\n
\n
\n Read more \n
\n
\n
\n
Feature
\n
Get Started with Foursquare Studio \n
\n Using Foursquare Studio, you can create powerful geospatial visualizations that you can\n share with the world.\n
\n
\n Read more \n
\n
\n
\n
\n \n\n
\n \n
Unlock Your App's Full Potential with Foursquare Developer \n
\n Register now to get the monthly 10,000 monthly free Places Pro Calls and more.\n
\n
Sign up \n
\n \n
"}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Developer","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"domain":false,"jwt":false,"logs":true,"metricsSDK":false},"owlbot":{"customization":{"tone":"neutral","customTone":"","answerLength":"long","forbiddenWords":"","defaultAnswer":""},"enabled":false,"isPaying":false,"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"enterprise","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":true,"points":10},"customLogin":{"enabled":false,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":false,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":false,"points":10},"support":{"enabled":false,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":false,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"totalScore":140},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":true,"defaultExpandResponseSchema":true,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]},"subdomain":"fsq-developers","subpath":"developer","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://support.foursquare.com/hc/en-us/requests/new?ticket_form_id=13089705025180"},{"type":"user"}],"bottom":[{"type":"url","url":"https://docs.foursquare.com/developer/docs/developer-console-overview","text":"❯ Console Docs"}],"edited":true},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2024-04-12T16:18:13.348Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://docs.foursquare.com","versions":[{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]},{"_id":"6606e9c5e8ce1f005276a815","version":"0.2","version_clean":"0.2.0","codename":"New Help Dev","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a82e","6606e9c5e8ce1f005276a82f","6606e9c5e8ce1f005276a830","6606e9c5e8ce1f005276a831","6606e9c5e8ce1f005276a832","6606e9c5e8ce1f005276a833","6606e9c5e8ce1f005276a834","6606e9c5e8ce1f005276a835","6606e9c5e8ce1f005276a836","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a838","6606e9c5e8ce1f005276a839","6606e9c5e8ce1f005276a83a","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a83d"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a814","updatedAt":"2023-10-30T22:02:33.548Z"},{"_id":"6606e9c5e8ce1f005276a814","version":"0.1","version_clean":"0.1.0","codename":"Old DevEx","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a821","6606e9c5e8ce1f005276a822","6606e9c5e8ce1f005276a823","6606e9c5e8ce1f005276a824","6606e9c5e8ce1f005276a825","6606e9c5e8ce1f005276a826","6606e9c5e8ce1f005276a827","6606e9c5e8ce1f005276a828","6606e9c5e8ce1f005276a82b","6606e9c5e8ce1f005276a82c","6606e9c5e8ce1f005276a82d","6606e9c5e8ce1f005276a837","6606e9c5e8ce1f005276a83c"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":5,"forked_from":"6606e9c5e8ce1f005276a813"},{"_id":"6606e9c5e8ce1f005276a813","version":"0.0","version_clean":"0.0.0","codename":"Old Ent Docs","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a819","6606e9c5e8ce1f005276a819","6606e9c5e8ce1f005276a81a","6606e9c5e8ce1f005276a81b","6606e9c5e8ce1f005276a81c","6606e9c5e8ce1f005276a81d","6606e9c5e8ce1f005276a81e","6606e9c5e8ce1f005276a81f","6606e9c5e8ce1f005276a820","6606e9c5e8ce1f005276a829","6606e9c5e8ce1f005276a82a","6606e9c5e8ce1f005276a83b"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":3},{"_id":"6606e9c5e8ce1f005276a816","version":"0.3","version_clean":"0.3.0","codename":"New Dev - Manual API","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a83e","6606e9c5e8ce1f005276a83f","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a840","6606e9c5e8ce1f005276a841","6606e9c5e8ce1f005276a842","6606e9c5e8ce1f005276a843","6606e9c5e8ce1f005276a844","6606e9c5e8ce1f005276a845","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a846","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a847","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a848","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a849","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2023-09-05T18:57:22.670Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a815","updatedAt":"2024-01-09T20:22:14.497Z"},{"_id":"6606e9c5e8ce1f005276a818","version":"1.1111","version_clean":"1.1111.0","codename":"Demo Day MAPI","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a85b","6606e9c5e8ce1f005276a85c","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a85d","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a85e","6606e9c5e8ce1f005276a85f","6606e9c5e8ce1f005276a860","6606e9c5e8ce1f005276a861","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a862","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a863","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a864","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a865","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a866","6606e9c5e8ce1f005276a867","6606e9c5e8ce1f005276a868","6606e9c5e8ce1f005276a869","6606e9c5e8ce1f005276a86a","6606e9c5e8ce1f005276a86b"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-03-28T10:17:25.142Z","__v":0,"forked_from":"6606e9c5e8ce1f005276a817","updatedAt":"2024-03-28T10:17:25.904Z"},{"_id":"67632b52f5b7cf0061fd6ee2","version":"20241206","version_clean":"20241206.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["67632b52f5b7cf0061fd6d11","67632b52f5b7cf0061fd6d12","64f77a125b90e20045ad3f37","67632b52f5b7cf0061fd6d13","659d9bd8788254004fcbbf9b","67632b52f5b7cf0061fd6d14","67632b52f5b7cf0061fd6d15","67632b52f5b7cf0061fd6d16","67632b52f5b7cf0061fd6d17","634d7c4489e57300949dfc2f","67632b52f5b7cf0061fd6d18","64f77a125b90e20045ad3f3f","67632b52f5b7cf0061fd6d19","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","67632b52f5b7cf0061fd6d1a","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","67632b52f5b7cf0061fd6d1b","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","67632b52f5b7cf0061fd6d1c","67632b52f5b7cf0061fd6d1d","67632b52f5b7cf0061fd6d1e","67632b52f5b7cf0061fd6d1f","67632b52f5b7cf0061fd6d20","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","67632b52f5b7cf0061fd6d21","67800188cfca3400623c7c3b"],"pdfStatus":"","project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-12-18T20:06:42.178Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a817","updatedAt":"2025-01-09T17:04:08.987Z","apiRegistries":[]}],"variableDefaults":[{"source":"security","_id":"63405a756dda10000f0ee8a1","name":"Authorization","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a898"},{"source":"security","_id":"64e8f31e4b5dd10958059cb2","name":"BearerAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8b0"},{"source":"security","_id":"64f8c5cfcef95d006694b93d","name":"BearerTokenAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8ae"},{"source":"security","_id":"65fabf83d8b563003024e550","name":"x-api-key","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a8ce"},{"source":"security","_id":"66172602ef644d001382eb70","name":"oauth_token","type":"apiKey","apiSetting":"6606e9c5e8ce1f005276a8cd"},{"source":"security","_id":"664cd2257fdd3a0010197ea1","name":"ServiceKeyBearerTokenAuth","type":"http","scheme":"bearer","apiSetting":"6606e9c5e8ce1f005276a8ca"}],"webhookEnabled":false},"custom_domain":"docs.foursquare.com","childrenProjects":[{"_id":"6606e9e46d03dc004a19dbb3","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-data.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":true,"internal":"","modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Data Products","nav_names":{"docs":"Documentation","reference":"","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"6606e9e46d03dc004a19db33","subdomain":"fsq-data","subpath":"data-products","translate":{},"webhookEnabled":false},{"_id":"6606ea084f38af000fe23ce1","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-campaign.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":true,"internal":"","modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Campaign Products","nav_names":{"docs":"Documentation","reference":"","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"6606ea074f38af000fe23c3a","subdomain":"fsq-campaign","subpath":"campaign-products","translate":{},"webhookEnabled":false},{"_id":"6606ea3fcfdebc002a58a6f9","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"fullBaseUrl":"https://fsq-analytics.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":true,"internal":"","modules":{"landing":true,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Analytics Products","nav_names":{"docs":"Documentation","reference":"","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"660ae2939b63f000123bb7bc","subdomain":"fsq-analytics","subpath":"analytics-products","translate":{},"webhookEnabled":false},{"_id":"5fa9a583c88a1e003de1fb62","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"Foursquare Code Tutorials","isExternalSnippetActive":false,"flags":{"allow_hub2":false,"enterprise":true,"alwaysShowDocPublishStatus":false,"hub2":true,"migrationRun":false,"migrationSwaggerRun":false,"oauth":false,"swagger":false,"correctnewlines":false,"rdmdCompatibilityMode":false,"speedyRender":false,"allowXFrame":false,"cookieAuthentication":false,"hideGoogleAnalytics":false,"newEditor":true,"oldMarkdown":false,"newMarkdownBetaProgram":true,"newApiExplorer":true,"disableAnonForum":false,"directGoogleToStableVersion":false,"translation":false,"staging":false,"newSearch":true,"tutorials":true,"allowApiExplorerJsonEditor":false,"useReactApp":true,"newHeader":false,"referenceRedesign":false,"auth0Oauth":false,"graphql":false,"singleProjectEnterprise":false,"dashReact":false,"allowReferenceUpgrade":true,"metricsV2":true,"newEditorDash":true,"enableRealtimeExperiences":false,"reviewWorkflow":true,"star":false,"allowDarkMode":false,"forceDarkMode":false,"useReactGLP":false,"disablePasswordlessLogin":false,"personalizedDocs":false,"myDevelopers":false,"superHub":false,"developerDashboard":false,"allowReusableOTPs":false,"dashHomeRefresh":false,"owlbotAi":false,"apiV2":false,"git":{"read":false,"write":false},"superHubBeta":false,"dashQuickstart":false,"disableAutoTranslate":false,"customBlocks":false,"devDashHub":false,"disableSAMLScoping":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"apiAccessRevoked":false,"passwordlessLogin":"default","disableSignups":false,"billingRedesignEnabled":true,"developerPortal":false,"mdx":false,"superHubDevelopment":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"externalSdkSnippets":false,"requiresJQuery":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-tutorials.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":false,"internal":"","modules":{"landing":true,"docs":true,"examples":true,"reference":true,"changelog":false,"discuss":false,"suggested_edits":false,"logs":false,"custompages":false,"tutorials":true,"graphql":false},"name":"Code Tutorials (ARCHIVED)","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":"Code Tutorials"},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"659d9bd8788254004fcbc149","subdomain":"fsq-tutorials","subpath":"developer-tutorials","translate":{},"webhookEnabled":false},{"_id":"6606e9c5e8ce1f005276b057","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"requiresJQuery":true,"externalSdkSnippets":false,"superHubBranches":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-developers.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":true,"internal":"","modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Developer","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"6606e9c5e8ce1f005276a817","subdomain":"fsq-developers","subpath":"developer","translate":{},"webhookEnabled":false},{"_id":"682f7aee39811e005ab82d7e","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"bidiSync":false,"changelogRssAlwaysPublic":false,"childManagedBidi":false,"correctnewlines":false,"dashReact":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSignups":false,"enableOidc":false,"enterprise":true,"graphql":false,"hideEnforceSSO":false,"localLLM":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"star":false,"staging":false,"superHub":false,"superHubBranches":false,"superHubMigrationSelfServeFlow":false,"translation":false,"disableDiscussionSpamRecaptchaBypass":false,"externalSdkSnippets":false,"requiresJQuery":true,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-developers-users.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":true,"internal":"","modules":{"landing":false,"docs":false,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Developer - Users","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"684b49ea4c9681004c950548","subdomain":"fsq-developers-users","subpath":"","translate":{},"webhookEnabled":false},{"_id":"682f7b0f3e4a0649aca9f2d0","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"bidiSync":false,"changelogRssAlwaysPublic":false,"childManagedBidi":false,"correctnewlines":false,"dashReact":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSignups":false,"enableOidc":false,"enterprise":true,"graphql":false,"hideEnforceSSO":false,"localLLM":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"star":false,"staging":false,"superHub":false,"superHubBranches":false,"superHubMigrationSelfServeFlow":false,"translation":false,"disableDiscussionSpamRecaptchaBypass":false,"requiresJQuery":true,"externalSdkSnippets":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"fullBaseUrl":"https://fsq-developers-places.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":true,"internal":"","modules":{"landing":false,"docs":false,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false},"name":"Developer - Places","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"684af68b75763b00183a120c","subdomain":"fsq-developers-places","subpath":"","translate":{},"webhookEnabled":false},{"_id":"685077dd8ac7e200112fcb8a","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"bidiSync":false,"changelogRssAlwaysPublic":false,"childManagedBidi":false,"correctnewlines":false,"dashReact":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSignups":false,"enableOidc":false,"enterprise":true,"externalSdkSnippets":false,"graphql":false,"hideEnforceSSO":false,"localLLM":false,"migrationPreview":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"star":false,"staging":false,"superHub":false,"superHubBranches":false,"superHubMigrationSelfServeFlow":false,"superHubPreview":false,"translation":false,"disableDiscussionSpamRecaptchaBypass":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"fullBaseUrl":"https://fsq-developers-final.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":false,"internal":"password","modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Developer (AI Owlbot Test)","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"685077dc8ac7e200112fc263","subdomain":"fsq-developers-final","subpath":"","translate":{},"webhookEnabled":false},{"_id":"664e8876d73a9100120f567c","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"annualBillingEnabled":true,"apiAccessRevoked":false,"billingRedesignEnabled":false,"correctnewlines":false,"dashReact":false,"devDashBillingRedesignEnabled":false,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":true,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"requiresJQuery":true,"externalSdkSnippets":false,"migrationPreview":false,"superHubBranches":false,"superHubPreview":false,"superHubBranchReviews":false},"fullBaseUrl":"https://fsq-developers-staging.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"shouldGateDash":false,"is_active":false,"internal":"password","modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Staging Developer (removing?)","nav_names":{"docs":"SDK Docs","reference":"API Docs","changelog":"Release Notes","discuss":"","recipes":"","tutorials":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"664e8876d73a9100120f4e3c","subdomain":"fsq-developers-staging","subpath":"","translate":{},"webhookEnabled":false}],"derivedPlan":"enterprise","description":"","isExternalSnippetActive":false,"error404":"","experiments":[],"first_page":"landing","flags":{"allowReusableOTPs":false,"alwaysShowDocPublishStatus":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"apiAccessRevoked":false,"billingRedesignEnabled":true,"correctnewlines":false,"dashReact":true,"developerPortal":false,"disablePasswordlessLogin":false,"directGoogleToStableVersion":false,"disableAnonForum":false,"disableAutoTranslate":false,"disableSAMLScoping":false,"disableSignups":false,"enterprise":true,"graphql":false,"mdx":false,"newEditorDash":true,"oauth":false,"passwordlessLogin":"default","owlbotAi":false,"rdmdCompatibilityMode":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"superHub":false,"superHubDevelopment":false,"translation":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"apiDesigner":false,"hideEnforceSSO":false,"localLLM":false,"superHubManageVersions":false,"gitSidebar":false,"superHubGlobalCustomBlocks":false,"childManagedBidi":false,"superHubBranches":false,"requiresJQuery":true,"externalSdkSnippets":false,"migrationPreview":false,"superHubPreview":false,"superHubBranchReviews":false,"superHubMergePermissions":false},"fullBaseUrl":"https://docs.foursquare.com/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"linked_repository":{},"installationRequest":{},"connections":[],"providers":[]}},"glossaryTerms":[],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"provider":"","settings":{}},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":500,"landing_bottom":[],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":true,"suggested_edits":true,"custompages":false,"tutorials":false},"name":"Docs Home","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"oauth_url":"https://foursquare.com/developers/login","onboardingCompleted":{"api":false,"appearance":false,"documentation":false,"domain":false,"jwt":false,"logs":false,"metricsSDK":false},"owlbot":{"customization":{"tone":"neutral","customTone":"","answerLength":"long","forbiddenWords":"","defaultAnswer":""},"enabled":false,"isPaying":false,"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"enterprise","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":true,"points":10},"customLogin":{"enabled":false,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":false,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":false,"points":10},"support":{"enabled":false,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":false,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"totalScore":140},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"6606ec7d41d324002a857d4a","version":"1.0.0","version_clean":"1.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2024-03-29T16:29:49.560Z","project":"6606ec7d41d324002a857d4b","createdAt":"2024-03-29T16:29:49.644Z","updatedAt":"2024-03-29T16:29:49.819Z","__v":0},"subdomain":"foursquare-docs","subpath":"","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","url":"https://foursquare4411.zendesk.com/hc/en-us/requests/new","text":"Support"},{"type":"url","text":"Log In","url":"https://location.foursquare.com/log-in/"}],"bottom":[],"edited":true},"trial":{"trialDeadlineEnabled":true,"trialEndsAt":"2024-04-12T16:29:49.564Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"","versions":[{"_id":"6606ec7d41d324002a857d4a","version":"1.0.0","version_clean":"1.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2024-03-29T16:29:49.560Z","project":"6606ec7d41d324002a857d4b","createdAt":"2024-03-29T16:29:49.644Z","updatedAt":"2024-03-29T16:29:49.819Z","__v":0}],"variableDefaults":[],"webhookEnabled":true},"isHubEditable":true},"projectStore":{"data":{"allow_crawlers":"disabled","canonical_url":null,"default_version":{"name":"1.0"},"description":null,"glossary":[{"_id":"600a29fd5ba23c002b40c7d2","term":"POI","definition":"A point of interest"},{"_id":"623bbd4616acf4005d31315f","term":"UUID","definition":"A unique identifier for your map or dataset. Can be found at the end of asset's URL or metadata."}],"homepage_url":"https://docs.foursquare.com","id":"6606e9c5e8ce1f005276b057","name":"Developer","parent":null,"redirects":[],"sitemap":"disabled","llms_txt":"disabled","subdomain":"fsq-developers","suggested_edits":"enabled","uri":"/projects/me","variable_defaults":[{"name":"Authorization","source":"security","type":"apiKey","id":"63405a756dda10000f0ee8a1"},{"name":"BearerAuth","scheme":"bearer","source":"security","type":"http","id":"64e8f31e4b5dd10958059cb2"},{"name":"BearerTokenAuth","scheme":"bearer","source":"security","type":"http","id":"64f8c5cfcef95d006694b93d"},{"name":"x-api-key","source":"security","type":"apiKey","id":"65fabf83d8b563003024e550"},{"name":"oauth_token","source":"security","type":"apiKey","id":"66172602ef644d001382eb70"},{"name":"ServiceKeyBearerTokenAuth","scheme":"bearer","source":"security","type":"http","id":"664cd2257fdd3a0010197ea1"}],"webhooks":[],"api_designer":{"allow_editing":"enabled"},"custom_login":{"login_url":"https://foursquare.com/developers/login","logout_url":null},"features":{"mdx":"disabled"},"mcp":{},"onboarding_completed":{"api":true,"appearance":true,"documentation":true,"domain":false,"jwt":false,"logs":true,"metricsSDK":false},"pages":{"not_found":null},"privacy":{"openapi":"admin","password":null,"view":"public"},"refactored":{"status":"disabled","migrated":"unknown"},"seo":{"overwrite_title_tag":"disabled"},"plan":{"type":"enterprise","grace_period":{"enabled":false,"end_date":null},"trial":{"expired":false,"end_date":"2024-04-12T16:18:13.348Z"}},"reference":{"api_sdk_snippets":"enabled","defaults":"always_use","json_editor":"disabled","oauth_flows":"disabled","request_history":"disabled","response_examples":"expanded","response_schemas":"expanded","sdk_snippets":{"external":"disabled"}},"health_check":{"provider":"none","settings":{"manual":{"status":"down","url":null},"statuspage":{"id":null}}},"integrations":{"aws":{"readme_webhook_login":{"region":null,"external_id":null,"role_arn":null,"usage_plan_id":null}},"bing":{"verify":null},"google":{"analytics":null,"site_verification":null},"heap":{"id":null},"koala":{"key":null},"localize":{"key":null},"postman":{"key":null,"client_id":null,"client_secret":null},"recaptcha":{"site_key":null,"secret_key":null},"segment":{"key":null,"domain":null},"speakeasy":{"key":null,"spec_url":null},"stainless":{"key":null,"name":null},"typekit":{"key":null},"zendesk":{"subdomain":null},"intercom":{"app_id":null,"secure_mode":{"key":null,"email_only":false}}},"permissions":{"appearance":{"private_label":"enabled","custom_code":{"css":"enabled","html":"enabled","js":"enabled"}},"branches":{"merge":{"admin":true}}},"appearance":{"brand":{"primary_color":"eeeeee","link_color":"#3333FF","theme":"light"},"changelog":{"layout":"collapsed","show_author":false,"show_exact_date":true},"layout":{"full_width":"disabled","style":"classic"},"markdown":{"callouts":{"icon_font":"emojis"}},"table_of_contents":"enabled","whats_next_label":null,"footer":{"readme_logo":"hide"},"logo":{"size":"default","dark_mode":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}},"main":{"uri":"/images/660acd14efe91e001fbe334d","url":"https://files.readme.io/af60d4b-small-395ef92-small-docs.png","name":"af60d4b-small-395ef92-small-docs.png","width":324,"height":40,"color":"#000000","links":{"original_url":"https://files.readme.io/99736b7-395ef92-small-docs.png"}},"favicon":{"uri":null,"url":"https://files.readme.io/8053e33-small-favicon.png","name":"favicon.png","width":32,"height":32,"color":"#1c1c1c","links":{"original_url":"https://files.readme.io/6735b58-favicon.png"}}},"custom_code":{"css":"/*****************************************/ \n/************ General GLP ****************/ \n/*****************************************/ \n* {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n.rdmd-html iframe {\n background: #FFF;\n}\n.rm-LandingPage{\n margin: 0 auto;\n max-width: 100%;\n padding: 0;\n width: 100%;\n}\n\n.rm-Header-top [id^=\"tippy-\"] > div > div > div > div > div > div:nth-child(2){\n display:none !important; \n}\n\n.doc-search-button {\n font-size: 0.9rem;\n line-height: 1.6;\n color: #000;\n opacity: 0.999;\n display: inline-block;\n border: solid 1px #6666FF;\n background-color: white;\n border-radius: 7px;\n padding: 0.5em 1em;\n transition: background 100ms;\n width: 50%;\n cursor: pointer;\n}\n\n.landing-page-home .container {\n max-width: 1440px;\n margin: 0 auto;\n padding: 0 24px;\n}\n\n.landing-page-home .content {\n padding: 0 24px 24px;\n}\n\n.landing-page-home .content p {\n margin: 0 0 10px;\n line-height: 24px;\n}\n\n.landing-page-home section {\n padding: 48px 0;\n}\n\n.landing-page-home .button {\n border-radius: 12px;\n border: 1px solid #3333FF;\n background: #3333FF;\n color: #FFF;\n display: inline-block;\n padding: 12px 16px;\n text-decoration: none !important;\n margin-top: 24px;\n}\n\n.landing-page-home .button:hover {\n color: #3333FF;\n background: #FFF;\n}\n\n.landing-page-home .banner {\n background: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.3)), url(\"https://location.foursquare.com/wp-content/uploads/sites/2/2023/10/foursquare-hero-docs.jpg\") no-repeat center center #010101;\n}\n\n.landing-page-home .banner.signup {\n background: linear-gradient(0deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.3)), url(\"https://location.foursquare.com/wp-content/uploads/sites/2/2023/10/foursquare-signup.jpg\") no-repeat center center #010101;\n}\n\n.landing-page-home .banner h1 {\n color: #FFF;\n font-size: 48px;\n line-height: 64px;\n margin: 0 0 10px;\n padding: 0;\n font-weight: 300;\n}\n\n.landing-page-home .banner p.description {\n color: #B3B0B1;\n}\n\n.landing-page-home h2 {\n font-size: 32px;\n line-height: 40px;\n margin: 0;\n}\n\n.landing-page-home .tag {\n text-transform: uppercase;\n color: #2ED9C3;\n font-size: 12px;\n}\n\n.landing-page-home ul.filters {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n gap: 10px;\n padding: 0;\n}\n\n.landing-page-home ul.filters li {\n cursor: pointer;\n margin: 0;\n padding: 0;\n font-size: 14px !important;\n display: block;\n border-radius: 12px;\n padding: 6px 8px;\n border: 1px solid #F8F8F8;\n background: #F8F8F8;\n color: #171417;\n}\n\n.landing-page-home ul.filters li.active {\n background: #010101;\n color: #F8F8F8;\n border: 1px solid #010101;\n}\n\n.landing-page-home ul.pills {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n gap: 10px;\n padding: 0;\n}\n\n.landing-page-home ul.pills li {\n margin: 0;\n padding: 0;\n}\n\n.landing-page-home ul.pills li a {\n text-decoration: none;\n font-size: 14px !important;\n display: block;\n border: 1px solid #B3B0B1;\n border-radius: 50px;\n padding: 12px 16px;\n background: #F8F8F8;\n color: #171417;\n}\n\n.landing-page-home ul.pills li a:hover {\n background: #E0DDDE;\n text-decoration: none !important;\n}\n\n.landing-page-home ul.pills.blue li a {\n color: #3333FF;\n border-radius: 8px;\n background: #FFF;\n border: 1px solid #3333FF;\n}\n\n.landing-page-home ul.pills.blue li a:hover {\n background: #F2EEFB;\n\n}\n\n.landing-page-home ul.ticks {\n margin: 0 0 25px;\n padding: 0;\n list-style: none;\n}\n\n.landing-page-home .tiles {\n display: grid;\n gap: 20px;\n /* Adjust spacing between tiles as needed */\n row-gap: 40px;\n}\n\n.landing-page-home .tiles .tile-image {\n border-radius: 24px;\n box-shadow: 0px 3.38082px 11.77026px 0px rgba(0, 0, 0, 0.06), 0px 8.13971px 28.33825px 0px rgba(0, 0, 0, 0.08), 0px 27px 94px 0px rgba(0, 0, 0, 0.13), 0px 4px 4px 0px rgba(0, 0, 0, 0.25);\n}\n\n.landing-page-home .tile-container-border .tile {\n position: relative;\n padding: 24px;\n border-radius: 16px;\n box-sizing: border-box;\n border: 1px solid #ccc;\n}\n\n.landing-page-home .tile-container-border .tile .external {\n position: absolute;\n right: 24px;\n width: 32px;\n height: 32px;\n border: 1px solid #F8F8F8;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50px;\n}\n\n.landing-page-home .tile .icon {\n box-sizing: content-box;\n background: #EFF4FE;\n border-radius: 12px;\n padding: 10px;\n width: 24px;\n height: 24px;\n display: inline-block;\n color: blue;\n margin-bottom: 16px;\n}\n\n.landing-page-home .tile .icon.text {\n padding: 4px 8px;\n font-size: 12px;\n height: unset;\n width: unset;\n border-radius: 6px;\n}\n\n.landing-page-home .tile .icon.text.green {\n color: #0A5E14;\n background: #D7F6E7;\n}\n\n.landing-page-home .tile-container-bg {\n background: #F8F8F8;\n}\n\n.landing-page-home .tile-container-bg .tile {\n box-shadow: 0px 0px 8px 0px rgba(23, 20, 23, 0.1);\n background: #FFF;\n\n}\n\n.landing-page-home .tile-container-bg .tile h3 {\n margin-top: 0;\n}\n\n.landing-page-home .tile-container-bg .tile a {\n text-decoration: none;\n}\n\n.landing-page-home .tile-container-bg .tile a:hover {\n text-decoration: underline;\n}\n \n/*****************************************/\n/********* Viewport Changes **************/ \n/*****************************************/ \n \n@media (min-width: 768px) {\n \n .hub-is-home .rm-Header-top .rm-SearchToggle {\n \n }\n \n .landing-page-home .tiles {\n padding: 24px;\n }\n \n .landing-page-home .banner {\n padding: 80px 48px;\n }\n\n .landing-page-home .tiles .tile-image.tile-image-mobile {\n display: none;\n }\n\n .landing-page-home .tiles .tile-image.tile-image-desktop {\n display: block;\n }\n \n .landing-page-home .tiles-third {\n grid-template-columns: repeat(3, 1fr);\n }\n \n .landing-page-home .tiles-half {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 767px) {\n .landing-page-home .tiles .tile-image.tile-image-mobile {\n display: block;\n }\n\n .landing-page-home .tiles .tile-image.tile-image-desktop {\n display: none;\n }\n}\n\n/*****************************************/ \n/************* Footer ******************/ \n/*****************************************/ \n \n.footer-section {\n background-color: #f6f6f6;\n padding: 2rem 1rem;\n}\n\nfooter .footer-section ul {\n list-style-type: none !important;\n}\n\n.footer-section div>ul {\n display: grid;\n column-gap: 1rem;\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n\n.footer-section div>ul>li>ul>li {\n margin-bottom: 1rem;\n}\n\n.footer-section ul li a {\n color: #000;\n}\n\n.footer-section ul li a:hover {\n text-decoration: underline;\n}\n\n.below-footer a {\n color: #999999;\n text-decoration: none;\n}\n\n.below-footer a:hover {\n color: #000;\n}\n\n.below-footer p {\n display: flex;\n justify-content: space-around;\n}\n \n/*****************************************/ \n/********** Dark Mode ****************/ \n/*****************************************/ \n\n[data-color-mode=\"dark\"] .Header-logo-img3YvV4lcGKkeb {\n filter: invert(100%);\n}\n\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link.active {\n background: #fff !important;\n color: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link.active i {\n color: #0d0d0d !important;\n opacity: 1 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link {\n background: none !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link:hover {\n background: #1e2021 !important;\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom-link {\n color: #fff;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a {\n padding: 8px 16px !important;\n border: 1px solid #66f !important;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a:nth-child(1) {\n border: 1px solid #66f;\n background: #0d0d0d !important;\n color: #66f !important;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a:nth-child(1):hover {\n background: #242e34 !important;\n}\n\n[data-color-mode=\"dark\"] .Button_primary:not(.Button_white_text) {\n color: #fff !important;\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .Header-right21PC2XTT6aMg a:nth-child(2) {\n background: #66f !important;\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-button {\n color: #f8f8f8 !important;\n border: none !important;\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-list {\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-list li a {\n color: #f8f8f8 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Header-bottom .Dropdown-list li a:hover {\n background: #1e2021 !important;\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] a.readmore {\n color: #4d4dff !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home svg path {\n fill: #4d4dff !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .button {\n border: 1px solid #4d4dff !important;\n background: #4d4dff !important;\n color: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .button:hover {\n border: 1px solid #4d4dff !important;\n background: #4d4dff !important;\n color: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.filters li {\n background: #1e2021 !important;\n border: 1px solid #1e2021 !important;\n color: #f8f8f8 !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.filters li.active {\n border: 1px solid #f8f8f8 !important;\n background: #f8f8f8 !important;\n color: #171417 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-SearchToggle {\n background-color: #171717 !important;\n border-color: #171717 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-SearchToggle-icon,\n[data-color-mode=\"dark\"] .rm-SearchToggle-placeholder,\n[data-color-mode=\"dark\"] .footer-section ul {\n color: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg {\n background-color: #20292e;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg .tile,\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg .tile a,\n[data-color-mode=\"dark\"] .landing-page-home .tile .icon {\n background-color: #171717;\n border-color: #171717;\n color: #fff;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container-bg .tile a {\n background-color: #141414;\n border-color: #fff;\n color: #fff;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home .tile-container.tile-bg-alternate,\n[data-color-mode=\"dark\"] .footer-section {\n background: #0d0d0d !important;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"dark\"] .landing-page-home ul.pills li a {\n background-color: #0d0d0d;\n}\n\n[data-color-mode=\"dark\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"dark\"] .landing-page-home .tiles.tiles-third ul.pills li a path {\n fill: #fff !important;\n}\n\n[data-color-mode=\"dark\"] .footer-section path {\n fill: #fff;\n}\n\n[data-color-mode=\"dark\"] .footer-section ul li a {\n color: #757575;\n}\n \n[data-color-mode=\"dark\"] .below-footer p{\n color: #000 !important;\n}\n\n/*****************************************/ \n/*********** System Mode *************/ \n/*****************************************/ \n \n@media(prefers-color-scheme: dark) {\n[data-color-mode=\"system\"] {\n /* Common properties for system color mode */\n}\n\n[data-color-mode=\"system\"] .Button_primary:not(.Button_white_text) {\n color: #FFF !important;\n background: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .Header-logo-img3YvV4lcGKkeb {\n -webkit-filter: grayscale(1) invert(1);\n filter: grayscale(1) invert(1); \n}\n\n[data-color-mode=\"system\"] .rm-SearchToggle {\n background-color: #171717 !important;\n border-color: #171717 !important;\n}\n\n[data-color-mode=\"system\"] .rm-SearchToggle-icon,\n[data-color-mode=\"system\"] .rm-SearchToggle-placeholder,\n[data-color-mode=\"system\"] .footer-section ul {\n color: #fff !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg {\n background-color: #20292E;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile,\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile a,\n[data-color-mode=\"system\"] .landing-page-home .tile .icon {\n background-color: #171717;\n border-color: #171717;\n color: #fff;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile a {\n background-color: #141414;\n border-color: #fff;\n color: #fff;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container.tile-bg-alternate,\n[data-color-mode=\"system\"] .footer-section {\n background: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"system\"] .landing-page-home ul.pills li a {\n background-color: #0D0D0D;\n}\n\n[data-color-mode=\"system\"] .landing-page-home ul.pills.blue li a,\n[data-color-mode=\"system\"] .landing-page-home .tiles.tiles-third ul.pills li a path {\n fill: #fff !important;\n}\n\n[data-color-mode=\"system\"] .footer-section path {\n fill: #fff;\n}\n\n[data-color-mode=\"system\"] .footer-section ul li a {\n color: #757575;\n}\n\n/* Additional rules */\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a {\n padding: 8px 16px !important;\n border: 1px solid #66F !important;\n}\n\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a:nth-child(1) {\n border: 1px solid #66F;\n background: #0D0D0D !important;\n color: #66F !important;\n}\n\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a:nth-child(1):hover {\n background: #242E34 !important;\n}\n\n[data-color-mode=\"system\"] .Header-right21PC2XTT6aMg a:nth-child(2) {\n background: #66F !important;\n color: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-button,\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-list,\n[data-color-mode=\"system\"] .landing-page-home ul.filters li {\n background: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-button,\n[data-color-mode=\"system\"] .rm-Header-bottom .Dropdown-list li a,\n[data-color-mode=\"system\"] .rm-Header-bottom-link,\n[data-color-mode=\"system\"] a.readmore {\n color: #F8F8F8 !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom-link:hover,\n[data-color-mode=\"system\"] .landing-page-home ul.filters li.active {\n background: #1E2021 !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom-link.active {\n background: #FFF !important;\n color: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .rm-Header-bottom-link.active i {\n color: #0D0D0D !important;\n opacity: 1 !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .tile-container-bg .tile .icon,\n[data-color-mode=\"system\"] .landing-page-home .button,\n[data-color-mode=\"system\"] .landing-page-home .button:hover {\n border: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home .button,\n[data-color-mode=\"system\"] .landing-page-home .button:hover {\n background: #4D4DFF !important;\n color: #0D0D0D !important;\n}\n\n[data-color-mode=\"system\"] .landing-page-home svg path {\n fill: #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .below-footer p{\n color: #000 !important;\n} \n}\n\n/*****************************************/ \n/************** Interior ****************/ \n/*****************************************/ \n\n.rm-SearchModal .Tabs-listItem_active {\n -webkit-box-shadow: inset 0 -2px 0 currentcolor !important;\n box-shadow: inset 0 -2px 0 currentcolor !important;\n color: black !important;\n}\n\n.hub-is-home .rm-SearchToggle {display:none;}\n\n\n/* Guides Thumb Votes*/ \n.rm-Guides .PageThumbs-helpful {\n\tword-break: normal;\n overflow-wrap: normal;\n display: block;\n font-size: 10px;\n margin-bottom: 10px;\n padding: 5px;\n text-align: center;\n border-color: rgba(0, 0, 0, 0);\n}\n\n.rm-Guides .PageThumbs {\n display: table;\n margin: 0;\n padding: 0;\n position: absolute !important;\n top: 120px;\n margin-left: 665px;\n}\n\n.rm-Guides #content-head h1 {\n margin-bottom: 0;\n margin-top: 0;\n max-width: 600px;\n}\n\n.rm-Guides .PageThumbs-cta {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: space-evenly;\n -ms-flex-pack: space-evenly;\n justify-content: space-evenly;\n padding-left: 0;\n}\n\n.rm-Guides .PageThumbs-button {\n padding:0; \n}\n\n.rm-Guides .content-body {\n padding-top: 35px !important;\n}\n\n.headline-container_basic1DFntTggitfX {\n border-bottom: 0;\n margin-bottom: 30px;\n padding-bottom: 30px;\n}\n\n.Button_secondary_text {\n background: rgba(0, 0, 0, 0);\n -webkit-box-shadow: none;\n box-shadow: none;\n color: #4f5a66;\n font-size: 11px;\n}\n\n.icon-thumbs-up-2:before {\n content: \"\\ea39\";\n font-size: 15px;\n}\n\n.icon-thumbs-down1:before {\n content: \"\\ea47\";\n font-size: 15px;\n}\n\n/* Ref Thumb Votes\n#Explorer .PageThumbs-helpful {\n\tword-break: normal;\n overflow-wrap: normal;\n display: block;\n font-size: 10px;\n margin-bottom: 10px;\n padding: 5px;\n text-align: center;\n border-color: rgba(0, 0, 0, 0);\n}\n\n#Explorer .PageThumbs {\n\t\tdisplay: table;\n margin: 0;\n padding: 0;\n position: absolute !important;\n top: 105px;\n margin-left: 495px;\n}\n\n#Explorer #content-head h1 {\n margin-bottom: 0;\n margin-top: 0;\n max-width: 600px;\n}\n\n#Explorer .PageThumbs-cta {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: space-evenly;\n -ms-flex-pack: space-evenly;\n justify-content: space-evenly;\n padding-left: 0;\n}\n\n#Explorer .PageThumbs-button {\n padding:0; \n}\n\n#Explorer .content-body {\n padding-top: 35px !important;\n}\n*/ \n.removeLogoutLink {\n outline: none !important;\n border: none !important;\n box-shadow: none !important;\n cursor: initial !important;\n}\n\n.rm-Flyout {\n background: #FFFFFF !important;\n}\n\n.Header-right21PC2XTT6aMg a {\n padding: 8px 16px !important;\n border: 1px solid #3333FF !important;\n}\n\n.Header-right21PC2XTT6aMg a:nth-child(1) {\n color: #3333FF !important;\n}\n\n.Header-right21PC2XTT6aMg a:nth-child(2) {\n background: #3333FF !important;\n color: #FFF !important;\n}\n\n.Header-right21PC2XTT6aMg a:first-child:hover {\n background: #F2EEFB !important\n}\n\n.Header-right21PC2XTT6aMg a:nth-child(2):hover {\n background: #1C1F9F !important;\n color: #FFF !important;\n}\n\n/* Content */\n\n.rm-Guides #content-head {\n border-bottom: none !important;\n padding-bottom: 0 !important;\n}\n\n.rm-PlaygroundRequest button {\n color: #FFF !important;\n}\n\n/* Alerts and Callouts */\n\n.callout.callout {\n padding: 1.5rem !important;\n border-radius: 12px !important;\n}\n\n.field-description blockquote,\n.markdown-body blockquote {\n border: none !important;\n}\n\n.callout.callout .callout-heading.empty .callout-icon {\n margin-left: 0 !important;\n\n}\n\n.callout.callout .callout-heading.empty {\n margin-left: 0 !important;\n}\n\n.tabbed-content {\n display: grid;\n column-gap: 1.25rem;\n row-gap: 1.25rem;\n max-width: 99%;\n}\n\n@media only screen and (min-width: 48em) {\n .tabbed-content {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n}\n\n@media only screen and (min-width: 64em) {\n .tabbed-content {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n}\n\n.tabbed-content .tabbed-tile {\n box-shadow: 0px 0px 8px 0px rgba(23, 20, 23, 0.10) !important;\n background-color: #FFFFFF;\n padding: 20px;\n border-radius: 12px;\n display: none;\n}\n\n@media only screen and (min-width: 48em) {\n .tabbed-content .tabbed-tile {\n padding: 20px;\n }\n}\n\n\n@media only screen and (min-width: 64em) {\n .tabbed-content .tabbed-tile {\n padding: 20px;\n }\n}\n\n.tabbed-content .tabbed-tile.active {\n display: block;\n}\n\n.tabbed-content .tabbed-tile .svg-container {\n height: 44px;\n width: 44px;\n padding: 8px;\n display: flex;\n border-radius: 12px;\n background-color: #EFF4FE !important;\n margin-bottom: 16px;\n flex-wrap: wrap;\n align-content: center;\n justify-content: center;\n}\n\n.tabbed-content .tabbed-tile .svg-container img {\n margin-left: 0;\n margin-right: 0;\n max-width: 24px;\n max-height: 24px;\n filter: invert(10%) sepia(74%) saturate(6495%) hue-rotate(246deg) brightness(135%) contrast(104%);\n}\n\n@media only screen and (min-width: 48em) {\n .tabbed-content .tabbed-tile p {\n min-height: 75px;\n }\n}\n\n.tabbed-content img,\n.tabbed-content svg {\n max-width: 40px;\n height: auto;\n}\n\n.tabbed-content h3 {\n margin: 0 0 1rem;\n}\n\n.tabbed-content p:last-child {\n margin: 0;\n}\n\n.tabbed-content a {\n text-decoration: none !important;\n}\n\n.tabbed-content a:hover {\n text-decoration: underline !important;\n}\n\n/* Tokens & Icons */\n\nul.tokens {\n list-style: none;\n display: flex;\n margin-top: 22px;\n flex-wrap: wrap;\n padding-left: 0 !important;\n}\n\nul.tokens li {\n margin-top: 0;\n}\n\nul.tokens li a {\n color: #171417;\n text-align: center;\n border-radius: 50px;\n border: 1px solid #B3B0B1;\n background-color: #F3F3F3 !important;\n padding: 8px 12px;\n margin-top: 0;\n margin-right: 0.5rem;\n font-size: 12px;\n margin-bottom: 0.5rem;\n display: inline-block;\n text-decoration: none !important;\n}\n\nul.tokens li a:hover {\n background-color: #E0DDDE !important;\n color: #171417;\n text-decoration: none !important;\n}\n\nul.tokens li a:active {\n background-color: #e7e7ff !important;\n}\n\n/* TOC List */\n\nnav ul.toc-list li a.tocHeader,\nnav ul.toc-list li a.tocHeader i {\n color: #3AC1AF !important;\n}\n\nnav ul.toc-list li.toc-children {\n border-left: 1px solid #3333FF;\n}\n\nnav ul.toc-list li.toc-children ul li.active>a {\n color: #3333FF;\n}\n\n.rm-Sidebar {\n box-shadow: none !important;\n -webkit-box-shadow: none !important;\n margin-top: 3px !important;\n}\n\n.rm-Sidebar-section {\n margin-top: 8px !important;\n margin-bottom: 0 !important;\n}\n\n.rm-Sidebar-section h2 {\n padding: 12px 20px !important;\n margin: 0 !important;\n line-height: 1 !important;\n}\n\n.rm-Sidebar-heading {\n font-weight: 500 !important;\n margin: 0 0 8px !important;\n}\n\n.rm-Sidebar-heading,\n.rm-Sidebar-link {\n font-size: 16px !important;\n line-height: 24px !important;\n text-transform: none !important;\n padding-left: 20px !important;\n position: relative !important;\n}\n\n.icon-arrow-up-right {\n position: absolute !important;\n bottom: 4px !important;\n right: 15px !important;\n}\n\n.rm-Sidebar-list {\n padding-left: 22px !important;\n}\n\n.rm-Sidebar-list .rm-Sidebar-list {\n padding-left: 5px !important;\n}\n\n.rm-Sidebar-list.subpages:last-child {\n margin-bottom: 8px !important;\n}\n\nul.subpages li a.subpage {\n margin-left: 0 !important;\n\n}\n\n.rm-Sidebar-link {\n display: flex !important;\n padding-left: 6px !important;\n padding-right: 6px !important;\n padding-top: 6px !important;\n padding-bottom: 6px !important;\n margin: 0 !important;\n}\n\n.rm-Sidebar-link:hover {\n background: none !important;\n}\n\n.rm-Sidebar-link span span {\n border-bottom: 1px solid transparent !important;\n}\n\n.rm-Sidebar-link:hover span span {\n border-bottom: 1px solid #000 !important;\n}\n\n\n.rm-Sidebar-link.active,\n.rm-Sidebar-link:active {\n background: none !important;\n color: #3333FF !important;\n\n}\n\n.rm-Sidebar-link.active:hover span span {\n border-bottom: 1px solid transparent !important;\n}\n\n.Sidebar-link-buttonWrapper3hnFHNku8_BJ {\n margin-left: 0px !important;\n}\n\n/* Collapsible sidebar navigation */\n.rm-Sidebar-heading {\n cursor: pointer;\n position: relative;\n}\n\n.rm-Sidebar-heading.section-expanded {\n border-radius: 4px;\n background: var(--secondary-brand-secondary-1, #F2EEFB);\n box-shadow: 2px 0px 0px 0px #686DF3 inset;\n}\n\n.rm-Sidebar-section .subnav-expanded>a {\n color: #33f !important;\n}\n\n.rm-Sidebar-heading.section-expanded .icon-chevron {\n transform: rotate(90deg);\n margin-top:1px;\n}\n\n.rm-Sidebar-heading .icon-chevron {\n transition: transform 0.2s;\n position: absolute;\n top: 12px;\n color: #7C7C7C;\n font-size: 16px;\n opacity: 1;\n margin-left: 4px;\n}\n\n.reference-redesign .Sidebar-link-textLuTE1ySm4Kqn {\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n flex-direction: row-reverse;\n}\n\n.reference-redesign .Sidebar-link-buttonWrapper3hnFHNku8_BJ {\n background: none;\n border: 0;\n color: inherit;\n display: inherit;\n padding:10px !important;\n\n}\n\n.rm-Sidebar-heading .icon-chevron::before {\n content: \"\\ea10\" !important;\n}\n\n.rm-Sidebar-section>.rm-Sidebar-list {\n display: none !important;\n}\n\n.rm-Sidebar-list.section-list-expanded {\n display: flex !important;\n /* Footer */\n}\n\n.footer-section {\n background-color: #F6F6F6;\n padding: 2rem 1rem;\n}\n\n.footer-section ul.footer-links__block-list {\n padding-left: 0;\n}\n\n.footer-section div>ul {\n display: grid;\n column-gap: 1rem;\n list-style: none;\n padding-left: 0;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n@media only screen and (min-width: 48em) {\n .footer-section div>ul {\n \n \n \n \n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n}\n\n.footer-section div>ul>li>ul>li {\n margin-bottom: 1rem;\n list-style: none;\n}\n\n.footer-section ul li a {\n color: #000;\n}\n\n.footer-section ul li a:hover {\n text-decoration: underline;\n}\n\n\n.below-footer a {\n color: #999999;\n text-decoration: none;\n}\n\n.below-footer a:hover {\n color: #000;\n}\n\n.below-footer p {\n display: flex;\n justify-content: space-around;\n}\n\n/*****************************************/ \n/********* Dark Mode NON-LANDING ********/ \n/*****************************************/ \n\n[data-color-mode=\"dark\"] .rm-Sidebar-section .subnav-expanded>a {\n background: #1E2021 !important;\n}\n\n[data-color-mode=\"dark\"] .rm-Sidebar-heading.section-expanded {\n border-radius: 4px;\n background: #171717;\n box-shadow: 2px 0px 0px 0px #686DF3 inset;\n color: #FFF !important;\n}\n\n[data-color-mode=\"dark\"] .tabbed-content .tabbed-tile {\n background: #171717 !important;\n border: none !important;\n}\n\n[data-color-mode=\"dark\"] .tabbed-content .tabbed-tile .svg-container {\n background: #171717 !important;\n}\n\n[data-color-mode=\"dark\"] nav ul.toc-list li.toc-children {\n border-left: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"dark\"] nav ul.toc-list li.toc-children ul li.active>a {\n color: #4D4DFF !important;\n}\n\n[data-color-mode=dark] ul.tokens li a {\n background: #171417 !important;\n}\n\n/*****************************************/ \n/******* System Mode NON-LANDING ********/ \n/*****************************************/ \n\n@media(prefers-color-scheme: dark) {\n\n[data-color-mode=\"system\"] .rm-Flyout {\n filter: invert(1);\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-heading.section-expanded {\n border-radius: 4px;\n background: #171717;\n box-shadow: 2px 0px 0px 0px #686DF3 inset;\n color: #FFF !important;\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-section .subnav-expanded>a {\n background: #1E2021 !important;\n}\n\n[data-color-mode=\"system\"] .tabbed-content .tabbed-tile {\n background: #171717 !important;\n border: none !important;\n}\n\n[data-color-mode=\"system\"] .tabbed-content .tabbed-tile .svg-container {\n background: #171717 !important;\n}\n\n[data-color-mode=\"system\"] nav ul.toc-list li.toc-children {\n border-left: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] nav ul.toc-list li.toc-children ul li.active>a {\n color: #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-link.active,\n[data-color-mode=\"auto\"] .rm-Sidebar-link:active {\n background-color: none !important;\n color: #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] .rm-Sidebar-link:hover span span {\n border-bottom: 1px solid #4D4DFF !important;\n}\n\n[data-color-mode=\"system\"] ul.tokens li a {\n background: #171417 !important;\n}\n\n}\n#ssr-main > div > header > div.Header-bottom2eLKOFXMEmh5.rm-Header-bottom > div > nav > div.Dropdown{\n display:none; \n}\n\n.icon-arrow-up-right:before {\n display:none;\n\n}\n\n.Sidebar-item23D-2Kd61_k3:last-child a[href=\"https://docs.foursquare.com/developer/reference/places-api-overview\"] .Sidebar-link-text_label1gCT_uPnx7Gu {\n color: red; /* Example */\n font-weight: bold;\n font-size:12px;\n}\n\n\n.Param1QyvwHroaCgH .Collapseda2tBtFifUAjo .Param1QyvwHroaCgH {\n display: block;\n}\n\n.Param1QyvwHroaCgH .Collapseda2tBtFifUAjo .Param-form1SoAutupIaz3 {\n margin-left: 10px;\n max-width: 100%;\n}\n\n\n/* Custom Console Doc Styles */\n@media (max-width: 768px){\nbody:not(.showSidebarFlyout) #hub-sidebar.Sidebar_flyout2qTF85usvHxB, body:not(.showSidebarFlyout) #reference-sidebar.Sidebar_flyout2qTF85usvHxB {\n display: none !important;\n}\n}\n\n.rm-Sidebar_guides .hub-sidebar-content > section:last-of-type > .Sidebar-headingTRQyOa2pk0gh {\n display: none !important;\n}\n\nli.Sidebar-item23D-2Kd61_k3.expanded-section-item a[href=\"/developer/docs/developer-console-overview\"] {\n /* Applying styles */\n border-radius: 4px;\n background: #F2EEFB !important;\n box-shadow: 2px 0 0 0 #686df3 inset;\n color: #4f5a66 !important;\n margin-left:-15px !important;\n font-weight:500;\n}\n\n\n.rm-Sidebar_guides {\n opacity: 0;\n animation: fadeIn 0s 1s forwards;\n}\n\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}","js":"//Dark Mode Hack\n$(window).on('pageLoad', function(e, state) {\n console.log(\"Page Loaded!\");\n // Counter to track the number of intervals\n let intervalCount = 0;\n\n // Function to check and perform theme toggle behavior if the data-color-mode is set to \"system\"\n const checkAndToggleTheme = () => {\n // Get the current color mode\n var currentMode = document.documentElement.getAttribute('data-color-mode');\n\n console.log('Current color mode:', currentMode);\n\n // Check if the current mode is \"system\"\n if (currentMode === 'system') {\n console.log('System mode detected. Performing theme toggle behavior.');\n\n // Find the theme toggle button by aria-label\n const lightToggleButton = document.querySelector('[aria-label=\"Toggle to light mode\"]');\n\n if (lightToggleButton) {\n // Click the \"Light\" toggle button\n lightToggleButton.click();\n } else {\n console.log('Light mode toggle button not found.');\n }\n } else {\n console.log('Theme toggle behavior not performed because the color mode is not \"system\".');\n }\n\n // Increment intervalCount\n intervalCount++;\n\n // Check if intervalCount reaches 2, then stop further execution\n if (intervalCount >= 2) {\n clearInterval(intervalId);\n }\n };\n\n // Call the function to check and toggle the theme initially\n checkAndToggleTheme();\n\n // Set interval to repeatedly call checkAndToggleTheme every 1100 milliseconds\n const intervalId = setInterval(checkAndToggleTheme, 200);\n});\n\n\n// START - Custom Project Dropdown\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n setTimeout(function () {\n // Create a flag to check if the dropdown has already been inserted\n var dropdownInserted = false;\n\n // Find all elements with a class that starts with \"Header-bottom\" \n var headerBottomElements = document.querySelectorAll('[class^=\"Header-bottom\"] nav');\n\n // Define a mapping of URL paths to section names\n var pathToSectionMap = {\n \"/data-products\": \"Data Products\",\n \"/campaign-products\": \"Campaign Products\",\n \"/analytics-products\": \"Analytics Products\",\n \"/developer\": \"Developer\"\n };\n \n // Function to get the section name based on the current URL\n function getSectionName() {\n var currentPath = window.location.pathname.toLowerCase();\n for (var path in pathToSectionMap) {\n if (currentPath.indexOf(path) !== -1) {\n return pathToSectionMap[path];\n }\n }\n return \"Choose Product\";\n }\n\n // Loop through the matched elements\n headerBottomElements.forEach(function (navElement) {\n // Check if the current element is within an element with the class \"Dropdown\"\n if (!navElement.closest('.Dropdown')) {\n // If not, insert the clickable dropdown at the very beginning of this element\n\n // Create a new dropdown element\n var dropdown = document.createElement(\"div\");\n dropdown.classList.add(\"Dropdown\"); // You can define your CSS styles for the dropdown here\n\n // Create a button for the clickable dropdown\n var dropdownButton = document.createElement(\"button\");\n dropdownButton.classList.add(\"Dropdown-button\");\n\n // Get the section name based on the current URL\n var sectionName = getSectionName();\n\n // Set the dropdown button text\n dropdownButton.textContent = sectionName + \" ▾\";\n dropdown.appendChild(dropdownButton);\n\n // Create a list for the dropdown items\n var dropdownList = document.createElement(\"ul\");\n dropdownList.classList.add(\"Dropdown-list\"); // You can define your CSS styles for the dropdown list here\n\n // Define the items and their URLs\n var items = [\n { text: \"Data Products\", url: \"/data-products\" },\n { text: \"Campaign Products\", url: \"/campaign-products\" },\n { text: \"Analytics Products\", url: \"/analytics-products\" },\n { text: \"Developer\", url: \"/developer\" },\n ];\n\n // Filter out the active item from the list\n var activeSection = sectionName.toLowerCase();\n items = items.filter(function (item) {\n return item.text.toLowerCase() !== activeSection;\n });\n\n // Create list items and links for each item\n items.forEach(function (item) {\n var listItem = document.createElement(\"li\");\n var link = document.createElement(\"a\");\n link.setAttribute(\"href\", item.url);\n link.textContent = item.text;\n listItem.appendChild(link);\n dropdownList.appendChild(listItem);\n });\n\n // Append the dropdown list to the dropdown element\n dropdown.appendChild(dropdownList);\n\n // Insert the clickable dropdown at the very beginning of this element\n navElement.insertBefore(dropdown, navElement.firstChild);\n\n // Add a click event listener to toggle the visibility of the dropdown\n dropdownButton.addEventListener(\"click\", function () {\n dropdownList.classList.toggle(\"active\");\n });\n }\n });\n\n// Inject the styles into the document's head\nvar styleElement = document.createElement(\"style\");\nstyleElement.textContent = `\n/* Define CSS styles for the dropdown and its button */\n.rm-Header-bottom .Dropdown {position: relative;display: inline-block;z-index: 9999;}\n.rm-Header-bottom .Dropdown-button {background-color: transparent;cursor: pointer;font-weight: bold;font-size: 1em;color: #333;border: 1px solid #e8e8e8;padding: 6px 10px;border-radius: 8px;}\n.rm-Header-bottom .Dropdown-list {position: absolute;display: none;background-color: #fff;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);list-style: none;margin: 0;padding: 0;min-width: 125px;}\n.rm-Header-bottom ul.Dropdown-list {border-radius: 2px 2px 10px 10px;}\n.Dropdown-list li {padding: 3px 5px;text-align: left;}\n.Dropdown-button {cursor: pointer;}\n.Dropdown-list.active {display: block;}\n.Dropdown-list a {text-decoration: none;color: #333;display: block;padding: 7px;width: 145px;}\n.Dropdown-list a:hover {background-color: #f2f2f2;}\n.Header-leftADQdGVqx1wqU, .Header-bottom2eLKOFXMEmh5 {overflow: visible !important;}\n `;\n\n // Append the style element to the document's head\n document.head.appendChild(styleElement);\n }, 800); // delay\n}); \n// END - Custom Project Dropdown\n\n// START - Login Link\n$(window).on(\"pageLoad\", function (e, state) {\n const link = document.querySelector(\n \".rm-Header-top-link_login.Button_primary\"\n );\n\n if (link) {\n link.href = \"https://foursquare.com/developers/login\";\n }\n});\n// END - Login Link\n\n//-------------------------------------------------------\n\n// START - Logged in dev console link\nwindow.addEventListener(\"load\", function () {\n const header = document.querySelector(\".rm-Header-top-link_login\");\n const logoutWrapper = header.children[0];\n\n if (logoutWrapper === undefined) return;\n\n logoutWrapper.addEventListener(\"click\", function () {\n setTimeout(() => {\n const logoutDiv = document.querySelector(\n \".tippy-content > div > div > div\"\n );\n\n if (logoutDiv) {\n let logoutLink;\n if (window.hasDeveloperConsoleLink) {\n logoutLink = logoutDiv.children[1];\n } else {\n logoutLink = logoutDiv.children[0];\n }\n logoutLink.href = \"https://foursquare.com/developers/home\";\n logoutLink.target = \"_blank\";\n logoutLink.rel = \"noopener noreferrer\";\n logoutLink.textContent = \"Developer Console\";\n }\n }, \"25\");\n });\n});\n// END - Logged out dev console link\n\n//-------------------------------------------------------\n\n// START - Custom Search Popup\n$(window).on('pageLoad', function(e, state) {\n setTimeout(function() {\n const openSearchPopup = () => {\n const cmsSearchButton = document.querySelector('.rm-SearchToggle');\n if (cmsSearchButton) {\n cmsSearchButton.click();\n }\n };\n\n const triggerSearchButton = document.getElementsByClassName(\"landing-page-trigger-search-button\")[0];\n if (triggerSearchButton) {\n triggerSearchButton.addEventListener(\"click\", openSearchPopup);\n }\n }, 700);\n});\n\n\n\n// END - Custom Search Popup\n \n//-------------------------------------------------------\n\n// START - Tile Filters for Homepage\n// List of allowed URLs\nconst allowedUrls = [\n \"https://docs.foursquare.com/\",\n \"https://docs.foursquare.com/campaign-products\",\n \"https://docs.foursquare.com/data-products\",\n \"https://docs.foursquare.com/analytics-products\",\n \"https://docs.foursquare.com/developer\"\n];\n\n// Check if the current URL is in the allowed list\nif (allowedUrls.includes(window.location.href)) {\n \n // START - Tile Filters for Homepage\n document.addEventListener(\"DOMContentLoaded\", function () {\n let counter = 0; // Initialize counter variable\n\n const intervalId = setInterval(function () {\n console.log(\"Function loaded v2.0\");\n\n // Your filtering logic function\n function filterSections(event) {\n if (!event.target.classList.contains(\"filter-item\")) return;\n\n const filterValues = event.target.textContent.toLowerCase();\n let filterValue = filterValues.split(\" \")[0];\n console.log(filterValue);\n\n const filter = document.getElementById(\"tileFilter\");\n const sections = document.querySelectorAll(\".section-item\");\n\n // Remove active class from all filter items\n filter.querySelectorAll(\".filter-item\").forEach((li) => {\n li.classList.remove(\"active\");\n });\n\n // Add active class to clicked filter item\n event.target.classList.add(\"active\");\n\n sections.forEach((section) => {\n if (\n filterValue === \"all\" ||\n filterValue === \"view\" ||\n filterValue === \"view all\" ||\n section.classList.contains(filterValue)\n ) {\n section.style.display = \"block\";\n } else {\n section.style.display = \"none\";\n }\n });\n\n // Increment counter\n counter++;\n console.log(`Counter: ${counter}`);\n }\n\n // Attach the event listener directly to the filter element\n const filter = document.getElementById(\"tileFilter\");\n if (filter) {\n filter.addEventListener(\"click\", filterSections);\n\n // Clear interval after setting up the event listener to avoid multiple attachments\n clearInterval(intervalId);\n console.log(\"Event listener attached and interval cleared.\");\n }\n }, 1000);\n });\n // END - Tile Filters for Homepage\n}\n\n//-------------------------------------------------------\n\n// START - Change ALL code tabs on page if code type is selected\n$(window).on(\"pageLoad\", function (e, state) {\n document.querySelectorAll(\".CodeTabs-toolbar button\").forEach((item) => {\n item.addEventListener(\"click\", updateCodeTabs);\n });\n\n console.log(\"v7\");\n //$('#signindrop').appendTo('ul#header-nav-left > li');\n //$('#signindrop').appendTo(\".Header-leftADQdGVqx1wqU\");\n //$('#supportdrop').appendTo('ul#header-nav-right > li');\n});\n\nfunction updateCodeTabs(e) {\n if (e.isTrusted) {\n //console.log(\"Clicked\");\n //console.log(e);\n //const activeTabTitle = i.innerHTML;\n const activeTabTitle = e.srcElement.innerText;\n //console.log(\"Title:\", activeTabTitle);\n document.querySelectorAll(\".CodeTabs-toolbar button\").forEach((item) => {\n if (item.innerHTML == activeTabTitle) {\n item.click();\n }\n });\n }\n}\n// END - Change ALL code tabs on page if code type is selected\n\n//-------------------------------------------------------\n\n// START - TOC List highlighting\n$(window).on(\"pageLoad\", function (e, state) {\n var tocList = document.querySelector(\".toc-list li\");\n if (tocList !== null) {\n document.querySelector(\".toc-list li\").innerHTML =\n '';\n }\n $(\".toc-children > ul > li:first-child\").addClass(\"active\");\n\n const spyScrolling = () => {\n const sections = document.querySelectorAll(\".heading-anchor[id]\");\n\n window.onscroll = () => {\n const scrollPos =\n document.documentElement.scrollTop || document.body.scrollTop;\n\n for (let s in sections)\n if (\n sections.hasOwnProperty(s) &&\n sections[s].parentNode.offsetTop <= scrollPos\n ) {\n const id = sections[s].id;\n\n document\n .querySelector(\"ul.toc-list li.active\")\n .classList.remove(\"active\");\n document\n .querySelector(\n 'ul.toc-list li.toc-children ul li a[href=\"#' + id + '\"]'\n )\n .parentNode.classList.add(\"active\");\n }\n };\n };\n\n spyScrolling();\n});\n// END - TOC List highlighting\n\n//-------------------------------------------------------\n\n// START - Collapse Left Navigation\n$(window).on(\"pageLoad\", function (e, state) {\n function initializeSidebar() {\n // Collapse navigation in the sidebar initially\n $(\".rm-Sidebar-section > .rm-Sidebar-list\").addClass(\"section-collapsed\");\n $(\".rm-Sidebar-heading\").append(\" \");\n\n // Expand the section if any sidebar link is active\n const activeLink = $(\".rm-Sidebar-link.active\");\n if (activeLink.length > 0) {\n activeLink.parents(\".rm-Sidebar-list\").addClass(\"section-list-expanded\");\n activeLink\n .parents(\".rm-Sidebar-section\")\n .children(\".rm-Sidebar-heading\")\n .addClass(\"section-expanded\");\n // Add a class to all sidebar items within expanded sections\n $(\".section-list-expanded .Sidebar-item23D-2Kd61_k3\").addClass(\n \"expanded-section-item\"\n );\n }\n\n // Fix issue with sub-items getting stuck expanded\n $(\".subpages\").removeClass(\"section-list-expanded\");\n\n // Auto-expand first category (for landing)\n // $('.rm-Sidebar-heading').first().next().addClass(\"section-list-expanded\");\n\n // Add tabindex attribute to each heading\n $(\".rm-Sidebar-heading\").attr(\"tabindex\", \"0\");\n\n // Unbind existing event handlers to prevent duplication\n $(\".rm-Sidebar-heading, .expand-trigger\").off();\n\n // Handle keyboard navigation for Enter key\n $(document).on(\"keydown\", \".rm-Sidebar-heading\", function (e) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n $(this)\n .toggleClass(\"section-expanded\")\n .next()\n .toggleClass(\"section-list-expanded\");\n // Toggle the class for all sidebar items within expanded sections\n $(\".section-list-expanded .Sidebar-item23D-2Kd61_k3\").toggleClass(\n \"expanded-section-item\"\n );\n }\n });\n\n // Handle click events on sidebar headings\n $(\".rm-Sidebar-heading\").on(\"click\", function () {\n const isExpanded = $(this).hasClass(\"section-expanded\");\n // Remove only the class from the currently clicked section\n $(this)\n .toggleClass(\"section-expanded\")\n .next()\n .toggleClass(\"section-list-expanded\");\n // Toggle the class for all sidebar items within expanded sections\n $(\".section-list-expanded .Sidebar-item23D-2Kd61_k3\").toggleClass(\n \"expanded-section-item\"\n );\n });\n\n // Hide and toggle content for expand-trigger\n $(\".expand-content\").hide();\n $(\".expand-trigger\").on(\"click\", function () {\n const isHidden = $(\".expand-content\").toggle().is(\":hidden\");\n $(this)\n .find(\"span\")\n .text(isHidden ? \"Show\" : \"Hide\");\n });\n }\n\n // Call the initialize function\n initializeSidebar();\n});\n// END - Collapse Left Navigation\n\n//-------------------------------------------------------\n\n// START - Auto Select Response Dropdown\n//$(window).on(\"pageLoad\", function (e, state) {\n //const clickExample = () => {\n // const examples = document.querySelector(\n // \"[class^='APIResponse-menu-status']\"\n //);\n // if (examples) {\n // clearInterval(interval);\n // document.querySelector(\"[class^='APIResponse-menu-status']\").click();\n //}\n //};\n //const interval = setInterval(clickExample, 200);\n//});\n// END - Auto Select Response Dropdown\n\n//-------------------------------------------------------\n// START: Add Segment Tracking to Try It button\n// TODO: Verify this runs on route changes (UPDATED 11/14/2024 by ReadMe)\n$(window).on(\"load\", function(e, state) {\n // Call Segment Identify on all pages\n analytics.identify();\n\n function addTryItButtonEventListener(button) {\n button.addEventListener(\"click\", () => {\n console.log(\"Try It button Clicked (group)\");\n analytics.track(\"Try It button Clicked\");\n });\n }\n\n // Attempt to locate the button initially\n let tryItBtn = document.querySelector(\".rm-TryIt\");\n\n if (tryItBtn) {\n console.log(\"Try It button found initially.\");\n addTryItButtonEventListener(tryItBtn);\n } else {\n console.warn(\"Try It button not found on load. Setting up MutationObserver...\");\n\n // Set up a MutationObserver to watch for changes in the DOM\n const observer = new MutationObserver((mutations, obs) => {\n tryItBtn = document.querySelector(\".rm-TryIt\");\n if (tryItBtn) {\n console.log(\"Try It button found by MutationObserver.\");\n addTryItButtonEventListener(tryItBtn);\n obs.disconnect(); // Stop observing once the button is found\n }\n });\n\n // Start observing the document body for any added nodes\n observer.observe(document.body, { childList: true, subtree: true });\n }\n});\n\n// END: Add Segment Tracking to Try It button\n//-------------------------------------------------------\n\n$(window).on('pageLoad', function(e, state) {\n // Start the timeout\n setTimeout(function() {\n // Select all 'suggestEdits' links\n var editLinks = document.querySelectorAll('a.suggestEdits');\n\n // Function to modify the links\n function modifyLink(link) {\n link.addEventListener('click', function(event) {\n event.preventDefault(); // Prevent the default link behavior\n window.open(link.href, '_blank'); // Open in a new tab\n });\n link.target = '_blank'; // Ensure all links open in a new tab\n }\n\n // Apply the modifications to all 'suggestEdits' links\n editLinks.forEach(modifyLink);\n\n // Select all 'Log In' links using a more inclusive class identifier for login links\n var loginLinks = document.querySelectorAll('a[class*=\"rm-Header-top-link\"]');\n\n // Apply the modifications to all 'Log In' links\n loginLinks.forEach(modifyLink);\n }, 1000); // Delay of 1000 milliseconds (1 second)\n});\ndocument.addEventListener('DOMContentLoaded', () => {\n // Select all links in the header\n const headerLinks = document.querySelectorAll('.Header-leftADQdGVqx1wqU a');\n\n headerLinks.forEach(link => {\n const href = link.getAttribute('href');\n\n // Check if the href contains the versioned path (e.g., \"/developer/v20241206/\")\n if (href && href.includes('/developer/v')) {\n // Rewrite the URL by removing the versioned part\n const updatedHref = href.replace(/\\/developer\\/v\\d+\\//, '/developer/');\n link.setAttribute('href', updatedHref);\n }\n });\n});\n\n\n\n$(window).on(\"pageLoad\", function (e, state) {\n setTimeout(function () {\n // Check if there's an active link within the Developer Console section\n const isActiveDeveloperConsolePage =\n document.querySelector(\n \".Sidebar-listWrapper6Q9_yUrG906C .Sidebar-link2Dsha-r-GKh2.active\"\n ) !== null;\n\n if (isActiveDeveloperConsolePage) {\n const developerConsoleSection = Array.from(\n document.querySelectorAll(\n \".rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh\"\n )\n ).find(\n (heading) =>\n heading.textContent.includes(\"Developer Console\") &&\n heading.classList.contains(\"section-expanded\")\n )?.parentNode;\n\n if (developerConsoleSection) {\n document\n .querySelectorAll(\n \".rm-Sidebar_guides .Sidebar-listWrapper6Q9_yUrG906C\"\n )\n .forEach((section) => {\n section.style.display =\n section === developerConsoleSection ? \"\" : \"none\";\n section\n .querySelectorAll(\n \".Sidebar-item23D-2Kd61_k3, .subpages .Sidebar-item23D-2Kd61_k3\"\n )\n .forEach((item) => {\n item.style.display = \"\";\n });\n });\n\n const lastSectionHeading = document.querySelector(\n \".rm-Sidebar_guides .hub-sidebar-content > section:last-of-type > .Sidebar-headingTRQyOa2pk0gh\"\n );\n if (\n lastSectionHeading &&\n lastSectionHeading.textContent.includes(\"Developer Console\")\n ) {\n lastSectionHeading.style.display = \"block\";\n }\n\n // Call the function to duplicate navigation after a short delay to ensure the page is fully loaded\n setTimeout(function () {\n duplicateNavigation();\n }, 1); // Adjust the delay as needed\n }\n } else {\n\n // Hide the Developer Console section\n const developerConsoleSection = document.querySelector('.rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh');\n if (developerConsoleSection) {\n developerConsoleSection.parentNode.style.display = \"none\";\n }\n\n // Restore visibility of all other sidebar sections\n document\n .querySelectorAll(\".rm-Sidebar_guides .Sidebar-listWrapper6Q9_yUrG906C\")\n .forEach((section) => {\n section.style.display = \"\";\n });\n\n // Ensure that all section headings are visible\n document\n .querySelectorAll(\".rm-Sidebar_guides .Sidebar-headingTRQyOa2pk0gh\")\n .forEach((heading) => {\n heading.style.display = \"block\"; // Or whatever the default should be\n });\n\n // Remove the 'active' class from the Console Docs link in the top navigation, if it was set\n const consoleDocsLink = document.querySelector(\n '.Header-bottom-link[href*=\"developer/docs/developer-console-overview\"]'\n );\n if (consoleDocsLink) {\n consoleDocsLink.classList.remove(\"active\");\n }\n\n // Add the 'active' class to the Console Docs link\n const newConsoleDocsLink = document.querySelector('.Header-bottom-link[href*=\"developer/docs/developer-console-overview\"]');\n if (newConsoleDocsLink) {\n newConsoleDocsLink.classList.add(\"active\");\n }\n }\n }, 10); // Adjust delay as needed\n});\n\n\n// Function to duplicate and insert the original navigation\nfunction duplicateNavigation() {\n // Get the original element to be duplicated\n var originalElement = document.querySelector(\n \".rm-Header-bottom\"\n );\n\n // Check if the original element exists\n if (originalElement) {\n // Clone the original element\n var clonedElement = originalElement.cloneNode(true);\n\n // Insert the cloned element directly after the original element\n originalElement.parentNode.insertBefore(\n clonedElement,\n originalElement.nextSibling\n );\n\n // Hide the original element\n originalElement.style.display = \"none\";\n\n // Remove 'active' class from navigation links below\n const navigationLinks = document.querySelectorAll('.Header-leftADQdGVqx1wqU a');\n navigationLinks.forEach(link => {\n link.classList.remove('active');\n });\n\n // Add the 'active' class to the first Console Docs link\n const consoleDocsLink = document.querySelectorAll('.rm-Header-link[href*=\"developer/docs/developer-console-overview\"]')[1];\n if (consoleDocsLink) {\n consoleDocsLink.classList.add(\"active\");\n console.log(\"Added Active to Console Docs Link\");\n }\n }\n}\n\n\n\n$(window).on('pageLoad', function(e, state) {\n if (state && state.params && state.params.slug === \"address-form-autofill\") {\n function localAddressAutoFillJs() {\n const fsqAPIToken = \"fsq3gM6Yqlox6l+EPn1ITXAlJxk5YaBFlQS5bKofN7ov5W8=\";\n let sessionToken = generateRandomSessionToken();\n const addressInput = document.getElementById(\"autofill-search\");\n const dropDownField = document.getElementById(\"autofill-dropdown\");\n const ulField = document.getElementById(\"autofill-suggestions\");\n const errorField = document.getElementById(\"autofill-error\");\n const notFoundField = document.getElementById(\"autofill-not-found\");\n const cityInput = document.getElementById(\"autofill-city\");\n const regionInput = document.getElementById(\"autofill-region\");\n const countryInput = document.getElementById(\"autofill-country\");\n const postcodeInput = document.getElementById(\"autofill-postcode\");\n const address2Input = document.getElementById(\"autofill-address2\");\n const form = document.getElementById(\"autofill-form\");\n const searchContainer = document.getElementById(\n \"autofill-search-container\"\n );\n\n form && form.addEventListener(\"submit\", preventFormSubmit, true);\n const onChangeAutoComplete = debounce(changeAutoComplete);\n addressInput &&\n addressInput.addEventListener(\"input\", onChangeAutoComplete);\n searchContainer &&\n searchContainer.addEventListener(\"focusin\", focusEventAutoComplete);\n searchContainer &&\n searchContainer.addEventListener(\"focusout\", focusEventAutoComplete);\n\n ulField && ulField.addEventListener(\"click\", selectItem);\n\n function focusEventAutoComplete(event) {\n if (event.type === \"focusin\" && event.target.value) {\n dropDownField.style.display = \"block\";\n } else if (\n event.type === \"focusout\" &&\n !event.currentTarget.contains(event.relatedTarget)\n ) {\n dropDownField.style.display = \"none\";\n }\n }\n\n function preventFormSubmit(event) {\n event.preventDefault();\n }\n\n function logError(err) {\n console.warn(`ERROR(${err.code}): ${err.message}`);\n }\n\n /* Generate a random string with 32 characters.\n Session Token is a user-generated token to identify a session for billing purposes.\n Learn more about session tokens.\n https://docs.foursquare.com/reference/session-tokens\n */\n function generateRandomSessionToken(length = 32) {\n let result = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n return result;\n }\n\n let isFetching = false;\n async function changeAutoComplete({ target }) {\n const { value: inputSearch = \"\" } = target;\n ulField.innerHTML = \"\";\n notFoundField.style.display = \"none\";\n errorField.style.display = \"none\";\n if (inputSearch.length && !isFetching) {\n try {\n isFetching = true;\n const results = await autoComplete(inputSearch);\n if (results && results.length) {\n results.forEach((value) => {\n addItem(value);\n });\n } else {\n notFoundField.innerHTML = `Foursquare can't\n find ${inputSearch}. Make sure your search is spelled correctly.`;\n notFoundField.style.display = \"block\";\n }\n } catch (err) {\n errorField.style.display = \"block\";\n logError(err);\n } finally {\n isFetching = false;\n dropDownField.style.display = \"block\";\n }\n } else {\n dropDownField.style.display = \"none\";\n }\n }\n\n async function autoComplete(query) {\n try {\n const searchParams = new URLSearchParams({\n query,\n types: \"address\",\n session_token: sessionToken,\n }).toString();\n const searchResults = await fetch(\n `https://api.foursquare.com/v3/autocomplete?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await searchResults.json();\n return data.results;\n } catch (error) {\n throw error;\n }\n }\n\n function addItem(value) {\n const { link } = value;\n if (!link) return;\n ulField.innerHTML += `\n ${highlightedNameElement(value.text)}
\n ${value.text.secondary}
\n `;\n }\n\n async function selectItem({ target }) {\n if (target.tagName === \"BUTTON\") {\n const link = target.dataset.object;\n const addressDetail = await fetchAddressDetails(link);\n const { location = {} } = addressDetail;\n const {\n address = \"\",\n country = \"\",\n postcode = \"\",\n locality = \"\",\n region = \"\",\n } = location;\n addressInput.value = address;\n address2Input.value = \"\";\n countryInput.value = country;\n postcodeInput.value = postcode;\n cityInput.value = locality;\n regionInput.value = region;\n // generate new session token after a complete search\n sessionToken = generateRandomSessionToken();\n\n address2Input && address2Input.focus();\n dropDownField.style.display = \"none\";\n }\n }\n\n async function fetchAddressDetails(link) {\n try {\n const results = await fetch(`https://api.foursquare.com${link}`, {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n });\n const data = await results.json();\n return data;\n } catch (err) {\n logError(err);\n }\n }\n\n function highlightedNameElement(textObject) {\n if (!textObject) return \"\";\n const { primary, highlight } = textObject;\n if (highlight && highlight.length) {\n let beginning = 0;\n let hightligtedWords = \"\";\n for (let i = 0; i < highlight.length; i++) {\n const { start, length } = highlight[i];\n hightligtedWords += primary.substr(beginning, start - beginning);\n hightligtedWords += \"\" + primary.substr(start, length) + \" \";\n beginning = start + length;\n }\n hightligtedWords += primary.substr(beginning);\n return hightligtedWords;\n }\n return primary;\n }\n\n function debounce(func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n }\n }\n\n localAddressAutoFillJs();\n }\n if (state && state.params && state.params.slug === \"local-search-map\") {\n function loadLocalMapSearchJs() {\n mapboxgl.accessToken =\n \"pk.eyJ1IjoiZm91cnNxdWFyZSIsImEiOiJjbDNqNXdrN20wN3JtM2JvMWFqZGxoaGljIn0.uSxJ2t7E96TrBFsn3cXT_g\";\n const fsqAPIToken = \"fsq3bgqdcpLAJFkodk8gisc2F+NenA7gK/zI97A9nKQAXIw=\";\n let userLat = 40.7128;\n let userLng = -74.006;\n let sessionToken = generateRandomSessionToken();\n const inputField = document.getElementById(\"explorer-search\");\n const dropDownField = document.getElementById(\"explorer-dropdown\");\n const ulField = document.getElementById(\"explorer-suggestions\");\n const errorField = document.getElementById(\"explorer-error\");\n const notFoundField = document.getElementById(\"explorer-not-found\");\n\n const onChangeAutoComplete = debounce(changeAutoComplete);\n inputField.addEventListener(\"input\", onChangeAutoComplete);\n ulField.addEventListener(\"click\", selectItem);\n\n function success(pos) {\n const { latitude, longitude } = pos.coords;\n userLat = latitude;\n userLng = longitude;\n flyToLocation(userLat, userLng);\n }\n\n function logError(err) {\n console.warn(`ERROR(${err.code}): ${err.message}`);\n }\n\n navigator.geolocation.getCurrentPosition(success, logError, {\n enableHighAccuracy: true,\n timeout: 5000,\n maximumAge: 0,\n });\n\n const map = new mapboxgl.Map({\n container: \"map\",\n style: \"mapbox://styles/mapbox/light-v10\",\n center: [userLng, userLat],\n zoom: 12,\n });\n\n map.addControl(new mapboxgl.GeolocateControl());\n map.addControl(new mapboxgl.NavigationControl());\n\n let currentMarker;\n\n /* Generate a random string with 32 characters.\n Session Token is a user-generated token to identify a session for billing purposes.\n Learn more about session tokens.\n https://docs.foursquare.com/reference/session-tokens\n */\n function generateRandomSessionToken(length = 32) {\n let result = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n for (let i = 0; i < length; i++) {\n result += characters[Math.floor(Math.random() * characters.length)];\n }\n return result;\n }\n\n let isFetching = false;\n async function changeAutoComplete({ target }) {\n const { value: inputSearch = \"\" } = target;\n ulField.innerHTML = \"\";\n notFoundField.style.display = \"none\";\n errorField.style.display = \"none\";\n if (inputSearch.length && !isFetching) {\n try {\n isFetching = true;\n const results = await autoComplete(inputSearch);\n if (results && results.length) {\n results.forEach((value) => {\n addItem(value);\n });\n } else {\n notFoundField.innerHTML = `Foursquare can't\n find ${inputSearch}. Make sure your search is spelled correctly.\n Don't see the place you're looking for? .`;\n notFoundField.style.display = \"block\";\n }\n } catch (err) {\n errorField.style.display = \"block\";\n logError(err);\n } finally {\n isFetching = false;\n dropDownField.style.display = \"block\";\n }\n } else {\n dropDownField.style.display = \"none\";\n }\n }\n\n async function autoComplete(query) {\n const { lng, lat } = map.getCenter();\n userLat = lat;\n userLng = lng;\n try {\n const searchParams = new URLSearchParams({\n query,\n types: \"place\",\n ll: `${userLat},${userLng}`,\n radius: 50000,\n session_token: sessionToken,\n }).toString();\n const searchResults = await fetch(\n `https://api.foursquare.com/v3/autocomplete?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await searchResults.json();\n return data.results;\n } catch (error) {\n throw error;\n }\n }\n\n function addItem(value) {\n const placeDetail = value[value.type];\n if (!placeDetail || !placeDetail.geocodes || !placeDetail.geocodes.main)\n return;\n const { latitude, longitude } = placeDetail.geocodes.main;\n const fsqId = placeDetail.fsq_id;\n const dataObject = JSON.stringify({ latitude, longitude, fsqId });\n ulField.innerHTML += `\n ${highlightedNameElement(value.text)}
\n ${value.text.secondary}
\n `;\n }\n\n async function selectItem({ target }) {\n if (target.tagName === \"LI\") {\n const valueObject = JSON.parse(target.dataset.object);\n const { latitude, longitude, fsqId } = valueObject;\n const placeDetail = await fetchPlacesDetails(fsqId);\n addMarkerAndPopup(latitude, longitude, placeDetail);\n flyToLocation(latitude, longitude);\n\n // generate new session token after a complete search\n sessionToken = generateRandomSessionToken();\n const name = target.dataset.name;\n inputField.value = target.children[0].textContent;\n dropDownField.style.display = \"none\";\n }\n }\n\n async function fetchPlacesDetails(fsqId) {\n try {\n const searchParams = new URLSearchParams({\n fields: \"fsq_id,name,geocodes,location,photos,rating\",\n session_token: sessionToken,\n }).toString();\n const results = await fetch(\n `https://api.foursquare.com/v3/places/${fsqId}?${searchParams}`,\n {\n method: \"get\",\n headers: new Headers({\n Accept: \"application/json\",\n Authorization: fsqAPIToken,\n }),\n }\n );\n const data = await results.json();\n return data;\n } catch (err) {\n logError(err);\n }\n }\n\n function createPopup(placeDetail) {\n const { location = {}, name = \"\", photos = [], rating } = placeDetail;\n let photoUrl = \"https://files.readme.io/c163d6e-placeholder.svg\";\n if (photos.length && photos[0]) {\n photoUrl = `${photos[0].prefix}56${photos[0].suffix}`;\n }\n const popupHTML = ``;\n\n const markerHeight = 35;\n const markerRadius = 14;\n const linearOffset = 8;\n const verticalOffset = 8;\n const popupOffsets = {\n top: [0, verticalOffset],\n \"top-left\": [0, verticalOffset],\n \"top-right\": [0, verticalOffset],\n bottom: [0, -(markerHeight + verticalOffset)],\n \"bottom-left\": [\n 0,\n (markerHeight + verticalOffset - markerRadius + linearOffset) * -1,\n ],\n \"bottom-right\": [\n 0,\n (markerHeight + verticalOffset - markerRadius + linearOffset) * -1,\n ],\n left: [\n markerRadius + linearOffset,\n (markerHeight - markerRadius) * -1,\n ],\n right: [\n -(markerRadius + linearOffset),\n (markerHeight - markerRadius) * -1,\n ],\n };\n return new mapboxgl.Popup({\n offset: popupOffsets,\n closeButton: false,\n }).setHTML(popupHTML);\n }\n\n function addMarkerAndPopup(lat, lng, placeDetail) {\n if (currentMarker) currentMarker.remove();\n currentMarker = new mapboxgl.Marker({\n color: \"#3333FF\",\n })\n .setLngLat([lng, lat])\n .setPopup(createPopup(placeDetail))\n .addTo(map);\n\n currentMarker.togglePopup();\n }\n\n function flyToLocation(lat, lng) {\n map.flyTo({\n center: [lng, lat],\n });\n }\n\n function highlightedNameElement(textObject) {\n if (!textObject) return \"\";\n const { primary, highlight } = textObject;\n if (highlight && highlight.length) {\n let beginning = 0;\n let hightligtedWords = \"\";\n for (let i = 0; i < highlight.length; i++) {\n const { start, length } = highlight[i];\n hightligtedWords += primary.substr(beginning, start - beginning);\n hightligtedWords += \"\" + primary.substr(start, length) + \" \";\n beginning = start + length;\n }\n hightligtedWords += primary.substr(beginning);\n return hightligtedWords;\n }\n return primary;\n }\n\n function debounce(func, timeout = 300) {\n let timer;\n return (...args) => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, timeout);\n };\n }\n }\n\n loadLocalMapSearchJs();\n }\n});\n\n$(window).on(\"pageLoad\", function (e, state) {\n const openSearchPopup = () => {\n const headerSearch = document.getElementById(\"hub-search-results\");\n if (headerSearch) {\n headerSearch.classList.add(\"hub-search-results-active\");\n document\n .getElementsByClassName(\"Input Input_md SearchBox-InputUQZAW9QXMe-c\")[0]\n ?.focus();\n }\n };\n\n const triggerSearchButton = document.getElementsByClassName(\n \"landing-page-trigger-search-button\"\n )[0];\n if (triggerSearchButton) {\n triggerSearchButton.addEventListener(\"click\", openSearchPopup);\n }\n});\n\n// START: Add Segment Tracking to Try It button\n// TODO: Verify this runs on route changes, so button gets instrumented on every page\n$(window).on(\"load\", function (e, state) {\n var tryItBtn = document.querySelector(\".rm-TryIt\");\n\n // in case the button has not yet renedered\n if (tryItBtn === undefined) return;\n\n tryItBtn.addEventListener(\"click\", () => {\n console.log(\"Try It button Clicked (project)\");\n analytics.track(\"Try It button Clicked\");\n });\n});\n// END: Add Segment Tracking to Try It button\n\n\n\n// CUSTOM LAUNCH TOP NAV CODE - README \ndocument.addEventListener('DOMContentLoaded', () => {\n setTimeout(() => {\n document.querySelectorAll('.Header-leftADQdGVqx1wqU a[href]').forEach(a => {\n a.addEventListener('click', e => {\n e.preventDefault();\n window.location.href = a.href;\n });\n });\n }, 100);\n});\n\n// CUSTOM LAUNCH SIDEBAR CODE (FINAL project: inject Places first, then Users under Welcome)\n// Runs after a short delay to avoid flicker or unwanted auto-expansion.\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Delay entire injection by 1 second\n setTimeout(() => {\n (async function() {\n // Normalize path (strip trailing slash)\n const path = window.location.pathname.replace(/\\/$/, '');\n\n // Only act on the FINAL project paths\n if (!path.startsWith('/developer/reference/')) {\n return;\n }\n\n // Pages to pull from: Places API overview and Users API overview\n // **Places first**, then Users\n const toInject = [\n {\n otherPageUrl: '/fsq-developers-places/reference/places-api-overview',\n targetSectionText: 'Places API'\n },\n {\n otherPageUrl: '/fsq-developers-users/reference/users-api-overview',\n targetSectionText: 'Users API'\n }\n ];\n\n // If versioned (e.g. /v2023-05-01/ in URL), insert version segment into otherPageUrl\n const versionMatch = window.location.pathname.match(/\\/(v\\d{4}-\\d{2}-\\d{2})\\//);\n function applyVersion(url) {\n if (versionMatch) {\n const version = versionMatch[1];\n return url.replace('/reference/', `/${version}/reference/`);\n }\n return url;\n }\n\n // Fetch & cache a single section's HTML from another page\n async function fetchSectionHtml(otherPageUrl, targetSectionText) {\n const versionedUrl = applyVersion(otherPageUrl);\n const cacheKey = `crossSection:${versionedUrl}:${targetSectionText}`;\n const cached = sessionStorage.getItem(cacheKey);\n if (cached) {\n return cached;\n }\n try {\n const resp = await fetch(versionedUrl, { credentials: 'same-origin' });\n if (!resp.ok) {\n console.warn('[CrossInject] Fetch failed', resp.status, versionedUrl);\n return null;\n }\n const htmlText = await resp.text();\n // Parse to DOM\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlText, 'text/html');\n // Find the sidebar section\n const sidebarSelector = '.rm-Sidebar';\n const otherSidebar = doc.querySelector(sidebarSelector);\n if (!otherSidebar) {\n console.warn('[CrossInject] Sidebar not found for', versionedUrl);\n return null;\n }\n // Locate the whose includes targetSectionText\n let foundSection = null;\n otherSidebar.querySelectorAll('section').forEach(sec => {\n if (foundSection) return;\n const h2 = sec.querySelector('h2');\n if (h2 && h2.textContent.trim().includes(targetSectionText)) {\n foundSection = sec;\n }\n });\n if (!foundSection) {\n console.warn('[CrossInject] Section not found:', targetSectionText, 'in', versionedUrl);\n return null;\n }\n const sectionHtml = foundSection.outerHTML;\n try {\n sessionStorage.setItem(cacheKey, sectionHtml);\n } catch (_) {}\n return sectionHtml;\n } catch (err) {\n console.error('[CrossInject] Error fetching/parsing:', err);\n return null;\n }\n }\n\n // Wait until the current page's sidebar is present\n function whenSidebarReady(fn) {\n const interval = setInterval(() => {\n const sidebarNav = document.querySelector('.rm-Sidebar');\n if (sidebarNav) {\n clearInterval(interval);\n fn(sidebarNav);\n }\n }, 100);\n // Stop polling after 5s\n setTimeout(() => clearInterval(interval), 5000);\n }\n\n // Collapse helper for a section element\n function collapseSection(sec) {\n const h2 = sec.querySelector('h2');\n const ul = sec.querySelector('ul');\n if (h2) {\n h2.classList.remove('section-expanded');\n h2.classList.add('section-collapsed');\n h2.setAttribute('aria-expanded', 'false');\n }\n if (ul) {\n ul.classList.add('section-collapsed');\n ul.classList.remove('section-list-expanded');\n }\n }\n // Expand helper\n function expandSection(sec) {\n const h2 = sec.querySelector('h2');\n const ul = sec.querySelector('ul');\n if (h2) {\n h2.classList.remove('section-collapsed');\n h2.classList.add('section-expanded');\n h2.setAttribute('aria-expanded', 'true');\n }\n if (ul) {\n ul.classList.remove('section-collapsed');\n ul.classList.add('section-list-expanded');\n }\n }\n\n // Fetch all needed sections in parallel\n const results = await Promise.all(\n toInject.map(item =>\n fetchSectionHtml(item.otherPageUrl, item.targetSectionText)\n .then(html => ({ ...item, sectionHtml: html }))\n )\n );\n const validSections = results.filter(r => r.sectionHtml);\n if (validSections.length === 0) {\n return;\n }\n\n // Once our sidebar is ready, inject under \"Welcome\"\n whenSidebarReady(sidebarNav => {\n const contentDiv = sidebarNav.querySelector('.hub-sidebar-content');\n if (!contentDiv) {\n console.warn('[CrossInject] .hub-sidebar-content not found; abort insertion.');\n return;\n }\n\n // Find \"Welcome\" section\n const welcomeSection = Array.from(contentDiv.querySelectorAll('section')).find(sec => {\n const h2 = sec.querySelector('h2');\n return h2 && h2.textContent.trim() === 'Welcome';\n });\n let insertAfter = welcomeSection;\n\n validSections.forEach(({ targetSectionText, sectionHtml }) => {\n const wrapper = document.createElement('div');\n wrapper.innerHTML = sectionHtml;\n const originalSectionNode = wrapper.firstElementChild;\n if (!originalSectionNode) {\n console.warn('[CrossInject] No section node for', targetSectionText);\n return;\n }\n const sectionClone = originalSectionNode.cloneNode(true);\n\n // Adapt heading & toggle as needed:\n const injectedH2 = sectionClone.querySelector('h2');\n const injectedUL = sectionClone.querySelector('ul');\n if (injectedH2 && injectedUL) {\n // Copy classes from an existing template if present\n const templateH2 = sidebarNav.querySelector('.hub-sidebar-content section h2');\n if (templateH2) {\n injectedH2.className = templateH2.className;\n } else {\n injectedH2.classList.add('Sidebar-headingTRQyOa2pk0gh', 'rm-Sidebar-heading');\n }\n injectedH2.setAttribute('tabindex', '0');\n // Remove existing chevrons, clone from template or fallback\n Array.from(injectedH2.querySelectorAll('.icon-chevron')).forEach(el => el.remove());\n if (templateH2) {\n templateH2.querySelectorAll('.icon-chevron').forEach(iconSpan => {\n injectedH2.appendChild(iconSpan.cloneNode(true));\n });\n } else {\n const fallbackSpan = document.createElement('span');\n fallbackSpan.className = 'icon-chevron';\n injectedH2.appendChild(fallbackSpan);\n }\n // Initially collapsed\n collapseSection(sectionClone);\n\n // Toggle handler\n const toggleFn = () => {\n const isCollapsed = injectedUL.classList.contains('section-collapsed');\n if (isCollapsed) {\n expandSection(sectionClone);\n } else {\n collapseSection(sectionClone);\n }\n };\n injectedH2.style.cursor = 'pointer';\n injectedH2.addEventListener('click', toggleFn);\n injectedH2.addEventListener('keydown', e => {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault();\n toggleFn();\n }\n });\n }\n\n // Nested toggles\n sectionClone.querySelectorAll('a.Sidebar-link_parent').forEach(aParent => {\n let btn = aParent.querySelector('button');\n if (!btn && aParent.nextElementSibling && aParent.nextElementSibling.tagName === 'BUTTON') {\n btn = aParent.nextElementSibling;\n }\n let subUl = null;\n if (btn) {\n const maybeUl = btn.parentElement.nextElementSibling;\n if (maybeUl && maybeUl.classList.contains('subpages')) subUl = maybeUl;\n }\n if (!subUl) {\n const parentLi = aParent.closest('li');\n if (parentLi) {\n const maybe = parentLi.querySelector('ul.subpages');\n if (maybe) subUl = maybe;\n }\n }\n if (btn && subUl) {\n // collapsed by default\n btn.setAttribute('aria-expanded', 'false');\n subUl.classList.add('section-collapsed');\n subUl.classList.remove('section-list-expanded');\n btn.style.cursor = 'pointer';\n btn.addEventListener('click', e => {\n e.preventDefault();\n const expanded = btn.getAttribute('aria-expanded') === 'true';\n if (expanded) {\n btn.setAttribute('aria-expanded', 'false');\n subUl.classList.add('section-collapsed');\n subUl.classList.remove('section-list-expanded');\n } else {\n btn.setAttribute('aria-expanded', 'true');\n subUl.classList.remove('section-collapsed');\n subUl.classList.add('section-list-expanded');\n }\n });\n }\n });\n\n // Insert right after Welcome (Places first, then Users)\n if (insertAfter && insertAfter.parentElement === contentDiv) {\n insertAfter.insertAdjacentElement('afterend', sectionClone);\n insertAfter = sectionClone;\n } else {\n contentDiv.appendChild(sectionClone);\n }\n console.log(`[CrossInject] Injected \"${targetSectionText}\" after Welcome.`);\n });\n\n // After injecting both, auto-expand whichever matches current path\n function normalizeHref(href) {\n try {\n const url = new URL(href, window.location.origin);\n return url.pathname.replace(/\\/$/, '');\n } catch {\n return href.replace(/\\/$/, '');\n }\n }\n const normPath = window.location.pathname.replace(/\\/$/, '');\n // Clear any previous active marks:\n contentDiv.querySelectorAll('a[aria-current]').forEach(a => {\n a.removeAttribute('aria-current');\n a.classList.remove('active');\n });\n // Find matches among injected links:\n const allLinks = Array.from(contentDiv.querySelectorAll('a'));\n allLinks.forEach(a => {\n const href = a.getAttribute('href');\n if (!href) return;\n if (normalizeHref(href) === normPath) {\n // mark active\n a.setAttribute('aria-current', 'page');\n a.classList.add('active');\n // expand its parent section\n let sec = a.closest('section');\n if (sec) expandSection(sec);\n // expand ancestors\n let anc = a.parentElement;\n while (anc && anc !== contentDiv) {\n if (anc.tagName === 'UL' && anc.classList.contains('subpages')) {\n anc.classList.remove('section-collapsed');\n anc.classList.add('section-list-expanded');\n const parentLi = anc.closest('li');\n if (parentLi) {\n const btn = parentLi.querySelector('button[aria-expanded]');\n if (btn) btn.setAttribute('aria-expanded', 'true');\n }\n }\n if (anc.tagName === 'SECTION') {\n expandSection(anc);\n }\n anc = anc.parentElement;\n }\n }\n });\n // If none matched exactly, all remain collapsed.\n });\n })();\n }, 600);\n});","html":{"header":"\n\n\n\n\n\n \n\n\n\n\n\n\n\n","home_footer":"\n\n\n\n\n\n ","page_footer":"\n\n \n"}},"header":{"type":"line","gradient_color":null,"link_style":"buttons","overlay":{"fill":"auto","type":"triangles","position":"top-left","image":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}}},"ai":{"dropdown":"disabled","options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","view_as_markdown":"enabled"}},"navigation":{"first_page":"landing_page","left":[],"logo_link":"homepage","page_icons":"enabled","right":[{"type":"link_url","title":"Support","url":"https://support.foursquare.com/hc/en-us/requests/new?ticket_form_id=13089705025180","custom_page":null},{"type":"user_controls","title":null,"url":null,"custom_page":null}],"sub_nav":[{"type":"link_url","title":"❯ Console Docs","url":"https://docs.foursquare.com/developer/docs/developer-console-overview","custom_page":null}],"subheader_layout":"links","version":"disabled","links":{"home":{"label":"Home","visibility":"enabled"},"graphql":{"label":"GraphQL","visibility":"disabled"},"guides":{"label":"Guides","alias":"SDK Docs","visibility":"enabled"},"reference":{"label":"API Reference","alias":"API Docs","visibility":"enabled"},"recipes":{"label":"Recipes","alias":null,"visibility":"disabled"},"changelog":{"label":"Changelog","alias":"Release Notes","visibility":"disabled"},"discussions":{"label":"Discussions","alias":null,"visibility":"disabled"}}}},"git":{"connection":{"repository":{},"organization":null,"status":"inactive"}}}},"version":{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]}},"is404":false,"isDetachedProductionSite":false,"lang":"en","langFull":"Default","reqUrl":"/developer/reference/mapi-reports","version":{"_id":"6606e9c5e8ce1f005276a817","version":"1.0","version_clean":"1.0.0","codename":"OAS Spec File","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9c5e8ce1f005276a84a","6606e9c5e8ce1f005276a84b","64f77a125b90e20045ad3f37","6606e9c5e8ce1f005276a84c","659d9bd8788254004fcbbf9b","6606e9c5e8ce1f005276a84d","6606e9c5e8ce1f005276a84e","6606e9c5e8ce1f005276a84f","6606e9c5e8ce1f005276a850","634d7c4489e57300949dfc2f","6606e9c5e8ce1f005276a851","64f77a125b90e20045ad3f3f","6606e9c5e8ce1f005276a852","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","6606e9c5e8ce1f005276a853","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","6606e9c5e8ce1f005276a854","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","6606e9c5e8ce1f005276a855","6606e9c5e8ce1f005276a856","6606e9c5e8ce1f005276a857","6606e9c5e8ce1f005276a858","6606e9c5e8ce1f005276a859","6606e9c5e8ce1f005276a85a","660f042788e24f000fc7de39","660f289c25b9de0053f27408","67d86f41e2a4660024496b59"],"project":"6606e9c5e8ce1f005276b057","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"6606e9c5e8ce1f005276a816","updatedAt":"2025-03-17T18:51:45.040Z","pdfStatus":"complete","apiRegistries":[]}}">