Piknik.Spot · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Piknik.Spot OpenAPI

Generated 2026-09-19 (method: generated). Applies on top of openapi/piknik-spot-openapi.yml WITHOUT mutating it. Proposes a stable operationId for every one of the 683 operations (the source declares none), removes the localhost development server, links the agent surfaces the provider publishes, and documents the place-summary rate limit observed live. Parameter names for place-summary come from llms.txt and the live 400 body.

687 actions 686 updates 1 removal documentation extends openapi/piknik-spot-openapi.yml
Authorship not recorded No authorship marker is recorded for this file. It is not presented as the provider's.
View Overlay File View on GitHub Overlay Specification

What the actions change

operationIdtermsOfServicex-llms-txtx-agent-cardx-mcp-endpointx-agent-ethicsx-oauth-authorization-serverx-oauth-protected-resource

Targets 686 · first 16 shown; the file carries all of them

$.servers
$.servers[?(@.url=='http://localhost:3000/api')]
$.info
$.paths['/a2a'].get
$.paths['/a2a'].post
$.paths['/admin/agent-settings'].get
$.paths['/admin/agent-settings'].put
$.paths['/admin/announcements/cleanup'].post
$.paths['/admin/announcements/cleanup'].get
$.paths['/admin/associations/{id}/memberships/bulk'].post
$.paths['/admin/associations/{id}/memberships'].get
$.paths['/admin/associations/{id}/memberships'].delete
$.paths['/admin/associations/{id}/memberships'].patch
$.paths['/admin/associations/{id}'].get
$.paths['/admin/associations/{id}'].put
$.paths['/admin/associations/{id}'].delete

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Piknik.Spot OpenAPI
  version: '2026-09-19'
  description: 'Generated 2026-09-19 (method: generated). Applies on top of openapi/piknik-spot-openapi.yml WITHOUT mutating
    it. Proposes a stable operationId for every one of the 683 operations (the source declares none), removes the localhost
    development server, links the agent surfaces the provider publishes, and documents the place-summary rate limit observed
    live. Parameter names for place-summary come from llms.txt and the live 400 body.'
extends: openapi/piknik-spot-openapi.yml
actions:
- target: $.servers
  description: Drop the http://localhost:3000/api development server from the consumer-facing view; the production server
    is the only one an agent can call.
  update: null
- target: $.servers[?(@.url=='http://localhost:3000/api')]
  description: Remove the development server entry.
  remove: true
- target: $.info
  description: Add the machine-discoverable agent surfaces the provider publishes but the spec omits.
  update:
    termsOfService: https://piknik.spot/terms-of-service
    x-llms-txt: https://piknik.spot/llms.txt
    x-agent-card: https://piknik.spot/.well-known/agent-card.json
    x-mcp-endpoint: https://piknik.spot/api/mcp
    x-agent-ethics: https://piknik.spot/.well-known/agent-ethics.md
    x-oauth-authorization-server: https://piknik.spot/.well-known/oauth-authorization-server
    x-oauth-protected-resource: https://piknik.spot/.well-known/oauth-protected-resource
- target: $.paths['/a2a'].get
  update:
    operationId: getA2a
- target: $.paths['/a2a'].post
  update:
    operationId: postA2a
- target: $.paths['/admin/agent-settings'].get
  update:
    operationId: getAdminAgentSettings
- target: $.paths['/admin/agent-settings'].put
  update:
    operationId: putAdminAgentSettings
- target: $.paths['/admin/announcements/cleanup'].post
  update:
    operationId: postAdminAnnouncementsCleanup
- target: $.paths['/admin/announcements/cleanup'].get
  update:
    operationId: getAdminAnnouncementsCleanup
- target: $.paths['/admin/associations/{id}/memberships/bulk'].post
  update:
    operationId: postAdminAssociationsIdMembershipsBulk
- target: $.paths['/admin/associations/{id}/memberships'].get
  update:
    operationId: getAdminAssociationsIdMemberships
- target: $.paths['/admin/associations/{id}/memberships'].delete
  update:
    operationId: deleteAdminAssociationsIdMemberships
- target: $.paths['/admin/associations/{id}/memberships'].patch
  update:
    operationId: patchAdminAssociationsIdMemberships
- target: $.paths['/admin/associations/{id}'].get
  update:
    operationId: getAdminAssociationsId
- target: $.paths['/admin/associations/{id}'].put
  update:
    operationId: putAdminAssociationsId
- target: $.paths['/admin/associations/{id}'].delete
  update:
    operationId: deleteAdminAssociationsId
- target: $.paths['/admin/associations/{id}/surveys'].get
  update:
    operationId: getAdminAssociationsIdSurveys
