Go based RAML parser


Hey all.
I work for a company named EverythingMe. Up until now we’ve used a homebrew format for describing our API (that predates raml/swagger et al), and is pretty similar - in Python.
We’re considering switching our API to Go. Looking at the description formats, RAML seemed the nicest one.

I haven’t noticed any Go implementations of a parser, so I guess my questions are:

  1. Is there one that I simply haven’t found?
  2. Suppose I want to write one -
    a. Is there a recommended code-based definition of the model beyond the spec that I can use to start? Or a meta schema I can use to generate the parser’s model classes?

b. Is there a canonical “Example RAML” file(s) that includes a complete testable definition I can use to validate my parser?



Ok, the pyraml project has the “entities.py” file which looks to contain what I’m looking for, is this the right direction?


Hi @dvir,

as you already realised, there is no Go parser unfortunately. But if you really want to develop one, I’ll try to get you any help you need :wink:

I come back to you ASAP.



Thanks a lot. I think I’ll try to hack some partial support to begin with and see how it feels.
I guess the best help would be guidance towards extensive examples of APIs to parse.


+1 for go parser


Hi guys + @dvir, I found this today: https://godoc.org/gopkg.in/raml.v0. Is it what you were looking for? Please let me know if that works

On Github: https://github.com/go-raml/raml/tree/v0


This is what I started :slight_smile:
it’s not complete yet but we’ll get there when we actually start using it.


Awesome! :slight_smile: I’ll make sure it appears on the RAML project page!


I developed the project with Dvir. Currently the project only has a basic parser and doesn’t do more in-depth schema validations (like: is a root-level schema name that is referenced in other locations valid? etc), but I plan on adding support for better validations soon.

Then, the plan is to generate server code from it.

Thanks for adding it to the RAML project page!