{
 "openapi": "3.1.0",
 "info": {
  "title": "Freeborn Labs application API",
  "version": "1.0.0",
  "description": "Apply for a Freeborn Labs place. No payment is taken. Only submit for a person who asked you to and who is 18 or older. See https://freebornlabs.com/apply/."
 },
 "servers": [
  {
   "url": "https://freebornlabs.com"
  }
 ],
 "paths": {
  "/api/waitlist": {
   "post": {
    "operationId": "applyForPlace",
    "summary": "Submit an application (no payment)",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "name",
         "email",
         "adult"
        ],
        "properties": {
         "name": {
          "type": "string",
          "maxLength": 120
         },
         "email": {
          "type": "string",
          "format": "email",
          "maxLength": 200
         },
         "adult": {
          "type": "boolean",
          "const": true,
          "description": "The applicant confirms they are 18 or older."
         },
         "wants": {
          "type": "string",
          "maxLength": 200
         },
         "start_when": {
          "type": "string",
          "maxLength": 100
         },
         "heard_from": {
          "type": "string",
          "maxLength": 200
         },
         "industry": {
          "type": "string",
          "maxLength": 100
         },
         "ref": {
          "type": "string",
          "maxLength": 60
         },
         "note": {
          "type": "string",
          "maxLength": 500
         },
         "bid": {
          "type": "number",
          "minimum": 0,
          "maximum": 10000000,
          "description": "Optional non-binding priority bid in US dollars."
         },
         "coaching": {
          "type": "boolean",
          "default": true
         }
        }
       }
      }
     }
    },
    "responses": {
     "201": {
      "description": "Received (also returned for a repeat email)."
     },
     "400": {
      "description": "Invalid or missing field."
     },
     "403": {
      "description": "Origin not allowed."
     },
     "429": {
      "description": "More than 10 applications from this IP today."
     }
    }
   }
  }
 }
}