{
  "openapi": "3.1.0",
  "info": {
    "title": "Career FAQs Agent API",
    "version": "1.0.0",
    "description": "Public, unauthenticated REST endpoints for AI agents: career-content search and detail lookup. Rate-limited per IP. The same capabilities are available over MCP (streamable HTTP) at /api/mcp - see /.well-known/mcp/server-card.json.",
    "contact": {
      "email": "info@coursefindergroup.com.au"
    }
  },
  "servers": [
    {
      "url": "https://www.careerfaqs.com.au"
    }
  ],
  "paths": {
    "/api/webmcp/search_career_content": {
      "post": {
        "operationId": "searchCareerContent",
        "summary": "Search career content",
        "description": "Keyword search over Career FAQs career content (career guides, how-to-become outcomes, blog articles, resources). Understands natural language (content type, industry).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "Natural language search, e.g. 'how to become a registered nurse'"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 25,
                    "default": 8
                  },
                  "content_type": {
                    "type": "string",
                    "enum": [
                      "article",
                      "how-to-become",
                      "resource"
                    ]
                  },
                  "industry": {
                    "type": "string",
                    "description": "Soft-boost an industry, e.g. 'Aged Care', 'IT'"
                  }
                },
                "required": [
                  "query"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search results (items with contentId for follow-up calls)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "MCP-style tool result. content[0].text holds the JSON-encoded payload; isError is present on failures.",
                  "properties": {
                    "content": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "const": "text"
                          },
                          "text": {
                            "type": "string",
                            "description": "JSON-encoded result payload"
                          }
                        },
                        "required": [
                          "type",
                          "text"
                        ]
                      }
                    },
                    "isError": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "content"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        }
      }
    },
    "/api/webmcp/get_career_content": {
      "post": {
        "operationId": "getCareerContent",
        "summary": "Get career content",
        "description": "Full details (incl. body text and canonical url) for one career-content item by contentId.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "contentId": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      }
                    ],
                    "description": "The contentId returned by search_career_content"
                  }
                },
                "required": [
                  "contentId"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Career-content item details",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "MCP-style tool result. content[0].text holds the JSON-encoded payload; isError is present on failures.",
                  "properties": {
                    "content": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "const": "text"
                          },
                          "text": {
                            "type": "string",
                            "description": "JSON-encoded result payload"
                          }
                        },
                        "required": [
                          "type",
                          "text"
                        ]
                      }
                    },
                    "isError": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "content"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        }
      }
    }
  },
  "components": {}
}