{"openapi":"3.1.0","info":{"title":"Football Business Desk API","version":"1.0.0","description":"Read-only football club technology research and deterministic football business calculations. Public beta; attribution and source-following are encouraged."},"servers":[{"url":"https://footballbusinessdesk.com"}],"paths":{"/api/v1/tech":{"get":{"operationId":"searchClubTechnology","summary":"Search evidenced football club technology relationships","parameters":[{"name":"club","in":"query","schema":{"type":"string"},"description":"Exact club slug or club name."},{"name":"category","in":"query","schema":{"type":"string"},"description":"Exact technology category."},{"name":"status","in":"query","schema":{"type":"string","enum":["current","historical","status unknown"]}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Free-text search across club, vendor, product, scope and evidence note."}],"responses":{"200":{"description":"Matching sourced relationships in JSON."}}}},"/api/v1/tech/clubs/{slug}":{"get":{"operationId":"getClubTechnologyStack","summary":"Get one club's public technology record","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Club profile with expanded technology records and evidence."},"404":{"description":"Club not found."}}}},"/api/v1/calculate/transfer-cost":{"post":{"operationId":"calculateTransferCost","summary":"Calculate total transfer commitment, annual amortisation and book value","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["fee","years"],"properties":{"fee":{"type":"number","minimum":0,"description":"Guaranteed transfer payment."},"agentRate":{"type":"number","minimum":0,"description":"Agent or intermediary fee as a percentage of the transfer fee."},"signingBonus":{"type":"number","minimum":0,"description":"Signing bonus included in the acquisition scenario."},"otherAcquisition":{"type":"number","minimum":0,"description":"Other direct acquisition costs."},"annualSalary":{"type":"number","minimum":0,"description":"Annual gross salary or employer-cost assumption."},"annualBonus":{"type":"number","minimum":0,"description":"Expected annual bonus."},"years":{"type":"number","minimum":0,"description":"Contract length in years; must be greater than zero."},"saleYear":{"type":"number","minimum":0,"description":"Year of the illustrative disposal."},"expectedSale":{"type":"number","minimum":0,"description":"Illustrative sale proceeds; not a valuation."}}},"examples":{"standard":{"value":{"fee":10000000,"agentRate":5,"signingBonus":500000,"otherAcquisition":250000,"annualSalary":2000000,"annualBonus":300000,"years":5,"saleYear":3,"expectedSale":8000000}}}}}},"responses":{"200":{"description":"Calculated values and methodology link."},"400":{"description":"Invalid request."}}}},"/api/v1/calculate/squad-cost":{"post":{"operationId":"calculateSquadCost","summary":"Calculate a squad-cost ratio, headroom and proposed-signing scenario","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["adjustedOperatingRevenue","transferResultAndOtherIncome","otherRelevantEmployeeCosts","netLoanCosts","otherAgentCosts","threshold","players"],"properties":{"adjustedOperatingRevenue":{"type":"number","minimum":0,"description":"Adjusted operating revenue for the planning denominator."},"transferResultAndOtherIncome":{"type":"number","description":"Signed transfer-result and other relevant denominator adjustment."},"otherRelevantEmployeeCosts":{"type":"number","minimum":0,"description":"Head coach and other relevant employee benefit costs outside the player register."},"netLoanCosts":{"type":"number","description":"Net loan expense; use a negative value for net loan income."},"otherAgentCosts":{"type":"number","minimum":0,"description":"Other agent, intermediary or connected-party costs."},"threshold":{"type":"number","minimum":0,"maximum":100,"description":"Selected planning threshold as a percentage."},"players":{"type":"array","items":{"type":"object","required":["name","employeeCosts","amortisation","agentCosts","bookValue","contractEnd"],"properties":{"name":{"type":"string"},"employeeCosts":{"type":"number","minimum":0,"description":"Annual employee benefit costs."},"amortisation":{"type":"number","minimum":0,"description":"Annual registration-cost amortisation."},"agentCosts":{"type":"number","minimum":0,"description":"Annual agent or intermediary costs not otherwise included."},"bookValue":{"type":"number","minimum":0,"description":"Current carrying value for internal portfolio analysis."},"contractEnd":{"type":"integer","description":"Contract expiry year."}}}},"proposedSigning":{"type":"object","properties":{"employeeCosts":{"type":"number","minimum":0,"description":"Proposed annual employee costs."},"amortisation":{"type":"number","minimum":0,"description":"Proposed annual amortisation."},"agentCosts":{"type":"number","minimum":0,"description":"Proposed annual agent costs."}}}}}}}},"responses":{"200":{"description":"Planning ratio, component totals, headroom, signing scenario and expiry analysis."},"400":{"description":"Invalid request."}}}}}}