Products

Explore our products

Learn more about our complete suite of geospatial technology products.

  • View All
  • Analytics Products
  • Campaign Products
  • Data Products
  • Developer

Analytics Products

Studio

Next-generation geospatial analytics platform for working with big geospatial data.

Campaign Products

Targeting

Create and deploy audience segment, dervied from our rich repository of historical place visits.

Campaign Products

Attribution

Quantify the effectiveness of advertising campaigns at driving conversions across all channels.

Data Products

Places

Enrich your understanding of locations to help you drive business decisions or develop engaging user experiences.

Data Products

Placemaker Tools

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.

Developer

Places API New!

Access global POI data and rich content via our new Places API endpoints.

Developer

Users API New!

Manage user accounts and authentication endpoints for Foursquare users.

Developer

Movement Geofence API

Enable Movement SDK user-configured geofences for specific venues, categories, and more.

Developer

Studio Data API

Create, manage, and modify geospatial assets used on Foursquare Studio . Integrate into your pipeline tasks for the bulk processing of geospatial data, allowing for the efficient flow of data into Studio.

Developer

Measurement API

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.

Developer

Movement SDK

Create real-time, contextual mobile experiences, and bridge the gap between online interests and real-world behaviors.

Developer

Studio Data SDK

Supports automated, scalable management of maps and seamless integration with your work flows.

Developer

Studio Map SDK

Control, embed and customize maps on your own webpage or in Jupyter Notebooks.

Developer

Places API - Deprecated

Access global POI data and rich content from 100K+ trusted sources via our API for real-time venue search, discovery, and ranking.

Developer

Personalization API - Deprecated

Leverage our global POI database alongside our personalization algorithms to provide a personalized search experience unique to a user’s specific tastes, visit history, review sentiment, and more.

Product Spotlight

Placemaker Tools

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.

  • Placemakers are the dedicated, passionate members of our global open source community who contribute to our shared understanding of places around the world.

  • 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.

  • Directly contribute to the accuracy of places for Swarm users and developers using our data to build rich, location-powered features.

Foursquare API Access Example

Resources

Get Started Guides

Get Started with the Placemaker Tools

Placemakers are the most dedicated and passionate members of our community. They care deeply about maintaining the accuracy and quality of our data.

Read more

Get Started with the Places API

New to the Foursquare Places API? Not to worry, we've got you covered. In just a few simple steps, you'll be up and running with your first API call in no time!

Read more

Get Started with Foursquare Studio

Using Foursquare Studio, you can create powerful geospatial visualizations that you can share with the world.

Read more

\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"}},"custom_domain":"docs.foursquare.com","childrenProjects":[{"_id":"6606e9e46d03dc004a19dbb3","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":"#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":"row","link_logo_to_url":true,"theme":"solid","colorScheme":"light","overlay":"triangles","landing":true,"sticky":false,"hide_logo":true,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"logo":["https://files.readme.io/4b61311-small-395ef92-small-docs.png","4b61311-small-395ef92-small-docs.png",324,40,"#000000","https://files.readme.io/a6f9fab-395ef92-small-docs.png","660acce3f965ed0054b96062"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"favicon":["https://files.readme.io/c8f764e-small-favicon.png","favicon.png",32,32,"#000000","https://files.readme.io/48bd6be-favicon.png"],"stylesheet":"","stylesheet_hub2":"","stylesheet_hub3":"","javascript":"","javascript_hub2":"","html_promo":"","html_body":"","html_footer":"
\n
\n \n
\n
\n
\n
\n

© 2024 Foursquare. All rights reserved.

