Regarding the first example with the enums, I'd argue that it's a mistake in the first place to pass int values around in a JSON payload. The ints themselves have no semantic meaning, other than the index that the Go compiler assigned to each const. Whatever applications your service is communicating with will need to imbue that meaning into their codebase. And god forbid any engineer change the ordering of the statuses.
Instead, the literal string value "Open" (or "StatusOpen"), etc, should be sent in the payload. That's an unfortunate downside of the lack of enums within Go; you as an engineer need to manually write and maintain those conversations. But it's still much less error prone.