- target: $.paths['/admin/associations/{id}/surveys'].post
  update:
    operationId: postAdminAssociationsIdSurveys
- target: $.paths['/admin/associations'].get
  update:
    operationId: getAdminAssociations
- target: $.paths['/admin/associations'].post
  update:
    operationId: postAdminAssociations
- target: $.paths['/admin/associations/verification-queue'].get
  update:
    operationId: getAdminAssociationsVerificationQueue
- target: $.paths['/admin/associations/verify/{membershipId}'].put
  update:
    operationId: putAdminAssociationsVerifyMembershipId
- target: $.paths['/admin/campaign-batch'].post
  update:
    operationId: postAdminCampaignBatch
- target: $.paths['/admin/campaign-status'].get
  update:
    operationId: getAdminCampaignStatus
- target: $.paths['/admin/categories/{id}'].get
  update:
    operationId: getAdminCategoriesId
- target: $.paths['/admin/categories/{id}'].patch
  update:
    operationId: patchAdminCategoriesId
- target: $.paths['/admin/categories/{id}'].delete
  update:
    operationId: deleteAdminCategoriesId
- target: $.paths['/admin/categories/reorder'].post
  update:
    operationId: postAdminCategoriesReorder
- target: $.paths['/admin/categories'].get
  update:
    operationId: getAdminCategories
- target: $.paths['/admin/categories'].post
  update:
    operationId: postAdminCategories
- target: $.paths['/admin/event-sources/{id}'].get
  update:
    operationId: getAdminEventSourcesId
- target: $.paths['/admin/event-sources/{id}'].put
  update:
    operationId: putAdminEventSourcesId
- target: $.paths['/admin/event-sources/{id}'].delete
  update:
    operationId: deleteAdminEventSourcesId
- target: $.paths['/admin/event-sources'].get
  update:
    operationId: getAdminEventSources
- target: $.paths['/admin/event-sources'].post
  update:
    operationId: postAdminEventSources
- target: $.paths['/admin/events/recurrence'].post
  update:
    operationId: postAdminEventsRecurrence
- target: $.paths['/admin/events/recurrence'].get
  update:
    operationId: getAdminEventsRecurrence
- target: $.paths['/admin/fee-profiles/{id}/assignments/{assignmentId}'].delete
  update:
    operationId: deleteAdminFeeProfilesIdAssignmentsAssignmentId
- target: $.paths['/admin/fee-profiles/{id}/assignments'].post
  update:
    operationId: postAdminFeeProfilesIdAssignments
- target: $.paths['/admin/fee-profiles/{id}'].put
  update:
    operationId: putAdminFeeProfilesId
- target: $.paths['/admin/fee-profiles/{id}'].delete
  update:
    operationId: deleteAdminFeeProfilesId
- target: $.paths['/admin/fee-profiles'].get
  update:
    operationId: getAdminFeeProfiles
- target: $.paths['/admin/fee-profiles'].post
  update:
    operationId: postAdminFeeProfiles
- target: $.paths['/admin/for-towns-pdf'].post
  update:
    operationId: postAdminForTownsPdf
- target: $.paths['/admin/frost-dates/import'].post
  update:
    operationId: postAdminFrostDatesImport
- target: $.paths['/admin/frost-dates'].get
  update:
    operationId: getAdminFrostDates
- target: $.paths['/admin/games/{id}'].put
  update:
    operationId: putAdminGamesId
- target: $.paths['/admin/games/{id}'].get
  update:
    operationId: getAdminGamesId
- target: $.paths['/admin/games/{id}'].delete
  update:
    operationId: deleteAdminGamesId
- target: $.paths['/admin/games/place-interests'].get
  update:
    operationId: getAdminGamesPlaceInterests
- target: $.paths['/admin/games/place-interests'].patch
  update:
    operationId: patchAdminGamesPlaceInterests
- target: $.paths['/admin/games'].post
  update:
    operationId: postAdminGames
- target: $.paths['/admin/games'].get
  update:
    operationId: getAdminGames
- target: $.paths['/admin/geocode-missing'].post
  update:
    operationId: postAdminGeocodeMissing
- target: $.paths['/admin/global-features'].get
  update:
    operationId: getAdminGlobalFeatures
- target: $.paths['/admin/global-features'].post
  update:
    operationId: postAdminGlobalFeatures
- target: $.paths['/admin/global-features/seed'].post
  update:
    operationId: postAdminGlobalFeaturesSeed
- target: $.paths['/admin/grant-feature'].post
  update:
    operationId: postAdminGrantFeature
- target: $.paths['/admin/grant-feature'].get
  update:
    operationId: getAdminGrantFeature
