Thank you, @Yuri Marx @Robert Cemper ! Works for me as well - my issue was that JSON.Adapter is case sensitive. if payload comes as:

{  "strprop": "string",   "BoolProp": true

error fires (very unreadable). I thought that reason is the boolean value, but turned out it is property naming issue - should 100% match either name in a class description, or special JSON property name clause.

This is how our ^%REST service is organized, that consumes OpenAPI spec (unfortunately not the latest one, but still workable 2.0) and generates package.spec.cls with map , package.disp.cls with dispatch and params handling and package.impl.cls with business logic implementation stubs. 

But what ^%REST doesn't provide - it doesn't generate unit-tests to make sure that all the impl.cls methods and dispatch methods work as expected. @David.Hockenbroch's article here is very focused exactly on this gap, thank you, Dave.

Wow. Thanks @Vitaliy Serdtsev !

This is impressive. 

So if I understand properly, LOAD DATA guesses somehow that id is the idkey and primarykey here?

&sql(LOAD DATA FROM FILE 'C:\data\companies.csv'
  INTO dc_onetomany.companies(id,name,industry,description,website)
  USING {"from":{"file":{"header":true}}})

if AllowIdentityInsert =1?
 

Thanks, @Dan Pasco! My task is to understand how can I better deal in IRIS if I need to export data into csv that contains records that reference IDs.  So I be able to import this data back into IRIS (same or another) preserving all the existing linkages.

I posted an example app illustrating the task.

What I came up with so far is:

introducing my own index as IDKEY and PrimaryKey - that works well for importing data from csv containing IDs.

But if when I’m introducing new records then with ObjectScript it wants me to create new IDs. This is where I have questions - how do I do it in the best way. You say I can try %Counter instead of %BigInt?