Is my understanding right that there is no “init mode” for the JSON API.
What I mean by init mode is a way to start the JSON API in such a way that it will create the right schema on the DB and shuts down after.
I’m aware of the createSchema=true parameter as explained here, but my interpretation of the docs is that the service continues running after the initialization.
The JSON API (and the same applies to the Trigger Service) will exit immediately if you use createSchema=true. So this should already do what you are asking for:
moritz@adjunction ~ [1]> daml json-api --query-store-jdbc-config "driver=org.postgresql.Driver,url=jdbc:postgresql://localhost:5432/db,user=u,password=p,createSchema=true" --ledger-host localhost --ledger-port 6865 --http-port 7500
16:08:14.492 [main] INFO com.daml.http.Main$ - Config(ledgerHost=localhost, ledgerPort=6865, address=127.0.0.1, httpPort=7500, portFile=None, packageReloadInterval=5 seconds, packageMaxInboundMessageSize=None, maxInboundMessageSize=4194304, tlsConfig=TlsConfiguration(false,None,None,None,REQUIRE,false,List()), jdbcConfig=Some(JdbcConfig(driver=org.postgresql.Driver, url=jdbc:postgresql://localhost:5432/db, user=u, createSchema=true)), staticContentConfig=None, allowNonHttps=false, accessTokenFile=None, wsConfig=None)
16:08:14.831 [http-json-ledger-api-akka.actor.default-dispatcher-5] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
16:08:14.960 [main] INFO com.daml.http.Main$ - Creating DB schema...
16:08:15.188 [main] INFO com.daml.http.Main$ - DB schema created. Terminating process...
moritz@adjunction ~>