- target: $.paths['/admin/missing-coords'].get
  update:
    operationId: getAdminMissingCoords
- target: $.paths['/admin/neighborhoods/discover-osm'].get
  update:
    operationId: getAdminNeighborhoodsDiscoverOsm
- target: $.paths['/admin/neighborhoods/waterloo-region/{id}'].put
  update:
    operationId: putAdminNeighborhoodsWaterlooRegionId
- target: $.paths['/admin/neighborhoods/waterloo-region/{id}'].delete
  update:
    operationId: deleteAdminNeighborhoodsWaterlooRegionId
- target: $.paths['/admin/neighborhoods/waterloo-region/rebuild'].post
  update:
    operationId: postAdminNeighborhoodsWaterlooRegionRebuild
- target: $.paths['/admin/neighborhoods/waterloo-region'].get
  update:
    operationId: getAdminNeighborhoodsWaterlooRegion
- target: $.paths['/admin/neighborhoods/waterloo-region'].post
  update:
    operationId: postAdminNeighborhoodsWaterlooRegion
- target: $.paths['/admin/neighborhoods/waterloo-region'].put
  update:
    operationId: putAdminNeighborhoodsWaterlooRegion
- target: $.paths['/admin/neighborhoods/waterloo-region/samples'].get
  update:
    operationId: getAdminNeighborhoodsWaterlooRegionSamples
- target: $.paths['/admin/notifications'].get
  update:
    operationId: getAdminNotifications
- target: $.paths['/admin/osm-explorer/connections'].get
  update:
    operationId: getAdminOsmExplorerConnections
- target: $.paths['/admin/osm-explorer/ignored-names'].get
  update:
    operationId: getAdminOsmExplorerIgnoredNames
- target: $.paths['/admin/osm-explorer/ignored-names'].post
  update:
    operationId: postAdminOsmExplorerIgnoredNames
- target: $.paths['/admin/osm-explorer/local-food-score'].get
  update:
    operationId: getAdminOsmExplorerLocalFoodScore
- target: $.paths['/admin/osm-explorer/neighborhood-match'].get
  update:
    operationId: getAdminOsmExplorerNeighborhoodMatch
- target: $.paths['/admin/osm-explorer/reverse-geocode'].get
  update:
    operationId: getAdminOsmExplorerReverseGeocode
- target: $.paths['/admin/osm-explorer'].get
  update:
    operationId: getAdminOsmExplorer
- target: $.paths['/admin/osm-explorer/simulate'].post
  update:
    operationId: postAdminOsmExplorerSimulate
- target: $.paths['/admin/participants/import'].post
  update:
    operationId: postAdminParticipantsImport
- target: $.paths['/admin/participants/notify'].post
  update:
    operationId: postAdminParticipantsNotify
- target: $.paths['/admin/participants'].get
  update:
    operationId: getAdminParticipants
- target: $.paths['/admin/participants/template'].get
  update:
    operationId: getAdminParticipantsTemplate
- target: $.paths['/admin/participants/verify/generate-link'].post
  update:
    operationId: postAdminParticipantsVerifyGenerateLink
- target: $.paths['/admin/performance'].get
  update:
    operationId: getAdminPerformance
- target: $.paths['/admin/places/google-places'].post
  update:
    operationId: postAdminPlacesGooglePlaces
- target: $.paths['/admin/places/store-qr/{participantId}/pdf'].get
  update:
    operationId: getAdminPlacesStoreQrParticipantIdPdf
- target: $.paths['/admin/places/store-qr'].get
  update:
    operationId: getAdminPlacesStoreQr
- target: $.paths['/admin/places/store-qr'].put
  update:
    operationId: putAdminPlacesStoreQr
- target: $.paths['/admin/planting-guides/import'].post
  update:
    operationId: postAdminPlantingGuidesImport
- target: $.paths['/admin/planting-guides'].get
  update:
    operationId: getAdminPlantingGuides
- target: $.paths['/admin/products/{id}'].get
  update:
    operationId: getAdminProductsId
- target: $.paths['/admin/products/{id}'].patch
  update:
    operationId: patchAdminProductsId
- target: $.paths['/admin/products/{id}'].delete
  update:
    operationId: deleteAdminProductsId
- target: $.paths['/admin/products'].get
  update:
    operationId: getAdminProducts
- target: $.paths['/admin/products'].post
  update:
    operationId: postAdminProducts
- target: $.paths['/admin/provenance-categories'].get
  update:
    operationId: getAdminProvenanceCategories
- target: $.paths['/admin/provenance-reports/place-interest'].get
  update:
    operationId: getAdminProvenanceReportsPlaceInterest
- target: $.paths['/admin/provenance-reports/producer-demand'].get
  update:
    operationId: getAdminProvenanceReportsProducerDemand
