Hello Brian, thanks for reporting this. We do have some property names $$... in our REST responses which are not part of the schema as you pointed out.
Currently I don't know of a quick workaround. We'll have to work on a solution, which most likely will not be released before the next milestone 2.0.0-M2. Sorry for that! As I see it, there is an intuitive way to resolve this: We do have the content negotiation option 'suppress=true' in the response-content-type "application/json;profile=urn:org.apache.isis/v1;suppress=true". We could use this option to suppress all $$... properties, or - if this breaks compatibility - add a new option e.g. 'suppressAllHidden' which has the desired effect of suppressing all hidden properties int the REST response. Cheers Andi On 2018/08/23 20:57:41, Brian K <[email protected]> wrote: > Hi Johan, > > Thanks for the reply. In using the REST API from a csharp application, I > want to be able to generate a client stub and code to that. This is what > Swagger Codegen is made for. For the Apache Isis REST implementation, I > notice the following: > 1. All the domain object actions are represented by REST operations > that take the object's instanceId as the first argument. This is a string > that for an integer primary key is something like "i_1". I see this in the > REST response as either the property "$$instanceId" or the JSON property > "instanceId" above the "members" property. > 2. This instanceId is not in the Swagger specification generated by > Isis. When I load the specification (from the prototyping menu) into > https://editor.swagger.io/, the response example it creates for the action > does not include the $$instanceId property that is there when I call that > endpoint on the Isis application. This is true for each schema I download > (public, private, private with prototyping). > Therefore, the client generated by codegen is not useable without falling > back to looking directly at the JSON of the REST operation response. > > It may be a good idea to include the instanceId in the generated > specification so that these actions can be called from generated clients. > I could add a read-only property to return the instanceId, but I am hoping > there is a better way. > > Thanks, > Brian > > > > On Wed, Aug 22, 2018 at 10:48 PM Johan Doornenbal <[email protected]> > wrote: > > > Hi Brian, > > The restful objects viewer implemented in Apache Isis and exposed by > > swagger-ui > > implements the restful objects spec 1) > > The basic idea is that you can 'discover' the domain.In the case of simple > > app: > > you can start out with > > curl -X GET --header 'Accept: application/json' --header 'Authorization: > > Basic > > c3ZlbjpwYXNz' > > > > '[YOUR_BASE_URL]/restful/services/simple.SimpleObjectMenu/actions/listAll/invoke' > > That will give you among others the oid's. > > Then update name can be done by > > curl -X PUT --header 'Content-Type: application/json' --header 'Accept: > > application/json' --header 'Authorization: Basic c3ZlbjpwYXNz' -d '{ \ > > "name" : > > { \ "value" : "some new name" \ } \ }' > > > > '[YOUR_BASE_URL]/restful/objects/simple.SimpleObject/0/actions/updateName/invoke' > > > > Grtz Johan > > > > 1) http://isis.apache.org/guides/ugvro/ugvro.html#__ugvro > > > > > > > > > > > > On Wed, Aug 22, 2018 11:15 PM, Brian K [email protected] wrote: > > Hello, > > > > > > > > > > I see by using the Swagger-UI that the REST view is usable by inspecting > > > > the JSON. For instance, I can get an object via the GET url, and then > > > > execute an action on it by looking at the "$$instanceId" member to fill in > > > > the action string argument that is needed for its actions: "objectID". > > > > > > > > > > But, swagger-codegen seems to ignore this attribute. Maybe it's because it > > > > starts with $$ and is not a part of the generated swagger specification. > > > > Using a generated client stub (I tried both "java" and "csharp" > > > > generators), I don't see a way of finding out the objectID string needed to > > > > execute the object's actions. > > > > > > > > > > Has anyone been able to execute actions from a REST client generated by > > > > swagger codegen? For instance, in SimpleApp archetype, can you execute the > > > > UpdateName action of SimpleObject? Is there a basic piece I'm missing? > > > > > > > > > > Thank you, > > > > Brian >
