{"openapi":"3.1.0","info":{"title":"Nemegen API","version":"1.0.0","description":"Generer, filtrer, ranger og domenesjekk originale merkevarenavn. Systemet lover aldri juridisk tilgjengelighet."},"servers":[{"url":"https://nemegen.no"}],"security":[],"paths":{"/api/v1/generate":{"post":{"operationId":"generateNames","summary":"Generer og ranger merkevarenavn synkront (ett kall).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}}},"responses":{"200":{"description":"Rangerte kandidater","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateResponse"}}}},"400":{"description":"Ugyldig forespørsel"},"401":{"description":"Manglende/ugyldig API-nøkkel"}}}},"/api/v1/jobs":{"post":{"operationId":"startJob","summary":"Start en stor asynkron navnekjøring.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}}},"responses":{"202":{"description":"Jobb startet (id + pollUrl)"},"401":{"description":"Manglende/ugyldig API-nøkkel"}}}},"/api/v1/jobs/{id}":{"get":{"operationId":"getJob","summary":"Hent status og kandidater for en jobb.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":500}}],"responses":{"200":{"description":"Jobbstatus og kandidater"},"404":{"description":"Fant ikke jobb"}}}},"/api/v1/domains":{"post":{"operationId":"checkDomains","summary":"Domenesjekk for ett navn (nyansert status).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"tlds":{"type":"array","items":{"type":"string"},"default":["com","ai","no"]}}}}}},"responses":{"200":{"description":"Domeneresultater"},"401":{"description":"Manglende/ugyldig API-nøkkel"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"GenerateRequest":{"type":"object","properties":{"description":{"type":"string","description":"Prosjektbeskrivelse; påvirker de genererte navnene."},"nameType":{"type":"string","enum":["product","company","plugin","technology","platform"]},"styles":{"type":"array","items":{"type":"string","enum":["modern","premium","creative","technological","minimalist","friendly","professional","futuristic","nordic","international"]}},"languages":{"type":"array","items":{"type":"string","enum":["no","sv","da","en"]}},"length":{"type":"object","properties":{"minLetters":{"type":"integer"},"maxLetters":{"type":"integer"},"minSyllables":{"type":"integer"},"maxSyllables":{"type":"integer"}}},"forbiddenWords":{"type":"array","items":{"type":"string"}},"targetCount":{"type":"integer","minimum":100,"maximum":50000,"default":10000},"checkDomains":{"type":"boolean","default":true},"domainCheckLimit":{"type":"integer","minimum":0,"maximum":500},"maxResults":{"type":"integer","minimum":1,"maximum":100,"default":25}}},"GenerateResponse":{"type":"object","properties":{"disclaimer":{"type":"string"},"count":{"type":"integer"},"candidates":{"type":"array","items":{"$ref":"#/components/schemas/Candidate"}}}},"Candidate":{"type":"object","properties":{"name":{"type":"string"},"totalScore":{"type":"integer"},"syllableCount":{"type":["integer","null"]},"pronunciationScore":{"type":"integer"},"originalityScore":{"type":"integer"},"similarityRisk":{"type":"string"},"trademarkRisk":{"type":"string"},"reason":{"type":"string"},"domains":{"type":"object","additionalProperties":{"type":"string","enum":["available","registered","reserved","premium","unknown","rate_limited","error"]}}}}}}}