- target: $.paths['/admin/provenance-reports/producer-leads'].get
  update:
    operationId: getAdminProvenanceReportsProducerLeads
- target: $.paths['/admin/provenance-reports/regional-trend'].get
  update:
    operationId: getAdminProvenanceReportsRegionalTrend
- target: $.paths['/admin/real-estate-pdf/bulk'].post
  update:
    operationId: postAdminRealEstatePdfBulk
- target: $.paths['/admin/real-estate-pdf/connectivity-audit'].get
  update:
    operationId: getAdminRealEstatePdfConnectivityAudit
- target: $.paths['/admin/real-estate-pdf/cover-letter'].get
  update:
    operationId: getAdminRealEstatePdfCoverLetter
- target: $.paths['/admin/recipes/db'].get
  update:
    operationId: getAdminRecipesDb
- target: $.paths['/admin/regional-score/apply-connection'].post
  update:
    operationId: postAdminRegionalScoreApplyConnection
- target: $.paths['/admin/regional-score/regions'].get
  update:
    operationId: getAdminRegionalScoreRegions
- target: $.paths['/admin/score-cache'].get
  update:
    operationId: getAdminScoreCache
- target: $.paths['/admin/score-cache'].post
  update:
    operationId: postAdminScoreCache
- target: $.paths['/admin/set-gps'].post
  update:
    operationId: postAdminSetGps
- target: $.paths['/admin/settings'].get
  update:
    operationId: getAdminSettings
- target: $.paths['/admin/settings'].patch
  update:
    operationId: patchAdminSettings
- target: $.paths['/admin/sponsorships/{id}'].patch
  update:
    operationId: patchAdminSponsorshipsId
- target: $.paths['/admin/sponsorships/{id}'].delete
  update:
    operationId: deleteAdminSponsorshipsId
- target: $.paths['/admin/sponsorships'].get
  update:
    operationId: getAdminSponsorships
- target: $.paths['/admin/sponsorships'].post
  update:
    operationId: postAdminSponsorships
- target: $.paths['/admin/stats'].get
  update:
    operationId: getAdminStats
- target: $.paths['/admin/store-qr/default-layout'].get
  update:
    operationId: getAdminStoreQrDefaultLayout
- target: $.paths['/admin/store-qr/default-layout'].put
  update:
    operationId: putAdminStoreQrDefaultLayout
- target: $.paths['/admin/surveys/{id}'].get
  update:
    operationId: getAdminSurveysId
- target: $.paths['/admin/surveys/{id}'].put
  update:
    operationId: putAdminSurveysId
- target: $.paths['/admin/surveys/{id}'].delete
  update:
    operationId: deleteAdminSurveysId
- target: $.paths['/admin/surveys'].get
  update:
    operationId: getAdminSurveys
- target: $.paths['/admin/surveys'].post
  update:
    operationId: postAdminSurveys
- target: $.paths['/admin/tasks'].get
  update:
    operationId: getAdminTasks
- target: $.paths['/admin/template'].get
  update:
    operationId: getAdminTemplate
- target: $.paths['/admin/users/{id}/admin'].put
  update:
    operationId: putAdminUsersIdAdmin
- target: $.paths['/admin/users/{id}/email'].put
  update:
    operationId: putAdminUsersIdEmail
- target: $.paths['/admin/users/admin-info'].get
  update:
    operationId: getAdminUsersAdminInfo
- target: $.paths['/admin/users'].get
  update:
    operationId: getAdminUsers
- target: $.paths['/admin/users/search'].get
  update:
    operationId: getAdminUsersSearch
- target: $.paths['/admin/widget-access'].get
  update:
    operationId: getAdminWidgetAccess
- target: $.paths['/admin/widget-access'].post
  update:
    operationId: postAdminWidgetAccess
- target: $.paths['/admin/widget-access'].delete
  update:
    operationId: deleteAdminWidgetAccess
- target: $.paths['/admin/widget-usage'].get
  update:
    operationId: getAdminWidgetUsage
- target: $.paths['/agents/admin/ban_agent'].post
  update:
    operationId: postAgentsAdminBan_agent
- target: $.paths['/agents/association/{id}/card'].get
  update:
    operationId: getAgentsAssociationIdCard
- target: $.paths['/agents/association/{id}/get_benefits'].post
  update:
    operationId: postAgentsAssociationIdGet_benefits
- target: $.paths['/agents/association/{id}/get_benefits'].get
  update:
    operationId: getAgentsAssociationIdGet_benefits
- target: $.paths['/agents/association/{id}/get_info'].post
  update:
    operationId: postAgentsAssociationIdGet_info
