{"openapi":"3.1.0","info":{"title":"Alaska Fishing Match API","version":"0.1.0","description":"Read Alaska fishing, basecamp, and logistics planning data and, with explicit traveler consent, submit a complete trip request for human review."},"servers":[{"url":"https://www.alaskafishingmatch.com"}],"paths":{"/api/trips":{"get":{"operationId":"getAlaskaFishingPlanningCatalog","summary":"Get destinations, season guidance, and source metadata","responses":{"200":{"description":"Current planning catalog"}}}},"/api/fish-counts/kenai-sockeye":{"get":{"operationId":"getKenaiRiverSockeyeFishCounts","summary":"Get normalized Kenai River late-run sockeye sonar counts","description":"Returns the latest season and five comparison seasons from the official ADF&G river mile 19 count. If ADF&G is unavailable, the response identifies whether it came through a public archival copy or the last saved official snapshot. Current-year values are preliminary and are passage estimates, not catch forecasts or regulations.","responses":{"200":{"description":"Daily and cumulative Kenai River sockeye passage estimates"},"503":{"description":"No official, archived, or saved count data is available"}}}},"/api/planning-guides":{"get":{"operationId":"listAlaskaFishingDecisionGuides","summary":"List sourced planning comparisons and high-intent decision guides","responses":{"200":{"description":"Decision-guide catalog with stable IDs and canonical URLs"}}}},"/api/planning-guides/{slug}":{"get":{"operationId":"getAlaskaFishingDecisionGuide","summary":"Get one structured Alaska fishing decision guide","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Planning guide with answer, comparisons, FAQs, sources, and limitations"},"404":{"description":"Planning guide not found"}}}},"/api/trip-formats":{"get":{"operationId":"listAlaskaFishingTripFormats","summary":"List planning-only guided fishing trip formats","description":"Trip formats expose stable comparison fields but are not live inventory, availability, pricing, or bookable products.","responses":{"200":{"description":"Planning-only trip-format catalog"}}}},"/api/trip-requests":{"post":{"operationId":"requestAlaskaFishingTripMatch","summary":"Request a human-reviewed fishing, basecamp, and trip-logistics match","description":"Only call after the traveler has reviewed the trip brief and explicitly consented to its submission. This creates a planning request, not a paid booking.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string"},"description":"Use a stable unique value so safe retries do not create duplicate requests."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name","email","timing","partySize","childrenCount","experience","species","waterType","tripLength","lodging","budget","consent"],"properties":{"name":{"type":"string","maxLength":120},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"preferredDestination":{"type":"string","enum":["kenai-soldotna","cooper-landing","homer","seward","kasilof","whittier","ketchikan","sitka","prince-of-wales","juneau"],"description":"Optional starting preference from a destination page. The human reviewer may recommend an alternative."},"timing":{"type":"string","enum":["month","exact","flexible"]},"targetMonth":{"type":"string","examples":["July 2027"]},"exactDate":{"type":"string","format":"date"},"partySize":{"type":"integer","minimum":1,"maximum":18},"childrenCount":{"type":"integer","minimum":0,"maximum":18},"nonAnglers":{"type":"integer","minimum":0,"maximum":18,"default":0},"nights":{"type":"integer","minimum":0,"maximum":30,"description":"Planned nights in the primary fishing base; 0 if not yet known."},"experience":{"type":"string","enum":["first-time","mixed","experienced"]},"species":{"type":"array","minItems":1,"items":{"type":"string"}},"waterType":{"type":"string","enum":["river","saltwater","open"]},"tripLength":{"type":"string","enum":["half-day","day","multi-day","open"]},"lodging":{"type":"string","enum":["help","package","booked","not-needed"]},"lodgingStyle":{"type":"string","enum":["open","fishing-lodge","cabin","hotel","camp"]},"lodgingBudget":{"type":"string","enum":["not-sure","under-250","250-500","500-900","900-plus","package"]},"basecampNeeds":{"type":"array","items":{"type":"string"},"description":"Requested features such as freezer, kitchen, short transfer, gear drying, parking, mobility, or non-angler access."},"itineraryNeeds":{"type":"array","items":{"type":"string"},"description":"Connected logistics such as fish-home handling, transport, non-fishing activities, cruise, or flight timing."},"budget":{"type":"string","enum":["not-sure","under-1000","1000-2500","2500-5000","5000-plus"]},"accessibility":{"type":"string"},"notes":{"type":"string","maxLength":1500},"consent":{"type":"boolean","const":true,"description":"Traveler explicitly approved submission."},"source":{"type":"string","default":"agent"}}}}}},"responses":{"201":{"description":"Trip request received for human review"},"422":{"description":"Required or consent fields are incomplete"}}}}}}