// Add 18-hole championship courseawait camino.publishProduct({ providerId: clubId, name: 'Championship Course', description: 'Our signature 18-hole championship layout', category: 'Championship', price: { amount: 150, currency: 'EUR' }, availability: { startDate: new Date('2025-01-01'), endDate: new Date('2025-12-31'), slots: 48 // Daily tee times }, metadata: { holes: 18, par: 72, length: 6500, difficulty: 'Championship', courseType: 'Links' }});console.log('Course published to Camino Messenger');
Method 3: Update Club Media (IPFS)
Code
// Update club logo and course imagesconst txHash = await camino.updateProviderMedia( clubId, 'ipfs://Qm.../new-logo.jpg', [ 'ipfs://Qm.../course1.jpg', 'ipfs://Qm.../course2.jpg', 'ipfs://Qm.../course3.jpg' ], [ 'ipfs://Qm.../clubhouse.jpg', 'ipfs://Qm.../restaurant.jpg' ]);console.log('Media updated, transaction:', txHash);
🌍 Geographic Search & Discovery
Making Your Club Discoverable
Once registered on-chain, your club becomes searchable by location and amenities:
Code
// Search clubs by country (ISO 3166-1 alpha-2)const spanishClubs = await camino.searchProvidersByCountry('ES', 50);console.log(`Found ${spanishClubs.length} golf clubs in Spain`);// Search clubs by location (radius search)const nearbyClubs = await camino.searchProvidersByLocation({ latitude: 36.5141, // Microdegrees stored on-chain longitude: -4.8850, radiusKm: 50});// Search clubs by amenitiesconst luxuryClubs = await camino.searchProviders({ hasHotel: true, hasSpa: true, hasRestaurant: true, verificationStatus: 'Verified'});
Verification Status
Your club goes through a verification workflow:
Code
// Check club verification statusconst clubInfo = await camino.getClubInfo(clubId);console.log('Status:', clubInfo.verificationStatus);// Possible values: Unverified → Pending → Verified → (or Suspended)// Request verification after registrationawait camino.requestVerification(clubId);
Verification Benefits:
Higher visibility in search results
Trust badge for potential customers
Access to premium Camino Messenger features
Eligibility for promotional campaigns
🌐 Distribution Channels
Camino Messenger Protocol Compliance
GG365 publishes golf club data following Camino Messenger standards:
Code
// Your club is automatically discoverable via Camino Messenger// after on-chain registration and verificationconst caminoId = clubInfo.caminoMessengerId;console.log('Your Camino Messenger ID:', caminoId);// Link existing Camino Messenger account (if you have one)await camino.linkCaminoMessenger(clubId, existingCaminoId);
Blockchain Registry
All clubs are registered in the GG365ClubRegistry smart contract:
Code
// Contract address on Camino Networkconst REGISTRY_ADDRESS = '[Pending Deployment]';// Your club data is immutable and verifiable on-chainconst onChainData = await camino.getClubInfo(clubId);console.log('On-chain verification:', onChainData);// Supported tokens for bookingsconst acceptedTokens = ['CAM', 'USDC', 'DAI'];