- target: $.paths['/agents/association/{id}/get_info'].get
  update:
    operationId: getAgentsAssociationIdGet_info
- target: $.paths['/agents/association/{id}/list_members'].post
  update:
    operationId: postAgentsAssociationIdList_members
- target: $.paths['/agents/association/{id}/list_members'].get
  update:
    operationId: getAgentsAssociationIdList_members
- target: $.paths['/agents/association/{id}/membership_info'].post
  update:
    operationId: postAgentsAssociationIdMembership_info
- target: $.paths['/agents/association/{id}/membership_info'].get
  update:
    operationId: getAgentsAssociationIdMembership_info
- target: $.paths['/agents/participant/{id}/add_offering'].post
  update:
    operationId: postAgentsParticipantIdAdd_offering
- target: $.paths['/agents/participant/{id}/card'].get
  update:
    operationId: getAgentsParticipantIdCard
- target: $.paths['/agents/participant/{id}/challenge_status'].post
  update:
    operationId: postAgentsParticipantIdChallenge_status
- target: $.paths['/agents/participant/{id}/get_analytics'].post
  update:
    operationId: postAgentsParticipantIdGet_analytics
- target: $.paths['/agents/participant/{id}/get_associations'].post
  update:
    operationId: postAgentsParticipantIdGet_associations
- target: $.paths['/agents/participant/{id}/get_capabilities'].post
  update:
    operationId: postAgentsParticipantIdGet_capabilities
- target: $.paths['/agents/participant/{id}/get_events'].post
  update:
    operationId: postAgentsParticipantIdGet_events
- target: $.paths['/agents/participant/{id}/get_hours'].post
  update:
    operationId: postAgentsParticipantIdGet_hours
- target: $.paths['/agents/participant/{id}/get_messages'].post
  update:
    operationId: postAgentsParticipantIdGet_messages
- target: $.paths['/agents/participant/{id}/get_profile'].post
  update:
    operationId: postAgentsParticipantIdGet_profile
- target: $.paths['/agents/participant/{id}/get_resellers'].post
  update:
    operationId: postAgentsParticipantIdGet_resellers
- target: $.paths['/agents/participant/{id}/get_reviews'].post
  update:
    operationId: postAgentsParticipantIdGet_reviews
- target: $.paths['/agents/participant/{id}/get_suppliers'].post
  update:
    operationId: postAgentsParticipantIdGet_suppliers
- target: $.paths['/agents/participant/{id}/list_offerings'].post
  update:
    operationId: postAgentsParticipantIdList_offerings
- target: $.paths['/agents/participant/{id}/send_inquiry'].post
  update:
    operationId: postAgentsParticipantIdSend_inquiry
- target: $.paths['/agents/participant/{id}/update_hours'].post
  update:
    operationId: postAgentsParticipantIdUpdate_hours
- target: $.paths['/agents/participant/{id}/update_offering'].post
  update:
    operationId: postAgentsParticipantIdUpdate_offering
- target: $.paths['/agents/participant/{id}/update_place'].post
  update:
    operationId: postAgentsParticipantIdUpdate_place
- target: $.paths['/agents/platform/approve_task'].post
  update:
    operationId: postAgentsPlatformApprove_task
- target: $.paths['/agents/platform/card'].get
  update:
    operationId: getAgentsPlatformCard
- target: $.paths['/agents/platform/claim_task'].post
  update:
    operationId: postAgentsPlatformClaim_task
- target: $.paths['/agents/platform/create_place'].post
  update:
    operationId: postAgentsPlatformCreate_place
- target: $.paths['/agents/platform/discover_businesses'].post
  update:
    operationId: postAgentsPlatformDiscover_businesses
- target: $.paths['/agents/platform/get_platform_info'].post
  update:
    operationId: postAgentsPlatformGet_platform_info
- target: $.paths['/agents/platform/get_task'].post
  update:
    operationId: postAgentsPlatformGet_task
- target: $.paths['/agents/platform/list_tasks'].post
  update:
    operationId: postAgentsPlatformList_tasks
- target: $.paths['/agents/platform/rate_limit_status'].get
  update:
    operationId: getAgentsPlatformRate_limit_status
- target: $.paths['/agents/platform/search_products'].post
  update:
    operationId: postAgentsPlatformSearch_products
- target: $.paths['/agents/platform/submit_task_response'].post
  update:
    operationId: postAgentsPlatformSubmit_task_response
- target: $.paths['/agents/platform/suggest_connection'].post
  update:
    operationId: postAgentsPlatformSuggest_connection
- target: $.paths['/agents/platform/suggest_place'].post
  update:
    operationId: postAgentsPlatformSuggest_place
