I would be in favor of option 2. I would not support both to avoid additional complexity. Validation should happen on write, and not read, so anything that isn’t json serializable should not be in the field.
Cheers, Fokko Op vr 29 mei 2020 om 01:58 schreef Kaxil Naik <kaxiln...@gmail.com> > If the only problem is with Java and not any other popular languages, I > would say we go for Option (2). > > If not, supporting both is a good idea. > > Regards, > Kaxil > > On Fri, May 29, 2020 at 12:19 AM QP Hou <q...@scribd.com> wrote: > > > While I understand the difficulty of dealing with nested json without > > predefined schemas, I feel like returning it as a string only delays > > the problem to a later stage since the user will still need to parse > > that string into a strongly typed data structure in order to read the > > values. > > > > I don't have much experience in Java so I can't really comment on > > that. But I can confirm that it's pretty straightforward to deal with > > this in C/C++, Rust and Go. > > > > On Thu, May 28, 2020 at 2:57 PM Ash Berlin-Taylor <a...@apache.org> > wrote: > > > > > > Hi everyone, > > > > > > We're really close to getting the OpenAPI spec merged, just one last > > > question that's come up around how we should handle/represent > > > dagrun.conf to triggerDagRun. > > > > > > Which of the these two do people prefer? > > > > > > > > > POST /api/v1/dags/{dag_id}/dagRuns/{dag_run_id} > > > Content-Type: application/json > > > > > > { > > > "dag_run_id": "manual_2020-05-28T21:42:36Z", > > > "execution_date": "2020-05-28T21:42:36Z", > > > "conf": "{\"key\": \"value\" }" > > > } > > > > > > OR > > > > > > > > > POST /api/v1/dags/{dag_id}/dagRuns/{dag_run_id} > > > Content-Type: application/json > > > > > > { > > > "dag_run_id": "manual_2020-05-28T21:42:36Z", > > > "execution_date": "2020-05-28T21:42:36Z", > > > "conf": {"key": "value"} > > > } > > > > > > i.e. should the schema/type of conf be a (JSON-encoded) string, or an > > object. > > > > > > I favour the later, Kamil the former. His point is that staticly typed > > > languages, and Java in particular, would be hard to represent this. > > > (Please correct me if I've over-simplified or misunderstood your > > > argument Kamil) > > > > > > Mine was that it's easy enough in Go, for example trigger(dagRunId str, > > > executionDate *time.Time, conf interface{})`, and double json encoding > > > is always messy/a pain to drive manually on cURL etc. > > > > > > > > > (Using dagRun.conf is quite rare right now, doubly so via the API, so I > > > don't think we have any precendent to follow.) > > > > > > Or does anyone feel strongly that we should support both, and have this > > > in the python side > > > > > > if conf: > > > if isinstance(conf, dict): > > > run_conf = conf > > > else: > > > run_conf = json.loads(conf) > > > > > > > > > -ash > > >