# info.title
Co-Achat Loyalty Card - Public Merchant API

# info.description
Public API for discovering merchants with geolocation, loyalty programs, promotional offers, and Google Reviews integration. This API is freely accessible without authentication.

# tags[].description
Public endpoints - no authentication required

# paths./public/wmcp/merchants/map.get.description
Discover claimed merchants only with geolocation, loyalty programs, promotional offers, scheduled and active contests, and Google Reviews configuration. Unclaimed merchants are excluded.

# paths./public/wmcp/merchants/map.get.parameters[].description
Search radius in kilometers (default: 10)

# paths./public/wmcp/merchants/map.get.parameters[].description
Maximum number of results (default: 20, max: 100)

# paths./public/wmcp/merchants/map.get.parameters[].description
Text search on merchant name (case-insensitive)

# paths./public/wmcp/merchants/map.get.parameters[].description
Filter merchants by establishment type code

# paths./public/wmcp/merchants/map.get.responses.400.content.application/json.examples.invalid_lat_lon.value.message
latitude and longitude must be valid numbers

# paths./public/wmcp/contests.get.description
List scheduled and active contests (jeux concours) across claimed merchants, including the contest schedule and every reward (lot) to win. Useful for AI discovery and aggregators.

# paths./public/wmcp/contests.get.parameters[].description
Restrict listing to a single merchant (UUID)

# paths./public/wmcp/contests.get.parameters[].description
Maximum number of contests (default 50, max 100)

# components.schemas.MerchantsMapResponse.description
Response containing list of merchants for map view

# components.schemas.MerchantsMapResponse.properties.merchants.description
List of merchants matching search criteria

# components.schemas.MerchantsMapResponse.properties.total.description
Total number of merchants matching criteria (without pagination)

# components.schemas.MapMerchant.properties.distance_km.description
Distance from search center in kilometers (null if no geolocation provided)

# components.schemas.MapMerchant.properties.subscriber_count.description
Number of active subscribers (social proof)

# components.schemas.MapMerchant.properties.has_active_content.description
Merchant has at least one active loyalty program or promotional offer

# components.schemas.MapMerchant.properties.is_customer_linked.description
Current user is linked to this merchant (requires customer authentication)

# components.schemas.MapMerchant.properties.active_contests.description
Scheduled or active contests (jeux concours) with the list of rewards to win

# components.schemas.MapMerchant.properties.google_review.oneOf[].description
Null if Google Review module is not fully configured

# components.schemas.MapMerchant.properties.google_review.description
Google Review module configuration (null if incomplete)

# components.schemas.MapLoyaltyProgram.properties.stamp_target.description
Number of stamps required for reward (only for STAMP type)

# components.schemas.MapActiveOffer.description
Promotional offer summary for map display

# components.schemas.MapGoogleReview.properties.google_review_url.description
Complete Google review URL for the merchant

# components.schemas.MapGoogleReview.properties.is_configuration_complete.description
Module is fully configured and ready to use

# components.schemas.PublicContestsResponse.description
Response payload for the public contests listing endpoint

# components.schemas.PublicContestsResponse.properties.total.description
Number of contests returned in this page

# components.schemas.PublicContest.description
A contest (jeu concours) organised by a merchant, with the list of rewards to win

# components.schemas.PublicContest.properties.status.description
Contest lifecycle status. Only scheduled and active contests are exposed publicly.

# components.schemas.PublicContest.properties.rewards.description
Rewards (lots) to win, ordered by rank ascending (rank #1 = top prize)

# components.schemas.PublicContestReward.description
One reward (lot) inside a contest. Type TEXT is a free-form prize; CARD_STAMP / CARD_POINT grant a dedicated loyalty card to the winner.

# components.schemas.PublicContestReward.properties.type.description
Reward kind: TEXT (simple prize), CARD_STAMP (loyalty stamp card), CARD_POINT (loyalty point card / store credit)

# components.schemas.PublicContestReward.properties.target_value.description
For CARD_STAMP: number of stamps targeted. For CARD_POINT: amount in cents to accumulate (e.g. 5000 = 50€).

# components.schemas.PublicContestReward.properties.reward_description.description
Short description of what the winner gets (e.g. '1 menu offert par tampon', '1€ de remise par point')