{
  "openapi": "3.1.0",
  "info": {
    "title": "David Caruso public API",
    "version": "1.0.0",
    "description": "Read-only, machine-readable profile, consulting services, keynote topics, FAQs and article index for davidcaruso.com.au, plus two enquiry endpoints that reach a human. The read endpoints are generated statically from site content and need no authentication. Prices are in AUD.",
    "contact": {
      "email": "info@davidcaruso.com.au",
      "url": "https://davidcaruso.com.au/consult"
    }
  },
  "servers": [
    {
      "url": "https://davidcaruso.com.au"
    }
  ],
  "paths": {
    "/api/profile.json": {
      "get": {
        "summary": "Who David Caruso is: bio, credentials, locations, contact, social profiles.",
        "operationId": "getProfile",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/brand.json": {
      "get": {
        "summary": "Brand entity: identity, boilerplate bios, career, awards, voice, visual identity, related entities.",
        "operationId": "getBrand",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/services.json": {
      "get": {
        "summary": "Consulting packages with prices in AUD, service areas, process and how to enquire.",
        "operationId": "getServices",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/speaking.json": {
      "get": {
        "summary": "Keynote topics, fees, expertise, signature ideas, frameworks, formats, audience sizes, regions and how to check availability.",
        "operationId": "getSpeaking",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/faq.json": {
      "get": {
        "summary": "Frequently asked questions with answers drawn from published site content.",
        "operationId": "getFaq",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/articles.json": {
      "get": {
        "summary": "Index of all 41 published articles with titles, excerpts and dates.",
        "operationId": "getArticles",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/speak": {
      "post": {
        "summary": "Submit a speaking enquiry. Reaches David by email; expect a human reply within 24 hours.",
        "operationId": "submitSpeakingEnquiry",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "dc_name",
                  "dc_email"
                ],
                "properties": {
                  "dc_name": {
                    "type": "string",
                    "description": "Contact name"
                  },
                  "dc_email": {
                    "type": "string",
                    "format": "email"
                  },
                  "dc_org": {
                    "type": "string",
                    "description": "Organisation"
                  },
                  "dc_date": {
                    "type": "string",
                    "description": "Event date"
                  },
                  "dc_event_type": {
                    "type": "string",
                    "description": "Conference / Seminar, Corporate Workshop, Association / Chamber Event, Awards Night / Gala, Other"
                  },
                  "dc_topic": {
                    "type": "string",
                    "description": "Keynote topic of interest, see /api/speaking.json"
                  },
                  "dc_audience": {
                    "type": "string",
                    "description": "Expected audience size"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Enquiry accepted and emailed to David",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing required fields"
          },
          "403": {
            "description": "Request origin not allowed"
          },
          "429": {
            "description": "Too many enquiries from this address, try later"
          }
        }
      }
    },
    "/api/consult": {
      "post": {
        "summary": "Submit a consulting enquiry and quote request. Reaches David by email; expect a same-business-day reply.",
        "operationId": "submitConsultingEnquiry",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "your_name",
                  "your_email"
                ],
                "properties": {
                  "your_name": {
                    "type": "string",
                    "description": "Contact name"
                  },
                  "your_email": {
                    "type": "string",
                    "format": "email"
                  },
                  "business": {
                    "type": "string",
                    "description": "Business name"
                  },
                  "website": {
                    "type": "string",
                    "description": "Business website"
                  },
                  "service": {
                    "type": "string",
                    "description": "Area of help wanted, see serviceAreas in /api/services.json"
                  },
                  "engagement": {
                    "type": "string",
                    "description": "Package of interest, see packages in /api/services.json"
                  },
                  "message": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Enquiry accepted and emailed to David",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing required fields"
          },
          "403": {
            "description": "Request origin not allowed"
          },
          "429": {
            "description": "Too many enquiries from this address, try later"
          }
        }
      }
    }
  }
}