\n \n
\n
\n\n\n
\n \n\t\n
\n\n","html_head":"","html_footer_meta":"","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"","promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"","text":"","_id":"630e64812b4ed50089f1da1a"}],"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":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":[]}},"glossaryTerms":[{"_id":"630e64812b4ed50089f1da19","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"provider":"","settings":{}},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","html":"
\n
\n
\n

Data Product Documentation

\n

\n Find help, follow step-by-step guides, and learn more about how to power your business forward with rich POI data.\n

\n
Search
\n
\n
\n
\n
\n
\n

Products

\n

Explore our products

\n

\n Learn more about our suite of data products.\n

\n
\n
\n
\n
\n \n \n \n \n \n \n
\n

Places

\n

\n Enrich your understanding of locations to help you drive business decisions or develop engaging user experiences.\n

\n \n
\n
\n
\n \n
\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
\n
\n
\n
\n

Data Tools

\n

Places Open Source Data Schema

\n

\n Foursquare Places offers 120M+ points of interest across 200+ countries and territories. We combine ground truth datasets, authoritative third-party sources, and our first-party data to provide the most accurate data available.\n

\n
    \n
  • \n \n \n \n Access free data to accelerate geospatial innovation and insights\n
  • \n
  • \n \n \n \n 24 Core attributes including place info, details and categories\n
  • \n
  • \n \n \n \n Rich attributes are available via the Places Pro & Premium packages\n
  • \n
\n \n
\n
\n \"Example\n\n \n \n\n
\n
\n
\n
\n \n
\n
\n
\n

Resources

\n

Attributes & Delivery

\n
\n
\n
\n
APIs
\n

Places Categories

\n

\n Foursquare attempts to apply accurate and granular categorization to each of our POI records. In order to accomplish this, we leverage our own proprietary taxonomy of 1K+ categories.\n

\n

\n Read more\n

\n
\n
\n
Feature
\n

Places Chains

\n

\n Foursquare has created explicit associations between national and local brands and their brick-and-mortar locations. Users can query the Places dataset explicitly by chain name or chain ID to obtain a list of stores representing that chain.\n

\n

\n Read more\n

\n
\n
\n
Feature
\n

Delivery Options

\n

\n Determine which type of access - Open Source, Flat File or API - is best suited for your business needs. While you can access Places data via API or flat file, our API was designed for specific use cases common to web and app developers vs data delivered weekly or monthly, available via flat file. \n

\n

\n Read more\n

\n
\n
\n
\n
\n
\n
\n

Power your business forward with rich POI data

\n

\n Location data is hard to get right. See why data professionals trust Foursquare’s leading, global POI database.\n

\n Schedule a demo\n
\n
\n
"}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"monthlyPurchaseLimit":0,"meteredBilling":{}},"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":""},"oauth_url":"","onboardingCompleted":{"api":false,"appearance":true,"documentation":true,"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":"","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":false,"points":50},"tryItNow":{"enabled":false,"points":35},"syncingOAS":{"enabled":false,"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":false,"points":1},"variables":{"enabled":false,"points":1},"integrations":{"enabled":true,"points":2}},"totalScore":43},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"6606e9e46d03dc004a19db33","version":"1.0","version_clean":"1.0.0","codename":"data-products","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9e46d03dc004a19db2d","6606e9e46d03dc004a19db2d","6606e9e46d03dc004a19db24","6606e9e46d03dc004a19db2e","6606e9e46d03dc004a19db2f","6606e9e46d03dc004a19db30","661efd3f819e30001bcde27a","674f28a28880f700111f9915","674f28a518c85f0076775b28"],"project":"6606e9e46d03dc004a19dbb3","releaseDate":"2022-08-30T19:26:58.983Z","createdAt":"2024-03-20T21:01:41.983Z","__v":1,"forked_from":"6606e9e46d03dc004a19db31","updatedAt":"2024-12-03T15:49:57.493Z"},"subdomain":"fsq-data","subpath":"data-products","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://support.foursquare.com/hc/en-us/requests/new?ticket_form_id=12951580568476"},{"type":"url","text":"Log In","url":"https://location.foursquare.com/log-in/"}],"bottom":[],"edited":true},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2024-04-12T16:18:44.528Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://docs.foursquare.com","versions":[{"_id":"6606e9e46d03dc004a19db31","version":"0.1","version_clean":"0.1.0","codename":"Pre Unification","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9e46d03dc004a19db1d","6606e9e46d03dc004a19db1d","6606e9e46d03dc004a19db1e","6606e9e46d03dc004a19db1f","6606e9e46d03dc004a19db20","6606e9e46d03dc004a19db21","6606e9e46d03dc004a19db22","634763784b021603544b1398","6606e9e46d03dc004a19db23","6606e9e46d03dc004a19db24"],"project":"6606e9e46d03dc004a19dbb3","releaseDate":"2022-08-30T19:26:58.983Z","createdAt":"2022-08-30T19:26:58.983Z","__v":2,"updatedAt":"2024-04-01T14:56:13.870Z"},{"_id":"6606e9e46d03dc004a19db32","version":"3.0","version_clean":"3.0.0","codename":"all-places","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606e9e46d03dc004a19db25","6606e9e46d03dc004a19db25","6606e9e46d03dc004a19db26","6606e9e46d03dc004a19db27","6606e9e46d03dc004a19db28","6606e9e46d03dc004a19db29","6606e9e46d03dc004a19db2a","634763784b021603544b1398","6606e9e46d03dc004a19db2b","6606e9e46d03dc004a19db24","6606e9e46d03dc004a19db2c"],"project":"6606e9e46d03dc004a19dbb3","releaseDate":"2022-08-30T19:26:58.983Z","createdAt":"2023-08-11T15:01:22.585Z","__v":0,"forked_from":"6606e9e46d03dc004a19db31","updatedAt":"2023-08-11T15:01:22.781Z"},{"_id":"6606e9e46d03dc004a19db33","version":"1.0","version_clean":"1.0.0","codename":"data-products","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6606e9e46d03dc004a19db2d","6606e9e46d03dc004a19db2d","6606e9e46d03dc004a19db24","6606e9e46d03dc004a19db2e","6606e9e46d03dc004a19db2f","6606e9e46d03dc004a19db30","661efd3f819e30001bcde27a","674f28a28880f700111f9915","674f28a518c85f0076775b28"],"project":"6606e9e46d03dc004a19dbb3","releaseDate":"2022-08-30T19:26:58.983Z","createdAt":"2024-03-20T21:01:41.983Z","__v":1,"forked_from":"6606e9e46d03dc004a19db31","updatedAt":"2024-12-03T15:49:57.493Z"}],"variableDefaults":[],"webhookEnabled":false},{"_id":"6606ea084f38af000fe23ce1","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":"#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":"row","link_logo_to_url":true,"theme":"solid","colorScheme":"light","overlay":"triangles","landing":true,"sticky":false,"hide_logo":true,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"logo":["https://files.readme.io/574d47f-small-395ef92-small-docs.png","574d47f-small-395ef92-small-docs.png",324,40,"#000000","https://files.readme.io/95663d4-395ef92-small-docs.png","660accf59b63f000123b85fa"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"favicon":["https://files.readme.io/85c4b96-small-favicon.png","favicon.png",32,32,"#000000","https://files.readme.io/9871454-favicon.png"],"stylesheet":"","stylesheet_hub2":"","stylesheet_hub3":"","javascript":"","javascript_hub2":"","html_promo":"","html_body":"","html_footer":"
\n
\n \n
\n
\n
\n
\n

© 2024 Foursquare. All rights reserved.

\n \n
\n
\n\n\n
\n \n\t\n
\n\n","html_head":"","html_footer_meta":"","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"","promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"","text":"","_id":"630e649f542a1103a6b326f6"}],"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":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":[]}},"glossaryTerms":[{"_id":"630e649f542a1103a6b326f5","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"},{"_id":"65e10bd04367bc001f641cc7","term":"Campaign Reach","definition":"Estimate of total uniques reached by the campaign, based on total impressions and impressions per exposed member of Foursquare audience."}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"provider":"","settings":{}},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","html":"\n\n\n
\n
\n
\n

