{"openapi":"3.1.0","info":{"title":"Nomeador: API de nomes por sílabas e verificação de domínio","version":"1.0.0","description":"Gera nomes de projeto, empresa e personagem por sílabas e estilo e consulta, nos registros oficiais (RDAP), se o domínio do nome está livre. Sem chave e sem cadastro. Limite por IP: 90 pontos por minuto e 1500 por hora. Os nomes consultados ficam na memória por alguns minutos e não são guardados nem registrados no log.","contact":{"name":"Rodrigo Borges","url":"https://rodrigoborges.dev"}},"servers":[{"url":"https://rodrigoborges.dev"}],"tags":[{"name":"Nomes"},{"name":"Domínios"},{"name":"Informações"}],"paths":{"/api/nomeador":{"get":{"operationId":"index","summary":"Índice da API: limites e endereços","description":"Peso no limite por IP: 1.","tags":["Informações"],"responses":{"200":{"description":"O índice da API.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Limite de pedidos por IP. Veja Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/nomeador/options":{"get":{"operationId":"options","summary":"Tipos, estilos, terminações de domínio, características e limites","description":"Peso no limite por IP: 1.","tags":["Informações"],"responses":{"200":{"description":"Tipos, estilos, terminações e limites.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Limite de pedidos por IP. Veja Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/nomeador/names":{"get":{"operationId":"namesGet","summary":"Gera nomes (parâmetros na query)","description":"Peso no limite por IP: 1 a cada 10 nomes.","tags":["Nomes"],"parameters":[{"name":"kind","in":"query","required":false,"description":"O que está sendo nomeado: projeto, empresa ou personagem.","schema":{"type":"string","enum":["projeto","empresa","personagem"],"default":"empresa"}},{"name":"style","in":"query","required":false,"description":"O estilo das sílabas (GET /options lista os de cada tipo). \"any\" mistura os estilos do tipo.","schema":{"type":"string","enum":["any","tech","moderno","minimal","suave","forte","natural","elegante","corporativo","latino","nordico","japones","futurista","divertido","elfico","anao","orc","sombrio","heroico","medieval","divino","criatura"],"default":"any"}},{"name":"count","in":"query","required":false,"description":"Quantos nomes devolver, de 1 a 50.","schema":{"type":"integer","minimum":1,"maximum":50,"default":24}},{"name":"keywords","in":"query","required":false,"description":"Até 5 palavras para misturar com sílabas inventadas (no GET, separadas por vírgula). Parte dos nomes usa um pedaço delas.","schema":{"type":"array","items":{"type":"string","minLength":2,"maxLength":24},"maxItems":5},"style":"form","explode":false},{"name":"parts","in":"query","required":false,"description":"Até 12 sílabas suas (de 1 a 6 letras) para entrarem nos nomes (no GET, separadas por vírgula ou espaço).","schema":{"type":"array","items":{"type":"string","minLength":1,"maxLength":6},"maxItems":12},"style":"form","explode":false},{"name":"minSyllables","in":"query","required":false,"description":"Mínimo de sílabas, de 1 a 5. Sem valor, vale o do estilo (2 a 3 quando ele não diz nada).","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"maxSyllables","in":"query","required":false,"description":"Máximo de sílabas, de 1 a 5.","schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"minLength","in":"query","required":false,"description":"Mínimo de letras do nome, de 2 a 16. Sem valor, vale o do estilo ou do tipo (de 3 ou 4 letras).","schema":{"type":"integer","minimum":2,"maximum":16}},{"name":"maxLength","in":"query","required":false,"description":"Máximo de letras, de 2 a 16 (9 ou 10 quando ninguém diz nada).","schema":{"type":"integer","minimum":2,"maximum":16}},{"name":"startsWith","in":"query","required":false,"description":"O nome começa assim (até 4 letras).","schema":{"type":"string","maxLength":4}},{"name":"endsWith","in":"query","required":false,"description":"O nome termina assim (até 5 letras).","schema":{"type":"string","maxLength":5}},{"name":"contains","in":"query","required":false,"description":"O nome contém isto (até 6 letras).","schema":{"type":"string","maxLength":6}},{"name":"avoid","in":"query","required":false,"description":"Letras que não podem aparecer (até 10).","schema":{"type":"string","maxLength":10}},{"name":"gender","in":"query","required":false,"description":"Só para personagem: any, fem, masc ou neutral. Escolhe a terminação típica (-a, -ia para feminino; -o, -on, -or para masculino).","schema":{"type":"string","enum":["any","fem","masc","neutral"],"default":"any"}},{"name":"tail","in":"query","required":false,"description":"auto acrescenta uma palavra (Labs, Studio, App…) a projeto e empresa e um sobrenome ao personagem.","schema":{"type":"string","enum":["none","auto"],"default":"none"}},{"name":"safe","in":"query","required":false,"description":"Filtra palavrões e termos que ninguém quer no nome (português, inglês e espanhol). O filtro é curto: não substitui uma pessoa lendo a lista.","schema":{"type":"boolean","default":true}},{"name":"seed","in":"query","required":false,"description":"Semente (até 40 letras, números, ponto, hífen e sublinhado). A mesma semente com os mesmos parâmetros devolve a mesma lista.","schema":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,40}$"}}],"responses":{"200":{"description":"Os nomes.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Names"}}}},"400":{"description":"Pedido inválido (veja `code` e `param`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Corpo grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"414":{"description":"Endereço comprido demais; use POST.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Limite de pedidos por IP. Veja Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"operationId":"namesPost","summary":"Gera nomes (parâmetros em JSON)","description":"Peso no limite por IP: 1 a cada 10 nomes.","tags":["Nomes"],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"kind":{"type":"string","enum":["projeto","empresa","personagem"],"default":"empresa","description":"O que está sendo nomeado: projeto, empresa ou personagem."},"style":{"type":"string","enum":["any","tech","moderno","minimal","suave","forte","natural","elegante","corporativo","latino","nordico","japones","futurista","divertido","elfico","anao","orc","sombrio","heroico","medieval","divino","criatura"],"default":"any","description":"O estilo das sílabas (GET /options lista os de cada tipo). \"any\" mistura os estilos do tipo."},"count":{"type":"integer","minimum":1,"maximum":50,"default":24,"description":"Quantos nomes devolver, de 1 a 50."},"keywords":{"type":"array","items":{"type":"string","minLength":2,"maxLength":24},"maxItems":5,"description":"Até 5 palavras para misturar com sílabas inventadas (no GET, separadas por vírgula). Parte dos nomes usa um pedaço delas."},"parts":{"type":"array","items":{"type":"string","minLength":1,"maxLength":6},"maxItems":12,"description":"Até 12 sílabas suas (de 1 a 6 letras) para entrarem nos nomes (no GET, separadas por vírgula ou espaço)."},"minSyllables":{"type":"integer","minimum":1,"maximum":5,"description":"Mínimo de sílabas, de 1 a 5. Sem valor, vale o do estilo (2 a 3 quando ele não diz nada)."},"maxSyllables":{"type":"integer","minimum":1,"maximum":5,"description":"Máximo de sílabas, de 1 a 5."},"minLength":{"type":"integer","minimum":2,"maximum":16,"description":"Mínimo de letras do nome, de 2 a 16. Sem valor, vale o do estilo ou do tipo (de 3 ou 4 letras)."},"maxLength":{"type":"integer","minimum":2,"maximum":16,"description":"Máximo de letras, de 2 a 16 (9 ou 10 quando ninguém diz nada)."},"startsWith":{"type":"string","maxLength":4,"description":"O nome começa assim (até 4 letras)."},"endsWith":{"type":"string","maxLength":5,"description":"O nome termina assim (até 5 letras)."},"contains":{"type":"string","maxLength":6,"description":"O nome contém isto (até 6 letras)."},"avoid":{"type":"string","maxLength":10,"description":"Letras que não podem aparecer (até 10)."},"gender":{"type":"string","enum":["any","fem","masc","neutral"],"default":"any","description":"Só para personagem: any, fem, masc ou neutral. Escolhe a terminação típica (-a, -ia para feminino; -o, -on, -or para masculino)."},"tail":{"type":"string","enum":["none","auto"],"default":"none","description":"auto acrescenta uma palavra (Labs, Studio, App…) a projeto e empresa e um sobrenome ao personagem."},"safe":{"type":"boolean","default":true,"description":"Filtra palavrões e termos que ninguém quer no nome (português, inglês e espanhol). O filtro é curto: não substitui uma pessoa lendo a lista."},"seed":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,40}$","description":"Semente (até 40 letras, números, ponto, hífen e sublinhado). A mesma semente com os mesmos parâmetros devolve a mesma lista."}}}}}},"responses":{"200":{"description":"Os nomes.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Names"}}}},"400":{"description":"Pedido inválido (veja `code` e `param`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Corpo grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Limite de pedidos por IP. Veja Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/nomeador/domains":{"get":{"operationId":"domainsGet","summary":"Consulta se os domínios estão livres (parâmetros na query)","description":"Peso no limite por IP: 1 por domínio consultado.","tags":["Domínios"],"parameters":[{"name":"names","in":"query","required":true,"description":"O nome a consultar, sem a terminação (no GET, separados por vírgula): de 1 a 12. Acentos e espaços são limpos (\"Café Bom\" vira cafebom).","schema":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":12},"style":"form","explode":false},{"name":"tlds","in":"query","required":false,"description":"As terminações a consultar, de 1 a 8. Valem: com, com.br, net, org, dev, app, io, ai, co, me, xyz, tech, online, site, store, shop, cloud, info, biz.","schema":{"type":"array","items":{"type":"string","enum":["com","com.br","net","org","dev","app","io","ai","co","me","xyz","tech","online","site","store","shop","cloud","info","biz"]},"maxItems":8},"style":"form","explode":false},{"name":"variants","in":"query","required":false,"description":"Com um só nome, acrescenta variações (getnome, usenome, trynome, mynome, nomeapp, nomehq, nomehub, nomelab).","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"O resultado de cada domínio.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Domains"}}}},"400":{"description":"Pedido inválido (veja `code` e `param`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Corpo grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Limite de pedidos por IP. Veja Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Consultas demais ao mesmo tempo. Tente de novo em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"post":{"operationId":"domainsPost","summary":"Consulta se os domínios estão livres (parâmetros em JSON)","description":"Peso no limite por IP: 1 por domínio consultado.","tags":["Domínios"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["names"],"properties":{"names":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":12,"description":"O nome a consultar, sem a terminação (no GET, separados por vírgula): de 1 a 12. Acentos e espaços são limpos (\"Café Bom\" vira cafebom)."},"tlds":{"type":"array","items":{"type":"string","enum":["com","com.br","net","org","dev","app","io","ai","co","me","xyz","tech","online","site","store","shop","cloud","info","biz"]},"maxItems":8,"description":"As terminações a consultar, de 1 a 8. Valem: com, com.br, net, org, dev, app, io, ai, co, me, xyz, tech, online, site, store, shop, cloud, info, biz."},"variants":{"type":"boolean","default":false,"description":"Com um só nome, acrescenta variações (getnome, usenome, trynome, mynome, nomeapp, nomehq, nomehub, nomelab)."}}}}}},"responses":{"200":{"description":"O resultado de cada domínio.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Domains"}}}},"400":{"description":"Pedido inválido (veja `code` e `param`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"413":{"description":"Corpo grande demais.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Limite de pedidos por IP. Veja Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"503":{"description":"Consultas demais ao mesmo tempo. Tente de novo em instantes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/nomeador/openapi.json":{"get":{"operationId":"openapi","summary":"Especificação OpenAPI 3.1","description":"Peso no limite por IP: 1.","tags":["Informações"],"responses":{"200":{"description":"Este documento.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Limite de pedidos por IP. Veja Retry-After.","headers":{"Retry-After":{"schema":{"type":"integer"}},"RateLimit-Limit":{"$ref":"#/components/headers/RateLimit-Limit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimit-Remaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimit-Reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"headers":{"RateLimit-Limit":{"description":"Pontos da janela mais apertada.","schema":{"type":"integer"}},"RateLimit-Remaining":{"description":"Pontos que ainda cabem nessa janela.","schema":{"type":"integer"}},"RateLimit-Reset":{"description":"Segundos até a janela recomeçar (pior caso).","schema":{"type":"integer"}}},"schemas":{"Problem":{"type":"object","required":["error","code"],"properties":{"error":{"type":"string"},"code":{"type":"string","enum":["invalid_param","invalid_range","missing_names","too_many","bad_request","too_large","uri_too_long","not_found","method_not_allowed","rate_limited","busy"]},"param":{"type":"string"},"retryAfter":{"type":"integer"}}},"Names":{"type":"object","properties":{"seed":{"type":"string"},"engine":{"type":"integer"},"requested":{"type":"integer"},"exhausted":{"type":"boolean"},"names":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"base":{"type":"string"},"family":{"type":"string"},"syllables":{"type":"array","items":{"type":"string"}},"length":{"type":"integer"},"score":{"type":"integer","minimum":1,"maximum":99},"traits":{"type":"array","items":{"type":"string","enum":["short","easy","memorable","striking"]}},"style":{"type":"string","enum":["tech","moderno","minimal","suave","forte","natural","elegante","corporativo","latino","nordico","japones","futurista","divertido","elfico","anao","orc","sombrio","heroico","medieval","divino","criatura"]},"uses":{"type":"array","items":{"type":"string"}},"domain":{"type":"string"}}}}}},"Domains":{"type":"object","properties":{"total":{"type":"integer"},"summary":{"type":"object","properties":{"available":{"type":"integer"},"likely_available":{"type":"integer"},"taken":{"type":"integer"},"unknown":{"type":"integer"}}},"results":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"tld":{"type":"string","enum":["com","com.br","net","org","dev","app","io","ai","co","me","xyz","tech","online","site","store","shop","cloud","info","biz"]},"domain":{"type":"string"},"status":{"type":"string","enum":["available","likely_available","taken","unknown"]},"source":{"type":"string","enum":["rdap","dns","none"]},"registeredAt":{"type":"string","format":"date"},"expiresAt":{"type":"string","format":"date"},"registrar":{"type":"string"},"links":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"url":{"type":"string","format":"uri"}}}},"cached":{"type":"boolean"}}}}}}}}}