{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "Hello Tech Chapter API",
    "description" : "Tech Chapter praktikant-udfordring – Nima Salami",
    "version" : "1.0.0"
  },
  "servers" : [ {
    "url" : "http://hello.nimasalami.dk",
    "description" : "Generated server url"
  } ],
  "tags" : [ {
    "name" : "Talent",
    "description" : "Talent API"
  } ],
  "paths" : {
    "/talent" : {
      "get" : {
        "tags" : [ "Talent" ],
        "summary" : "Get a list of talents",
        "operationId" : "getAllTalents",
        "responses" : {
          "200" : {
            "description" : "List of all talents",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Talent"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/talent/{id}" : {
      "get" : {
        "tags" : [ "Talent" ],
        "summary" : "Get a specific talent",
        "operationId" : "getTalentById",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Talent ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Talent found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Talent"
                }
              }
            }
          },
          "404" : {
            "description" : "Talent not found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Talent"
                }
              }
            }
          }
        }
      }
    },
    "/talent/{id}/documents" : {
      "get" : {
        "tags" : [ "Talent" ],
        "summary" : "Get documents for a specific talent",
        "operationId" : "getDocuments",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Talent ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of documents for talent",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Document"
                  }
                }
              }
            }
          },
          "404" : {
            "description" : "Talent not found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Document"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/talent/{id}/documents/{documentId}" : {
      "get" : {
        "tags" : [ "Talent" ],
        "summary" : "Get a specific document for a talent",
        "operationId" : "getDocument",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Talent ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "documentId",
          "in" : "path",
          "description" : "Document ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Document found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Document"
                }
              }
            }
          },
          "404" : {
            "description" : "Talent or document not found",
            "content" : {
              "*/*" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Document"
                }
              }
            }
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "Talent" : {
        "type" : "object",
        "description" : "A talent profile",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid",
            "description" : "Unique identifier"
          },
          "name" : {
            "type" : "string",
            "description" : "Full name"
          },
          "title" : {
            "type" : "string",
            "description" : "Job title"
          },
          "profile_text" : {
            "type" : "string",
            "description" : "Short introduction to the talent"
          },
          "email" : {
            "type" : "string",
            "format" : "email",
            "description" : "Email address"
          },
          "phone" : {
            "type" : "string",
            "description" : "Phone number"
          },
          "city" : {
            "type" : "string",
            "description" : "City"
          },
          "country" : {
            "type" : "string",
            "description" : "Country"
          },
          "github" : {
            "type" : "string",
            "format" : "uri",
            "description" : "GitHub profile URL"
          },
          "linkedin" : {
            "type" : "string",
            "format" : "uri",
            "description" : "LinkedIn profile URL"
          }
        }
      },
      "Document" : {
        "type" : "object",
        "description" : "A document belonging to a talent",
        "properties" : {
          "id" : {
            "type" : "string",
            "format" : "uuid",
            "description" : "Unique identifier"
          },
          "name" : {
            "type" : "string",
            "description" : "Document name"
          },
          "content" : {
            "type" : "string",
            "description" : "Document content"
          }
        }
      }
    }
  }
}