Campaign Product Documentation

\n

\n Find help, follow step-by-step guides, and learn more about optimizing your advertising iniatives with our Campaign Products.\n

\n
Search
\n
\n
\n
\n
\n
\n

Products

\n

Explore our products

\n

\n Learn more about our suite of campaign products.\n

\n
\n
\n
\n
\n \n \n \n \n
\n

Targeting

\n

\n Learn about Audience, a tool for designing/deploying audience segments derived from historical place visits, and Proximity, a tool for building highly-customized geofences.\n

\n \n
\n
\n
\n \n \n \n
\n

Attribution

\n

\n Quantify the effectiveness of advertising campaigns at driving conversions across all channels. \n

\n \n
\n
\n
\n
\n
\n
\n
\n
\n

Campaign Tools

\n

Feasibility Calculator

\n

\n Provide your estimated impressions to get a score for your campaign. Alternatively, provide weights and frequencies to get the minimum number of impressions needed to get started with Attribution.\n

\n
    \n
  • \n \n \n \n Digital media measurement\n
  • \n
  • \n \n \n \n Television media\n
  • \n
  • \n \n \n \n Out-of-home media\n
  • \n
  • \n \n \n \n Get minimum impressions or estimated matched visitors\n
  • \n
\n \n
\n
\n \"Campaign\n\n \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 Audience

\n

\n New to building Audience segments with Foursquare? Jump into our step-by-step guide that brings you \n up to speed.\n

\n

\n Read more\n

\n
\n
\n
APIs
\n

Get Started with Proximity

\n

\n Want to create geofences tailored for your campaign? This full guide walks you through Foursquare's Proximity tool.\n

\n

\n Read more\n

\n
\n
\n
Feature
\n

Get Started with Attribution

\n

\n Confused about setting up your campaign in Foursquare Attribution? This guide contains detailed descriptions for each step of the process.\n

\n

\n Read more\n

\n
\n
\n
\n
\n
\n
\n

Step up your campaigns with Foursquare

\n

\n Products? Solutions? Plans? Prices? If you have questions, we have experts ready to answer them.\n

