Oq: Terminal OpenAPI Spec Viewer

83 pointsposted 8 hours ago
by der_gopher

11 Comments

RadiozRadioz

5 hours ago

Nice, I'll find this useful. I reference OpenAPI specs frequently as I practice spec-driven development. The spec is my source of truth for the interface, and I use it to generate both my client and server code. It automates all the request handling boilerplate on both sides, including validation, and provides me a typed interface regardless of which language I'm using. OpenAPI of course limits the types of endpoints you can create, but I find those limits stop you doing things that are strange/surprising. I find that creating APIs that can be expressed nicely in OpenAPI leads to APIs that have a consistent feel with few gotchas and a satisfyingly predictable developer experience.

der_gopher

5 hours ago

100%, also openapi specs are usually huge yaml/json files and it's very hard to navigate them.

barryoneill

4 hours ago

Nice! Just a quick heads up that there's already an 'oq' project

https://blacksmoke16.github.io/oq/ | https://github.com/Blacksmoke16/oq

(as I discovered when I installed oq via homebrew to find myself with a different app)

der_gopher

4 hours ago

Yeah, the name is very short to be unique. I don't want to rename yet, as I am ok if there are other projects with the same name as long as there is no legal trademark or something. But yeah, don't install it from the Homebrew, btw I added binaries to releases page so we can just wget it.

mdaniel

3 hours ago

Two things: folks care about Brew because its update story is nice; otherwise one needs to constantly revisit your /releases (or plug /releases.atom into their RSS reader) in order to know. It also offers very light "I got what I expected" behavior via their use of sha256, which your current setup won't participate in since you're only publishing .md5 anyway

That leads to the second thing which is that you said you "added binaries" but your release artifacts are .tar.gz which means that one now needs to `curl -fSL | tar -xzf - -C /whatever` and deal with whatever interior directory scheme you are using (I didn't check)

I suspect I may be throwing good commentary after bad, but if you did want to participate in Brew distribution, but don't want to go through their stupid PR process, you can retain control over your update schedule by creating a "Brew Tap" and then the consumer would (e.g.) `brew tap plutov/brew && brew install plutov/brew/oq` which also gets away from the naming collision

der_gopher

3 hours ago

I also love Homebrew and use it daily, at the same time I don't want to go through the review process, but tap sounds good, will try it out, maybe goreleaser supports that too?

jamietanna

4 hours ago

Ooh interesting!

I see it notes OpenAPI 3.1 support, but it's using kin-openapi which doesn't yet support OpenAPI - how have you managed that?

(speaking as someone building on top of kin-openapi, as a core maintainer for oapi-codegen)

der_gopher

4 hours ago

Hi Jamie, I've been a big fan of oapi-codegen and your work! I haven't fully tested the 3.1 support yet, but the tool doesn't do much, just list of routes and components, which I believe are similar between 3.0 and 3.1 OAS

oulipo2

6 hours ago

Really cool! would be cool to be able to do the actual call too :)

der_gopher

5 hours ago

I believe it will come to that too.

rtk0

6 hours ago

Love this.