- target: $.paths['/agents/platform/suggest_product'].post
  update:
    operationId: postAgentsPlatformSuggest_product
- target: $.paths['/agents/public/place-summary'].get
  update:
    operationId: getAgentsPublicPlaceSummary
- target: $.paths['/agents/registry'].get
  update:
    operationId: getAgentsRegistry
- target: $.paths['/agents/task-processor/process'].post
  update:
    operationId: postAgentsTaskProcessorProcess
- target: $.paths['/agents/tasks/create'].post
  update:
    operationId: postAgentsTasksCreate
- target: $.paths['/agents/tasks/status/{taskId}'].get
  update:
    operationId: getAgentsTasksStatusTaskId
- target: $.paths['/agritourism/campaigns/{id}/analytics'].get
  update:
    operationId: getAgritourismCampaignsIdAnalytics
- target: $.paths['/agritourism/campaigns/{id}/locations/{participantId}'].delete
  update:
    operationId: deleteAgritourismCampaignsIdLocationsParticipantId
- target: $.paths['/agritourism/campaigns/{id}/locations'].post
  update:
    operationId: postAgritourismCampaignsIdLocations
- target: $.paths['/agritourism/campaigns/{id}/opt-in'].post
  update:
    operationId: postAgritourismCampaignsIdOptIn
- target: $.paths['/agritourism/campaigns/{id}/participant-stats'].get
  update:
    operationId: getAgritourismCampaignsIdParticipantStats
- target: $.paths['/agritourism/campaigns/{id}'].get
  update:
    operationId: getAgritourismCampaignsId
- target: $.paths['/agritourism/campaigns/{id}'].put
  update:
    operationId: putAgritourismCampaignsId
- target: $.paths['/agritourism/campaigns/{id}'].delete
  update:
    operationId: deleteAgritourismCampaignsId
- target: $.paths['/agritourism/campaigns/{id}/scanner/attendees'].get
  update:
    operationId: getAgritourismCampaignsIdScannerAttendees
- target: $.paths['/agritourism/campaigns/{id}/scanner/bulk-reconcile'].post
  update:
    operationId: postAgritourismCampaignsIdScannerBulkReconcile
- target: $.paths['/agritourism/campaigns/{id}/scanner/checkin'].post
  update:
    operationId: postAgritourismCampaignsIdScannerCheckin
- target: $.paths['/agritourism/campaigns/{id}/scanner/context'].get
  update:
    operationId: getAgritourismCampaignsIdScannerContext
- target: $.paths['/agritourism/campaigns/{id}/scanner/guest-list'].get
  update:
    operationId: getAgritourismCampaignsIdScannerGuestList
- target: $.paths['/agritourism/campaigns/{id}/scanner/lookup'].post
  update:
    operationId: postAgritourismCampaignsIdScannerLookup
- target: $.paths['/agritourism/campaigns/{id}/scanner/stats'].get
  update:
    operationId: getAgritourismCampaignsIdScannerStats
- target: $.paths['/agritourism/campaigns/{id}/scanner/undo-checkin'].post
  update:
    operationId: postAgritourismCampaignsIdScannerUndoCheckin
- target: $.paths['/agritourism/campaigns/{id}/status'].post
  update:
    operationId: postAgritourismCampaignsIdStatus
- target: $.paths['/agritourism/campaigns/{id}/stop-busyness'].get
  update:
    operationId: getAgritourismCampaignsIdStopBusyness
- target: $.paths['/agritourism/campaigns/{id}/ticket-types/{ticketTypeId}'].patch
  update:
    operationId: patchAgritourismCampaignsIdTicketTypesTicketTypeId
- target: $.paths['/agritourism/campaigns/{id}/ticket-types/{ticketTypeId}'].delete
  update:
    operationId: deleteAgritourismCampaignsIdTicketTypesTicketTypeId
- target: $.paths['/agritourism/campaigns/{id}/ticket-types'].post
  update:
    operationId: postAgritourismCampaignsIdTicketTypes
- target: $.paths['/agritourism/campaigns/all'].get
  update:
    operationId: getAgritourismCampaignsAll
- target: $.paths['/agritourism/campaigns/create'].post
  update:
    operationId: postAgritourismCampaignsCreate
- target: $.paths['/agritourism/campaigns/joinable'].get
  update:
    operationId: getAgritourismCampaignsJoinable
- target: $.paths['/agritourism/campaigns/mine'].get
  update:
    operationId: getAgritourismCampaignsMine
- target: $.paths['/agritourism/campaigns'].get
  update:
    operationId: getAgritourismCampaigns
- target: $.paths['/agritourism/checkout'].post
  update:
    operationId: postAgritourismCheckout
