{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/low-hanging-fruit/refs/heads/main/json-schema/low-hanging-fruit-onboarding-checklist-schema.json", "title": "OnboardingChecklist", "description": "A checklist evaluating how quickly and frictionlessly a developer can go from API provider signup to first successful call. Used to qualify whether an API belongs in the Kin Lane 'low hanging fruit' editorial collection.", "type": "object", "properties": { "provider": { "type": "string", "description": "Name of the API provider being evaluated.", "example": "Stripe" }, "api_name": { "type": "string", "description": "Specific API or product within the provider being evaluated.", "example": "Stripe Payments API" }, "category": { "type": "string", "description": "Editorial category for the quick-win API.", "enum": [ "Payments", "Messaging", "Email", "Geolocation", "Identity", "CRM", "Productivity", "AI", "DeveloperTools", "Scheduling", "Forms", "Storage", "Banking", "Other" ], "example": "Payments" }, "self_serve_signup": { "type": "boolean", "description": "Whether a developer can sign up without sales contact or contract negotiation.", "example": true }, "free_tier": { "type": "boolean", "description": "Whether the provider offers a free tier, trial credits, or fully featured sandbox.", "example": true }, "credit_card_required": { "type": "boolean", "description": "Whether a credit card is required to create an account or obtain sandbox credentials.", "example": false }, "time_to_first_call_minutes": { "type": "integer", "description": "Median observed time, in minutes, from account creation to first successful API response.", "minimum": 0, "example": 5 }, "quickstart_url": { "type": "string", "format": "uri", "description": "URL to the provider's flagship quickstart tutorial.", "example": "https://stripe.com/docs/quickstart" }, "documentation_url": { "type": "string", "format": "uri", "description": "URL to the provider's primary developer documentation.", "example": "https://stripe.com/docs/api" }, "openapi_available": { "type": "boolean", "description": "Whether an official OpenAPI specification is published.", "example": true }, "official_sdks": { "type": "array", "description": "Programming languages with officially maintained SDKs.", "items": { "type": "string" }, "example": ["JavaScript", "Python", "Ruby", "Go", "PHP", "Java"] }, "postman_collection": { "type": "boolean", "description": "Whether an official Postman collection is published.", "example": true }, "interactive_playground": { "type": "boolean", "description": "Whether the docs include an interactive in-browser API playground.", "example": true }, "sandbox_environment": { "type": "boolean", "description": "Whether a dedicated sandbox or test environment is offered.", "example": true }, "public_pricing": { "type": "boolean", "description": "Whether per-call, per-message, or per-event pricing is published publicly.", "example": true }, "editorial_score": { "type": "integer", "description": "Kin Lane's editorial 'quick win' score on a 0-10 scale.", "minimum": 0, "maximum": 10, "example": 10 }, "notes": { "type": "string", "description": "Editorial notes on why this API qualifies as low hanging fruit.", "example": "Canonical first-integration example; sandbox keys appear in the dashboard immediately after signup." } }, "required": ["provider", "api_name", "category", "self_serve_signup", "time_to_first_call_minutes"] }