Recentemente eu precisei gerar uma especificação Swagger a partir de classes persistentes e seriais, então estou publicando meu código (ainda incompleto - você ainda precisa resolver detalhes específicos do aplicativo mas é um começo). Ele está disponível aqui.
Digamos que você tem estas classes:
Você pode gerar esta definição Swagger automaticamente a partir delas:
REST.Test.Person:
type: "object"
properties:
Age:
type: "integer"
DOB:
type: "string"
FavoriteColors:
type: "array"
items:
type: "string"
FavoriteNumbers:
type: "object"
Home:
$ref: "#/definitions/REST.Test.Address"
Name:
type: "string"
Office:
$ref: "#/definitions/REST.Test.Address"
SSN:
type: "string"
Spouse:
$ref: "#/definitions/REST.Test.Person"
REST.Test.Address:
type: "object"
properties:
City:
type: "string"
State:
type: "string"
Street:
type: "string"
Zip:
type: "string"
Método principal:Utils.YAML:GenerateClasses
Teste: do ##class(Utils.YAML).Test()
@Claudio Devecchi
já deu uma olhada?
o que agrega ao seu projeto? é complementar?
@Rochael Ribeiro
já olhei sim. A abordagem é um pouco diferente porque o projeto apiPub automatiza a publicação com base nos métodos e na sua assinatura (parâmetros). Caso estes parâmetros sejam tipos complexos (objeto por exemplo), ele cuida da publicação de todas as suas propriedades e as expõe automaticamente.