- target: $.paths['/agritourism/claim-free'].post
  update:
    operationId: postAgritourismClaimFree
- target: $.paths['/agritourism/fee-profiles'].get
  update:
    operationId: getAgritourismFeeProfiles
- target: $.paths['/agritourism/lookup'].post
  update:
    operationId: postAgritourismLookup
- target: $.paths['/agritourism/my-associations'].get
  update:
    operationId: getAgritourismMyAssociations
- target: $.paths['/agritourism/stripe-connect/dashboard'].get
  update:
    operationId: getAgritourismStripeConnectDashboard
- target: $.paths['/agritourism/stripe-connect'].post
  update:
    operationId: postAgritourismStripeConnect
- target: $.paths['/agritourism/stripe-connect/status'].get
  update:
    operationId: getAgritourismStripeConnectStatus
- target: $.paths['/agritourism/ticket-types/{id}'].put
  update:
    operationId: putAgritourismTicketTypesId
- target: $.paths['/agritourism/tickets/{id}/cancel'].post
  update:
    operationId: postAgritourismTicketsIdCancel
- target: $.paths['/agritourism/tickets/{id}/download'].get
  update:
    operationId: getAgritourismTicketsIdDownload
- target: $.paths['/agritourism/tickets/{id}/pass'].get
  update:
    operationId: getAgritourismTicketsIdPass
- target: $.paths['/agritourism/tickets/{id}'].get
  update:
    operationId: getAgritourismTicketsId
- target: $.paths['/agritourism/tickets'].get
  update:
    operationId: getAgritourismTickets
- target: $.paths['/agritourism/validate'].post
  update:
    operationId: postAgritourismValidate
- target: $.paths['/analytics/entity/{entityType}/{entityId}'].get
  update:
    operationId: getAnalyticsEntityEntityTypeEntityId
- target: $.paths['/analytics/fallback'].post
  update:
    operationId: postAnalyticsFallback
- target: $.paths['/analytics/fallback'].get
  update:
    operationId: getAnalyticsFallback
- target: $.paths['/analytics/metrics'].get
  update:
    operationId: getAnalyticsMetrics
- target: $.paths['/analytics/track'].post
  update:
    operationId: postAnalyticsTrack
- target: $.paths['/associations/{id}/members/{membershipId}'].put
  update:
    operationId: putAssociationsIdMembersMembershipId
- target: $.paths['/associations/{id}/members'].get
  update:
    operationId: getAssociationsIdMembers
- target: $.paths['/associations/{id}/place-tours/{tourId}'].patch
  update:
    operationId: patchAssociationsIdPlaceToursTourId
- target: $.paths['/associations/{id}/place-tours/{tourId}'].put
  update:
    operationId: putAssociationsIdPlaceToursTourId
- target: $.paths['/associations/{id}/place-tours'].get
  update:
    operationId: getAssociationsIdPlaceTours
- target: $.paths['/associations/{id}/place-tours'].post
  update:
    operationId: postAssociationsIdPlaceTours
- target: $.paths['/associations/{id}/spend-challenge/activity-map'].get
  update:
    operationId: getAssociationsIdSpendChallengeActivityMap
- target: $.paths['/associations/{id}/spend-challenge/campaigns/{campaignId}/open'].post
  update:
    operationId: postAssociationsIdSpendChallengeCampaignsCampaignIdOpen
- target: $.paths['/associations/{id}/spend-challenge/campaigns/{campaignId}/poster'].get
  update:
    operationId: getAssociationsIdSpendChallengeCampaignsCampaignIdPoster
- target: $.paths['/associations/{id}/spend-challenge/campaigns/{campaignId}'].patch
  update:
    operationId: patchAssociationsIdSpendChallengeCampaignsCampaignId
- target: $.paths['/associations/{id}/spend-challenge/campaigns'].get
  update:
    operationId: getAssociationsIdSpendChallengeCampaigns
- target: $.paths['/associations/{id}/spend-challenge/campaigns'].post
  update:
    operationId: postAssociationsIdSpendChallengeCampaigns
- target: $.paths['/associations/{id}/spend-challenge/insights'].get
  update:
    operationId: getAssociationsIdSpendChallengeInsights
- target: $.paths['/associations/{id}/spend-challenge'].get
  update:
    operationId: getAssociationsIdSpendChallenge
- target: $.paths['/associations/{id}/spend-challenge'].put
  update:
    operationId: putAssociationsIdSpendChallenge
- target: $.paths['/associations/by-slug/{slug}/tours/{tourSlug}'].get
  update:
    operationId: getAssociationsBySlugSlugToursTourSlug
- target: $.paths['/associations/by-slug/{slug}/tours'].get
  update:
    operationId: getAssociationsBySlugSlugTours
