Currently we mark scalar properties/fields as relevant records, but not embedded properties of page or page list properties. For example - if we have a "Member" or "Customer" data class with properties such as first name, last name, etc - we are unable to set or retrieve those properties from robotics studio. Each of those data fields must be created as scalar properties at the case level. This severely impacts our efforts to create data structures following an Enterprise Class Structure per best practices within Pega Platform. (This appears to be an issue for all external integration via API, not just robotic studio)
Despite, I agree that Robot Studio is not handling this very elegantly. It is not a limitation, it is possible to pass complex objects on both directions. All you need to do is get the JSON object and pass it as String. Using a Data Transform from Platform and JSONStringUtils from Robot Studio to map the request/response data.
Regarding the APIs limitation you found, I'm definitely interested in understanding what is the specific use case you refer to since we can map any data including complex objects from a long time ago in all the Pega APIs.
- Read the attachment file and get the byte stream (Simple read function will provide this).
- Use a property in the case to encode base64 and set the byte stream as string (i.e. FileDataStream). This property must be marked as relevant record for the case.
- In the automation when processing the case data in the robotic activity decode base64 the property content and you could use the byte stream to write to a file or whatever you are required to do with the file.
Please, be conscious of the file size. Since this can be used with medium sized files, I wouldn't use it to transfer large files. You could use a multipart service instead to download the file from the robot.