\n Speak to an Expert\n
\n
\n
"}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"monthlyPurchaseLimit":0,"meteredBilling":{}},"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":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"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":"","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":false,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":false,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":false,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":true,"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":90},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"6606ea074f38af000fe23c3a","version":"1.0","version_clean":"1.0.0","codename":"marketers-content-overhaul","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["65a0405fa5b09e00633508ba","65a0405fa5b09e00633508ba","65a0405fa5b09e00633508bb","65a0405fa5b09e00633508bc","65a0405fa5b09e00633508bd","65a0405fa5b09e00633508be","63458e8aa5392200a50d0b98","65a0405fa5b09e00633508bf","65a0405fa5b09e00633508c0","6606ea074f38af000fe23c42","6606ea074f38af000fe23c43","6606ea074f38af000fe23c4b","65bbfa67c4a1eb00426466b2","65a1aa574aa2d70037fdbb2e","65bbfa67c4a1eb00426466b3","65bbfa67c4a1eb00426466b4","6606ea074f38af000fe23c4c","65bbfa67c4a1eb00426466b6","6606ea074f38af000fe23c4d","6606ea074f38af000fe23c4e","65bc19028cdd4d000e0eb22d","65c1253ebedd60005cd3b162","65c12811255c530055431f6f","6606ea074f38af000fe23c4f"],"project":"6606ea084f38af000fe23ce1","releaseDate":"2022-08-30T19:27:35.751Z","createdAt":"2024-02-01T20:09:11.825Z","__v":0,"forked_from":"6606ea074f38af000fe23c39","updatedAt":"2024-04-04T23:57:54.531Z"},"subdomain":"fsq-campaign","subpath":"campaign-products","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://foursquare4411.zendesk.com/hc/en-us/requests/new"},{"type":"url","text":"Log In","url":"https://location.foursquare.com/log-in/"}],"bottom":[],"edited":true},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2024-04-12T16:19:20.020Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://docs.foursquare.com","versions":[{"_id":"6606ea074f38af000fe23c38","version":"0.1","version_clean":"0.1.0","codename":"Old v1.0","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6606ea074f38af000fe23c3b","6606ea074f38af000fe23c3b","6606ea074f38af000fe23c3c","6606ea074f38af000fe23c3d","6606ea074f38af000fe23c3e","6606ea074f38af000fe23c3f","63458e8aa5392200a50d0b98","6606ea074f38af000fe23c40","6606ea074f38af000fe23c41","6606ea074f38af000fe23c42"],"project":"6606ea084f38af000fe23ce1","releaseDate":"2022-08-30T19:27:35.751Z","createdAt":"2022-08-30T19:27:35.751Z","__v":2,"updatedAt":"2024-04-04T23:57:46.280Z"},{"_id":"6606ea074f38af000fe23c39","version":"2.0","version_clean":"2.0.0","codename":"marketers-original-content","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["65a0405fa5b09e00633508ba","65a0405fa5b09e00633508ba","65a0405fa5b09e00633508bb","65a0405fa5b09e00633508bc","65a0405fa5b09e00633508bd","65a0405fa5b09e00633508be","63458e8aa5392200a50d0b98","65a0405fa5b09e00633508bf","65a0405fa5b09e00633508c0","6606ea074f38af000fe23c42","6606ea074f38af000fe23c43","6606ea074f38af000fe23c44","6606ea074f38af000fe23c45","65a1aa574aa2d70037fdbb2e","6606ea074f38af000fe23c46","6606ea074f38af000fe23c47","6606ea074f38af000fe23c48","6606ea074f38af000fe23c49","6606ea074f38af000fe23c4a"],"project":"6606ea084f38af000fe23ce1","releaseDate":"2022-08-30T19:27:35.751Z","createdAt":"2024-01-11T19:24:15.588Z","__v":1,"forked_from":"6606ea074f38af000fe23c38","updatedAt":"2024-02-01T20:08:45.840Z"},{"_id":"6606ea074f38af000fe23c3a","version":"1.0","version_clean":"1.0.0","codename":"marketers-content-overhaul","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["65a0405fa5b09e00633508ba","65a0405fa5b09e00633508ba","65a0405fa5b09e00633508bb","65a0405fa5b09e00633508bc","65a0405fa5b09e00633508bd","65a0405fa5b09e00633508be","63458e8aa5392200a50d0b98","65a0405fa5b09e00633508bf","65a0405fa5b09e00633508c0","6606ea074f38af000fe23c42","6606ea074f38af000fe23c43","6606ea074f38af000fe23c4b","65bbfa67c4a1eb00426466b2","65a1aa574aa2d70037fdbb2e","65bbfa67c4a1eb00426466b3","65bbfa67c4a1eb00426466b4","6606ea074f38af000fe23c4c","65bbfa67c4a1eb00426466b6","6606ea074f38af000fe23c4d","6606ea074f38af000fe23c4e","65bc19028cdd4d000e0eb22d","65c1253ebedd60005cd3b162","65c12811255c530055431f6f","6606ea074f38af000fe23c4f"],"project":"6606ea084f38af000fe23ce1","releaseDate":"2022-08-30T19:27:35.751Z","createdAt":"2024-02-01T20:09:11.825Z","__v":0,"forked_from":"6606ea074f38af000fe23c39","updatedAt":"2024-04-04T23:57:54.531Z"}],"variableDefaults":[{"source":"security","_id":"65c12813255c530055431f70","name":"basicAuth","type":"http","scheme":"basic","apiSetting":"6606ea074f38af000fe23c53"}],"webhookEnabled":false},{"_id":"6606ea3fcfdebc002a58a6f9","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":"#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":"row","link_logo_to_url":true,"theme":"line","colorScheme":"light","overlay":"triangles","landing":true,"sticky":false,"hide_logo":true,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"logo":["https://files.readme.io/b67076e-small-395ef92-small-docs.png","b67076e-small-395ef92-small-docs.png",324,40,"#000000","https://files.readme.io/758583d-395ef92-small-docs.png","660acd06efe91e001fbe3340"],"loginLogo":[],"logo_white":[],"logo_white_use":false,"logo_large":false,"favicon":["https://files.readme.io/ded4ad1-small-favicon.png","favicon.png",32,32,"#000000","https://files.readme.io/3873f45-favicon.png"],"stylesheet":"","stylesheet_hub2":"/* 1) Always hide the 3rd .rm-Sidebar-section */\n .rm-Sidebar-section:nth-of-type(3) {\n display: none;\n }","stylesheet_hub3":"","javascript":"","javascript_hub2":"","html_promo":"","html_body":"","html_footer":"
\n
\n \n
\n
\n
\n
\n

© 2024 Foursquare. All rights reserved.

