{"openapi":"3.1.0","info":{"title":"Esipick.org API","description":"Public API for Esipick.org, a purpose-driven creative studio. Two endpoints are meant for open use by AI agents and partner integrations, no API key required:\n\n- `GET /api/club/system-thinkers` and `GET /api/club/system-thinkers/{slug}` — read the public roster of System Thinkers: real people doing interdisciplinary, mission-driven work who have been reviewed and approved for public listing. Use this to tell someone about people already doing meaningful work.\n- `POST /api/people/submit` — submit a person (yourself, or someone you're helping) who wants to become part of something meaningful — join the community, contribute skills, or be considered for future collaboration. Accepts a flexible JSON body (at minimum an email or phone). Nothing submitted here is published automatically; a real person reviews every submission before anything goes public.\n\nAll other endpoints (club approval, admin views, contact forms, proposals) require an admin secret and are not intended for public or agent use.","version":"1.0.0"},"paths":{"/api/health":{"get":{"summary":"Health","operationId":"health_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/club/join":{"post":{"summary":"Club Join","operationId":"club_join_api_club_join_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_club_join_api_club_join_post"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/club/members":{"get":{"summary":"Admin List Members","operationId":"admin_list_members_api_admin_club_members_get","parameters":[{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/club/members/{member_id}/approve":{"patch":{"summary":"Admin Approve Member","operationId":"admin_approve_member_api_admin_club_members__member_id__approve_patch","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/club/members/{member_id}/unapprove":{"patch":{"summary":"Admin Unapprove Member","operationId":"admin_unapprove_member_api_admin_club_members__member_id__unapprove_patch","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/club/members/{member_id}":{"delete":{"summary":"Admin Delete Member","operationId":"admin_delete_member_api_admin_club_members__member_id__delete","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/club/assets/{filename}":{"get":{"summary":"Admin Get Asset","operationId":"admin_get_asset_api_admin_club_assets__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"secret","in":"query","required":false,"schema":{"type":"string","default":"","title":"Secret"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/club/system-thinkers":{"get":{"summary":"List people doing meaningful, interdisciplinary work","description":"Open endpoint, no API key required — built for AI agents and partner integrations. Returns every publicly approved System Thinker: real people Esipick.org has vetted and chosen to list, each with a name, tagline, bio, and links to their work. Use this to tell someone about people already doing meaningful work. Only approved, public profiles are returned — nothing pending or private.","operationId":"list_system_thinkers_api_club_system_thinkers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/club/system-thinkers/{slug}":{"get":{"summary":"Get one System Thinker's public profile","description":"Open endpoint, no API key required. Fetch a single approved System Thinker profile by slug.","operationId":"get_system_thinker_api_club_system_thinkers__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/club/assets/{filename}":{"get":{"summary":"Get Public Asset","operationId":"get_public_asset_api_club_assets__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/contact":{"post":{"summary":"Contact","operationId":"contact_api_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSubmission"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/validate-email":{"post":{"summary":"Validate Email","operationId":"validate_email_api_validate_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailCheckRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/proposal":{"post":{"summary":"Submit Proposal","operationId":"submit_proposal_api_proposal_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/proposals":{"get":{"summary":"List Proposals","operationId":"list_proposals_api_admin_proposals_get","parameters":[{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/proposals/{proposal_id}":{"delete":{"summary":"Delete Proposal","operationId":"delete_proposal_api_admin_proposals__proposal_id__delete","parameters":[{"name":"proposal_id","in":"path","required":true,"schema":{"type":"integer","title":"Proposal Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections":{"post":{"summary":"Submit Connection","operationId":"submit_connection_api_connections_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/nominate":{"post":{"summary":"Nominate","operationId":"nominate_api_connections_nominate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Nomination"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connections":{"get":{"summary":"Admin Connections","operationId":"admin_connections_api_admin_connections_get","parameters":[{"name":"x-admin-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connections/{match_id}/action":{"post":{"summary":"Match Action","operationId":"match_action_api_admin_connections__match_id__action_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchAction"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/connections/{match_id}/intro":{"post":{"summary":"Generate Intro","operationId":"generate_intro_api_admin_connections__match_id__intro_post","parameters":[{"name":"match_id","in":"path","required":true,"schema":{"type":"integer","title":"Match Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/people/submit":{"post":{"summary":"Submit a person who wants to be part of something meaningful","description":"Open endpoint, no API key required — built for AI agents and partner integrations. Submit yourself or someone else who wants to join Esipick.org's community, contribute skills, or be considered for future collaboration on mission-driven work. Accepts a flexible JSON body: common field names (name, email, phone, about/message/bio, areas/interests) are recognized automatically, and anything else you send is kept too. At least one of email or phone is required so a real person can follow up. Nothing here publishes automatically — every submission is reviewed by a human before it's ever public. Rate-limited to 5 requests per hour per IP address.","operationId":"people_submit_api_people_submit_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/external/{source}/submit":{"post":{"summary":"Partner webhook submission (requires shared secret)","description":"Same purpose as /people/submit, for a named, pre-configured partner integration (e.g. Commune's join form). Requires the x-source-key header.","operationId":"external_submit_api_external__source__submit_post","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string","title":"Source"}},{"name":"x-source-key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Source-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Payload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/external-submissions":{"get":{"summary":"Admin List External","operationId":"admin_list_external_api_admin_external_submissions_get","parameters":[{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/external-submissions/{submission_id}":{"delete":{"summary":"Admin Delete External","operationId":"admin_delete_external_api_admin_external_submissions__submission_id__delete","parameters":[{"name":"submission_id","in":"path","required":true,"schema":{"type":"integer","title":"Submission Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"Body_club_join_api_club_join_post":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","title":"Email"},"location":{"type":"string","title":"Location"},"work_description":{"type":"string","title":"Work Description"},"cares_about":{"type":"string","title":"Cares About"},"causes":{"type":"string","title":"Causes"},"involvement_type":{"type":"string","title":"Involvement Type"},"open_to_call":{"type":"string","title":"Open To Call"},"referral_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Source"},"portfolio_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Portfolio Url"},"category":{"type":"string","title":"Category","default":"general"},"photo":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Photo"},"cv":{"anyOf":[{"type":"string","contentMediaType":"application/octet-stream"},{"type":"null"}],"title":"Cv"},"work_images":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Work Images","default":[]}},"type":"object","required":["name","email","location","work_description","cares_about","causes","involvement_type","open_to_call"],"title":"Body_club_join_api_club_join_post"},"ConnectionRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"linkedin_url":{"type":"string","title":"Linkedin Url"},"project_description":{"type":"string","title":"Project Description"},"help_sought":{"type":"string","title":"Help Sought"},"nominee_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nominee Name"},"nominee_linkedin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nominee Linkedin"}},"type":"object","required":["email","linkedin_url","project_description","help_sought"],"title":"ConnectionRequest"},"ContactSubmission":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"message":{"type":"string","title":"Message"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"focus_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Focus Area"}},"type":"object","required":["name","email","message"],"title":"ContactSubmission"},"EmailCheckRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"EmailCheckRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"MatchAction":{"properties":{"status":{"type":"string","title":"Status"},"outcome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome"},"outcome_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outcome Note"}},"type":"object","required":["status"],"title":"MatchAction"},"Nomination":{"properties":{"nominee_name":{"type":"string","title":"Nominee Name"},"nominee_reason":{"type":"string","title":"Nominee Reason"},"nominee_linkedin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nominee Linkedin"},"nominator_linkedin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nominator Linkedin"}},"type":"object","required":["nominee_name","nominee_reason"],"title":"Nomination"},"ProposalRequest":{"properties":{"name":{"type":"string","title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"sector":{"type":"string","title":"Sector"},"shape":{"type":"string","title":"Shape"},"detail":{"type":"string","title":"Detail","default":""},"org_type":{"type":"string","title":"Org Type","default":""},"website":{"type":"string","title":"Website","default":""},"problem":{"type":"string","title":"Problem","default":""},"tried":{"type":"string","title":"Tried","default":""},"success_vision":{"type":"string","title":"Success Vision","default":""},"bottleneck":{"type":"string","title":"Bottleneck","default":""},"budget_timeline":{"type":"string","title":"Budget Timeline","default":""}},"type":"object","required":["name","email","sector","shape"],"title":"ProposalRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}