- target: $.paths['/auth/telegram/link'].post
  update:
    operationId: postAuthTelegramLink
- target: $.paths['/auth/telegram/register-chat'].post
  update:
    operationId: postAuthTelegramRegisterChat
- target: $.paths['/auth/telegram/verify'].post
  update:
    operationId: postAuthTelegramVerify
- target: $.paths['/baskets/{id}'].get
  update:
    operationId: getBasketsId
- target: $.paths['/baskets/{id}'].put
  update:
    operationId: putBasketsId
- target: $.paths['/baskets/{id}'].delete
  update:
    operationId: deleteBasketsId
- target: $.paths['/baskets'].post
  update:
    operationId: postBaskets
- target: $.paths['/baskets'].get
  update:
    operationId: getBaskets
- target: $.paths['/browse-products'].get
  update:
    operationId: getBrowseProducts
- target: $.paths['/business/store-qr/apply-layout-all'].post
  update:
    operationId: postBusinessStoreQrApplyLayoutAll
- target: $.paths['/business/store-qr/regenerate-token'].post
  update:
    operationId: postBusinessStoreQrRegenerateToken
- target: $.paths['/business/store-qr'].get
  update:
    operationId: getBusinessStoreQr
- target: $.paths['/business/store-qr'].put
  update:
    operationId: putBusinessStoreQr
- target: $.paths['/business/store-qr/track'].post
  update:
    operationId: postBusinessStoreQrTrack
- target: $.paths['/business/surveys/{id}'].get
  update:
    operationId: getBusinessSurveysId
- target: $.paths['/business/surveys/{id}'].put
  update:
    operationId: putBusinessSurveysId
- target: $.paths['/business/surveys/{id}'].delete
  update:
    operationId: deleteBusinessSurveysId
- target: $.paths['/business/surveys'].get
  update:
    operationId: getBusinessSurveys
- target: $.paths['/business/surveys'].post
  update:
    operationId: postBusinessSurveys
- target: $.paths['/categories'].get
  update:
    operationId: getCategories
- target: $.paths['/community/insights'].get
  update:
    operationId: getCommunityInsights
- target: $.paths['/community/members'].get
  update:
    operationId: getCommunityMembers
- target: $.paths['/community-food-score-pdf'].get
  update:
    operationId: getCommunityFoodScorePdf
- target: $.paths['/config/client'].get
  update:
    operationId: getConfigClient
- target: $.paths['/connections/{id}'].post
  update:
    operationId: postConnectionsId
- target: $.paths['/connections/{id}'].put
  update:
    operationId: putConnectionsId
- target: $.paths['/connections/{id}'].delete
  update:
    operationId: deleteConnectionsId
- target: $.paths['/connections'].get
  update:
    operationId: getConnections
- target: $.paths['/connections'].post
  update:
    operationId: postConnections
- target: $.paths['/connections/status'].get
  update:
    operationId: getConnectionsStatus
- target: $.paths['/contact'].post
  update:
    operationId: postContact
- target: $.paths['/cron/ontario-weekly-snapshot'].post
  update:
    operationId: postCronOntarioWeeklySnapshot
- target: $.paths['/cuisines'].get
  update:
    operationId: getCuisines
- target: $.paths['/debug/features'].get
  update:
    operationId: getDebugFeatures
- target: $.paths['/dev/chat'].get
  update:
    operationId: getDevChat
- target: $.paths['/dev/chat'].post
  update:
    operationId: postDevChat
- target: $.paths['/dev/login'].post
  update:
    operationId: postDevLogin
- target: $.paths['/dev/users'].get
  update:
    operationId: getDevUsers
- target: $.paths['/discussions/categories/{slug}/jobs'].get
  update:
    operationId: getDiscussionsCategoriesSlugJobs
- target: $.paths['/discussions/categories'].get
  update:
    operationId: getDiscussionsCategories
- target: $.paths['/discussions/locations'].get
  update:
    operationId: getDiscussionsLocations
- target: $.paths['/discussions/posts/{id}/replies'].post
  update:
    operationId: postDiscussionsPostsIdReplies
- target: $.paths['/discussions/posts/{id}'].get
  update:
    operationId: getDiscussionsPostsId
- target: $.paths['/discussions/posts'].get
  update:
    operationId: getDiscussionsPosts
- target: $.paths['/discussions/posts'].post
  update:
    operationId: postDiscussionsPosts
- target: $.paths['/discussions/subscriptions'].get
  update:
    operationId: getDiscussionsSubscriptions


# --- truncated at 32 KB (72 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/piknik-spot/refs/heads/main/overlays/piknik-spot-openapi-overlay.yaml