\n \n
\n
\n\n\n
\n \n\t\n
\n\n","html_head":"\n","html_footer_meta":"","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"","promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"","text":"","_id":"6266fbd4f8cc1800403df71f"}],"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":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":[]}},"glossaryTerms":[{"_id":"6266fbd4f8cc1800403df71e","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"healthCheck":{"provider":"","settings":{}},"intercom_secure_emailonly":false,"intercom":"","is_active":true,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","html":"
\n
\n
\n

Analytics Product Documentation

\n

\n Find help, follow step-by-step guides, and learn more about how to create powerful visualization and generate new insightful datasets.\n

\n
Search
\n
\n
\n
\n
\n
\n

Products

\n

Explore our products

\n

\n Learn more about our suite of analytics products.\n

\n
\n
\n
\n
\n \n \n \n
\n

Studio

\n

\n Next-generation geospatial analytics platform for working with big geospatial data.\n

\n \n
\n
\n
\n
\n
\n
\n
\n

Analytics Tools

\n

Hex Tiles

\n

\n Foursquare's analytic tiling system for geospatial data that combines the ability of tiling systems to handle massive datasets with the power of the H3 hierarchical grid system.\n

\n
    \n
  • \n \n \n \n Expedite the data preparation and analytics processes\n
  • \n
  • \n \n \n \n Visualize planetary-scale data at any level of granularity\n
  • \n
  • \n \n \n \n Analyze data while browsing the map, enabled by the data's tabular, gridded format\n
  • \n
\n \n
\n
\n \"Studio\n\n \n \n\n
\n
\n
\n
\n \n
\n
\n
\n

Resources

\n

Community Resources

\n
\n
\n
\n
APIs
\n

Geospatial Data Catalog

\n

\n Explore a growing list of geospatial datasets provided by Foursquare Studio and our partners.\n

\n

\n Read more\n

\n
\n
\n
Feature
\n

Studio Map Community

\n

\n Interact with a wide array of Studio Maps created by Studio engineers and other community members.\n

\n

\n Read more\n

\n
\n
\n
Feature
\n

Studio Map SDK

\n

\n Use the Map SDK to make maps in JavaScript and Python. Run sandbox examples directly from our documentation.\n

\n

\n Read more\n

\n
\n
\n
\n
\n
\n
\n

Get started with Foursquare Studio

\n

\n Tap into powerful insights with your geospatial data using Foursquare Studio.\n

\n Start a Free trial\n
\n
\n
"}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"monthlyPurchaseLimit":0,"meteredBilling":{}},"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":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"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":"","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":false,"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":false,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"totalScore":89},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"660ae2939b63f000123bb7bc","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6266fbd6f8cc1800403df725","6266fbd6f8cc1800403df725","660ae2929b63f000123bb6e1","660ae2929b63f000123bb6e2","660ae2929b63f000123bb6e3","626858efef7f95002fd40fcf","62685911eaa521003dfdc510","660ae2929b63f000123bb6e4","660ae2929b63f000123bb6e5","63221b5e3aae030d3bfc241b","63221c922d640a04f3be0224","633cc5ceffd93a000fcae005","660ae2929b63f000123bb6e6","6356bc2663b16c01f1677415","660ae2929b63f000123bb6e7","660ae2929b63f000123bb6e8","6606ea3fcfdebc002a58a621","64825a637cc1970045951c1f","660ae2929b63f000123bb6e9","6483a404947b23006ee041ed","660ae2939b63f000123bb7be","660ae372f965ed0054b99351","660aecdf2b21b9000fd8566d","66c65bbc65dbe000684ea130","66c65bc02b6fb300303372d5","66f5829376cdba0040735163","681ac4eaa199b2001e579e4c","6877ec2f12fbf1f13f05e9e3"],"project":"6606ea3fcfdebc002a58a6f9","releaseDate":"2022-04-25T19:51:50.020Z","createdAt":"2024-04-01T16:36:34.947Z","__v":1,"forked_from":"6606ea3fcfdebc002a58a618","updatedAt":"2025-07-16T18:15:11.505Z"},"subdomain":"fsq-analytics","subpath":"analytics-products","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://support.foursquare.com/hc/en-us/requests/new?ticket_form_id=12951735014172"},{"type":"url","text":"Log In","url":"https://location.foursquare.com/log-in/"}],"bottom":[],"edited":true},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2024-04-12T16:20:15.989Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://docs.foursquare.com","versions":[{"_id":"6606ea3fcfdebc002a58a618","version":"0.1","version_clean":"0.1.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["6266fbd6f8cc1800403df725","6266fbd6f8cc1800403df725","6606ea3fcfdebc002a58a619","6606ea3fcfdebc002a58a61a","6606ea3fcfdebc002a58a61b","626858efef7f95002fd40fcf","62685911eaa521003dfdc510","6606ea3fcfdebc002a58a61c","6606ea3fcfdebc002a58a61d","63221b5e3aae030d3bfc241b","63221c922d640a04f3be0224","633cc5ceffd93a000fcae005","6606ea3fcfdebc002a58a61e","6356bc2663b16c01f1677415","6606ea3fcfdebc002a58a61f","6606ea3fcfdebc002a58a620","6606ea3fcfdebc002a58a621","64825a637cc1970045951c1f","6606ea3fcfdebc002a58a622","6483a404947b23006ee041ed"],"project":"6606ea3fcfdebc002a58a6f9","releaseDate":"2022-04-25T19:51:50.020Z","createdAt":"2022-04-25T19:51:50.020Z","__v":1,"updatedAt":"2024-04-01T17:17:18.240Z"},{"_id":"660ae2939b63f000123bb7bc","version":"1.0","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["6266fbd6f8cc1800403df725","6266fbd6f8cc1800403df725","660ae2929b63f000123bb6e1","660ae2929b63f000123bb6e2","660ae2929b63f000123bb6e3","626858efef7f95002fd40fcf","62685911eaa521003dfdc510","660ae2929b63f000123bb6e4","660ae2929b63f000123bb6e5","63221b5e3aae030d3bfc241b","63221c922d640a04f3be0224","633cc5ceffd93a000fcae005","660ae2929b63f000123bb6e6","6356bc2663b16c01f1677415","660ae2929b63f000123bb6e7","660ae2929b63f000123bb6e8","6606ea3fcfdebc002a58a621","64825a637cc1970045951c1f","660ae2929b63f000123bb6e9","6483a404947b23006ee041ed","660ae2939b63f000123bb7be","660ae372f965ed0054b99351","660aecdf2b21b9000fd8566d","66c65bbc65dbe000684ea130","66c65bc02b6fb300303372d5","66f5829376cdba0040735163","681ac4eaa199b2001e579e4c","6877ec2f12fbf1f13f05e9e3"],"project":"6606ea3fcfdebc002a58a6f9","releaseDate":"2022-04-25T19:51:50.020Z","createdAt":"2024-04-01T16:36:34.947Z","__v":1,"forked_from":"6606ea3fcfdebc002a58a618","updatedAt":"2025-07-16T18:15:11.505Z"}],"variableDefaults":[{"source":"security","_id":"649cc2ba4934410062bf135e","name":"Authorization","type":"apiKey","apiSetting":"6606ea3fcfdebc002a58a624"}],"webhookEnabled":false},{"_id":"5fa9a583c88a1e003de1fb62","appearance":{"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":""},"referenceLayout":"column","link_logo_to_url":false,"theme":"solid","overlay":"triangles","landing":true,"sticky":false,"hide_logo":true,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":true,"logo":["https://files.readme.io/d6ebd72-small-docs.png","docs.png",324,40,"#000000","https://files.readme.io/020f19e-docs.png"],"logo_white":["https://files.readme.io/1521b06-small-FSQ_logo_white.png","FSQ_logo_white.png",355,80,"#ffffff","https://files.readme.io/3ce6124-FSQ_logo_white.png"],"logo_white_use":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":".rm-Header-bottom .Dropdown {\n display:none !important;\n}\n.Button.Button_md.rm-Header-link.rm-Header-bottom-link.Button_slate_text.Header-bottom-link_mobile.active,\n#ssr-main > div > header > div.rm-Header-bottom > div > div > nav > a:nth-child(2),\n#ssr-main > div > header > div.rm-Header-bottom > div > div > nav > a:nth-child(3),\n#ssr-main > div > header > div.rm-Header-bottom > div > div > nav > a:nth-child(4),\n#ssr-main > div > header > div.rm-Header-bottom > div > div > nav > a:nth-child(5)\n{\n display:none !important;\n}","javascript":"","javascript_hub2":"","html_promo":"
\n
\n
\n
\n
\n

[product documentation]

\n
\n
\n
\n
\n\n
\n
\n
\n \n\n\n
\n \"An\n\n

Pilgrim SDK

\n\n
\n

\n Build powerful location-aware app experiences.\n

\n
\n\n SDK Docs\n
\n \n
\n \"an\n\n

Visits

\n\n
\n

Better business decisions based on consumers' real-world behavior.

\n
\n\n Visits Docs\n
\n
\n
\n
\n\n
\n
\n
\n
\n

[developer tools]

\n
\n
\n
\n
\n\n
\n
\n
\n\n
\n \"an\n \n

Developer Console

\n\n
\n

\n Navigate the Foursquare Developer Console to understand usage,\n configure product settings, set up billing, and more.\n

\n
\n\n View Docs\n
\n \n
\n \"an\n \n

Build with Foursquare

\n\n
\n

\n Get inspired by real location-based experiences built with\n Foursquare Developer Products.\n

\n
\n\n See Examples\n
\n\n
\n \"an\n \n

API Explorer

\n\n
\n

\n Explore Foursquare APIs interactively without writing any code\n and view full requests and responses.\n

\n
\n\n View Explorer\n
\n
\n
\n
\n
","html_body":"","html_footer":"","html_head":"","html_footer_meta":"","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"","promos":[{"extras":{"type":"none","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"","text":"","_id":"5fa9a583c88a1e003de1fb64"}],"showMetricsInReference":false,"referenceSimpleMode":true,"stylesheet_hub3":"","loginLogo":[],"logo_large":false,"colorScheme":"light","changelog":{"layoutExpanded":false,"showAuthor":false,"showExactDate":true},"allowApiExplorerJsonEditor":false,"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":"Foursquare Code Tutorials","isExternalSnippetActive":false,"error404":"","experiments":[],"first_page":"landing","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":[]}},"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":{"provider":"","settings":{"page":"","status":false,"url":""}},"intercom_secure_emailonly":false,"intercom":"","is_active":false,"integrations":{"login":{}},"internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"html","alignment":"left","html":" "}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"thumbsEnabled":true,"usageLastChecked":"2021-01-22T23:01:24.344Z","planLimit":1000000,"realtime":{"dashEnabled":false,"hubEnabled":false},"monthlyPurchaseLimit":0,"meteredBilling":{}},"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"},"oauth_url":"","onboardingCompleted":{"api":true,"documentation":true,"appearance":true,"domain":false,"jwt":false,"logs":true,"metricsSDK":false},"owlbot":{"enabled":false,"isPaying":false,"customization":{"answerLength":"long","customTone":"","defaultAnswer":"","forbiddenWords":"","tone":"neutral"},"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":"","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":false,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":false,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":true,"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}},"percentScore":37.5,"totalScore":110},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":true,"defaultExpandResponseSchema":true,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"659d9bd8788254004fcbc149","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":["659d9bd8788254004fcbbf98","659d9bd8788254004fcbbf99","64f77a125b90e20045ad3f37","659d9bd8788254004fcbbf9a","659d9bd8788254004fcbbf9b","659d9bd8788254004fcbbf9c","659d9bd8788254004fcbbf9d","659d9bd8788254004fcbbf9e","659d9bd8788254004fcbbf9f","634d7c4489e57300949dfc2f","659d9bd8788254004fcbbfa0","64f77a125b90e20045ad3f3f","659d9bd8788254004fcbbfa1","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","659d9bd8788254004fcbbfa2","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","659d9bd8788254004fcbbfa3","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","659d9bd8788254004fcbc14b","659da2127dc8e1004bba342c","65f499786db8f30017beba9a","65f4a88afa74360030b63801","65f4c2472247450058f98333","65fa2b11b5ec19000f4ad0b2","6616f8cbbd15820010c625ab","661702ecc11aab002aac404f"],"project":"5fa9a583c88a1e003de1fb62","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"64f77a125b90e20045ad40a6","updatedAt":"2024-04-10T21:21:48.213Z"},"subdomain":"fsq-tutorials","subpath":"developer-tutorials","superHubWaitlist":false,"topnav":{"left":[],"right":[{"type":"url","text":"Support","url":"https://foursquare.atlassian.net/servicedesk/customer/portal/31"},{"type":"user"}],"edited":true,"bottom":[{"type":"url","text":"⤶ Back to Developer Docs","url":"https://docs.foursquare.com/developer"}]},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2020-11-23T20:24:35.562Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"","versions":[{"_id":"5fa9a583c88a1e003de1fb69","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":["5fa9a583c88a1e003de1fb6b","5fa9a583c88a1e003de1fb6b","5fca7472bfa49e0061f9abdc","5fcad9ea5a3eb80012633343","5fcada1763cf820072815570","5fcada22dff276007bb530a1","5fd92d07f5a46c0047c32267","600a21c5ea006e006691b64f","60c25829b6bde4006b0e41d6","61708f3088953b007430c564","617ad966ceaf740012ebdc75","63d9a0447f835300035eb607"],"project":"5fa9a583c88a1e003de1fb62","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":3},{"_id":"614cf9ff1098a20029d02a6d","version":"0.1","version_clean":"0.1.0","codename":"Old DevEx","is_stable":false,"is_beta":false,"is_hidden":true,"is_deprecated":false,"categories":["614cf9ff1098a20029d02a15","614cf9ff1098a20029d02a16","614cf9ff1098a20029d02a17","614cf9ff1098a20029d02a19","614cfd0849c8d900487ec4ac","614e4ce25cba7a0038ddbd7d","6165c7e8db9b250036741106","61672cee875753044a518242","61817d2af07b9f001be90f54","618ab9a8f31fe9002f7ffcd4","6234c60080e26003074eac30","6356f1f6151f960068581ed0","63d9a0447f835300035eb609"],"project":"5fa9a583c88a1e003de1fb62","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":5,"forked_from":"5fa9a583c88a1e003de1fb69"},{"_id":"6303d9d6416bab001a283e4b","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":["6303d9d6416bab001a283d36","6303d9d6416bab001a283d37","6303d9d6416bab001a283d3b","6303d9d6416bab001a283d3c","6303d9d6416bab001a283d3d","6303d9d6416bab001a283d3e","6303d9d6416bab001a283d3f","630523d7fb7bfd002e9fe9cd","6305243b487811005429b696","634d7c4489e57300949dfc2f","6356fc010b8f9d001e6cc305","636a9468efab95005c3499a0","63d195137cac14004d6e0541","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","649cc0bbf15e78000ce9b977"],"project":"5fa9a583c88a1e003de1fb62","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2020-11-09T20:24:35.628Z","__v":1,"forked_from":"614cf9ff1098a20029d02a6d","updatedAt":"2023-10-30T22:02:33.548Z"},{"_id":"64f77a125b90e20045ad40a6","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":["64f77a125b90e20045ad3f35","64f77a125b90e20045ad3f36","64f77a125b90e20045ad3f37","64f77a125b90e20045ad3f38","64f77a125b90e20045ad3f39","64f77a125b90e20045ad3f3a","64f77a125b90e20045ad3f3b","64f77a125b90e20045ad3f3c","64f77a125b90e20045ad3f3d","634d7c4489e57300949dfc2f","64f77a125b90e20045ad3f3e","64f77a125b90e20045ad3f3f","64f77a125b90e20045ad3f40","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","64f77a125b90e20045ad3f41","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","64f8fc420924bd002b4cae9f","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe"],"project":"5fa9a583c88a1e003de1fb62","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2023-09-05T18:57:22.670Z","__v":1,"forked_from":"6303d9d6416bab001a283e4b","updatedAt":"2024-01-09T20:22:14.497Z"},{"_id":"659d9bd8788254004fcbc149","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":["659d9bd8788254004fcbbf98","659d9bd8788254004fcbbf99","64f77a125b90e20045ad3f37","659d9bd8788254004fcbbf9a","659d9bd8788254004fcbbf9b","659d9bd8788254004fcbbf9c","659d9bd8788254004fcbbf9d","659d9bd8788254004fcbbf9e","659d9bd8788254004fcbbf9f","634d7c4489e57300949dfc2f","659d9bd8788254004fcbbfa0","64f77a125b90e20045ad3f3f","659d9bd8788254004fcbbfa1","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","659d9bd8788254004fcbbfa2","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","659d9bd8788254004fcbbfa3","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","659d9bd8788254004fcbc14b","659da2127dc8e1004bba342c","65f499786db8f30017beba9a","65f4a88afa74360030b63801","65f4c2472247450058f98333","65fa2b11b5ec19000f4ad0b2","6616f8cbbd15820010c625ab","661702ecc11aab002aac404f"],"project":"5fa9a583c88a1e003de1fb62","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-01-09T19:17:43.818Z","__v":1,"forked_from":"64f77a125b90e20045ad40a6","updatedAt":"2024-04-10T21:21:48.213Z"},{"_id":"660543b59a0a690054d42871","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":["660543b59a0a690054d426a1","660543b59a0a690054d426a2","64f77a125b90e20045ad3f37","660543b59a0a690054d426a3","659d9bd8788254004fcbbf9b","660543b59a0a690054d426a4","660543b59a0a690054d426a5","660543b59a0a690054d426a6","660543b59a0a690054d426a7","634d7c4489e57300949dfc2f","660543b59a0a690054d426a8","64f77a125b90e20045ad3f3f","660543b59a0a690054d426a9","63d9a0447f835300035eb60b","6413513473cec2007a3a0b33","64344de6cb55ac06049b7942","64344df898cc77060800744e","64344e1501238201681398c5","643474727a446d0065e69530","643474b957ef79005110d780","643475946acb95005751f7d3","6435bc498d488f0211d9f460","647f5f350a854d000cb7fd6a","647f601da2e29b0058479b98","647f60d84093441159f3efe2","647f66d02a7075003bc66a91","647f6af5aeaa5b000bce32ad","660543b59a0a690054d426aa","64f77a135b90e20045ad40a8","64f789bfe41a04003ba1c9ab","660543b59a0a690054d426ab","6525abcb1bfe3401da1ba7c4","655e161de002cc07c1cbff81","657cc9aca550a7001002bcab","657ccad8d14bbf005453770a","657ccb274df05f007fa537fe","659d9bd8788254004fcbc14b","660543b59a0a690054d426ac","660543b59a0a690054d426ad","660543b59a0a690054d426ae","660543b59a0a690054d426af","660543b59a0a690054d426b0","660543b59a0a690054d42873"],"project":"5fa9a583c88a1e003de1fb62","releaseDate":"2020-11-09T20:24:35.628Z","createdAt":"2024-03-28T10:17:25.142Z","__v":0,"forked_from":"659d9bd8788254004fcbc149","updatedAt":"2024-03-28T10:17:25.904Z"}],"variableDefaults":[{"source":"security","_id":"63405a756dda10000f0ee8a1","name":"Authorization","type":"apiKey","apiSetting":"61955187722b0a03d5d3843f"},{"source":"security","_id":"64e8f31e4b5dd10958059cb2","name":"BearerAuth","type":"http","scheme":"bearer","apiSetting":"649cc0bbf15e78000ce9b976"},{"source":"security","_id":"64f8c5cfcef95d006694b93d","name":"BearerTokenAuth","type":"http","scheme":"bearer","apiSetting":"6356fc000b8f9d001e6cc304"}],"webhookEnabled":false},{"_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 }\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 \"photo\n
    \n
    ${name}
    \n
    ${location.address}
    \n
    \n ${\n rating\n ? `
    ${rating}
    `\n : `
    `\n }\n
    `;\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
    \n

    © 2024 Foursquare. All rights reserved.

    \n \n
    \n
    \n\n\n
    \n \n\t\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 \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 \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 \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 \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 \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 \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 \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 \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 \"Foursquare\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 \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 \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":"","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":"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},{"_id":"682f7aee39811e005ab82d7e","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":""},"ai_options":{"chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","perplexity":"enabled","view_as_markdown":"enabled"},"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/*****************************************/ \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":"@keyframes fadeIn{from{opacity:0}to{opacity:1}}\n.rm-Sidebar{opacity:0;animation:fadeIn .3s ease-in-out 1s forwards}","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;//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