REST v2 to upload report unit - any JSON example for inputControls ?

0

Hi, 

We are trying to publish a report on JasperServer using the REST v2 service. We tried for a long time with XML ressource descriptor and found the following wiki article:

http://community.jaspersoft.com/wiki/how-use-rest-v2-upload-report-unit-...

With this method we were able to publish a report unit with a single jrxml, a report unit with associated pictures as fileRessources but we are stuck in the case of declaring inputControls.

We are using JasperServer v6.2.1.

 

Here is the POST performed : 

{
  "label":"REPORT NAME",
  "dataSource" : {
    "dataSourceReference" : {
      "uri" : "/DataSources/DATASOURCE NAME"
    }
  },
 
  "jrxml" : {
    "jrxmlFile" : {
      "type":"jrxml",
      "label": "mainReport",
      "content" : "BASE64 CONTENT"
    }
  },
  "resources" : {
  "resource" : [
{ "name" : "logo.png",
 "file" : {
  "fileResource" : {
  "label" : "logo.png",
"type" : "img",
"content" : "BASE64 CONTENT"
}
 }
}
 
]
  
  },
  "inputControls": [
        {
            "inputControl": {
"id": "object_id",
"type": "02",
"label": "object_id",
"mandatory": false,
"readOnly": false,
"visible": true,
"masterDependencies": [],
"slaveDependencies": [],
"dataType": {
"label": "typeTEXT",
"description" : "description",
"type": "text",
"strictMax": false,
"strictMin": false
}
},
        }
    ]
}

The response from the serveur is : 

{
"message": "Could not resolve type id 'label' into a subtype of [simple type, class com.jaspersoft.jasperserver.dto.resources.ClientReferenceableDataType]\n at [Source: org.apache.catalina.connector.CoyoteInputStream@f0b2ea8; line: 43, column: 6] (through reference chain: com.jaspersoft.jasperserver.dto.resources.ClientReportUnit[\"inputControls\"]->com.jaspersoft.jasperserver.dto.resources.ClientInputControl[\"dataType\"])",
"errorCode": "illegal.parameter.value.error"
}
 
Indicating that there is a issue in the dataType dictionnary. I couldn't found any working indications in the documentations.
 
Could someone please indicate us the correct data structure and informations that are expected in the inputControl part ?
anaxim's picture
2
Joined: Jul 18 2015 - 12:52am
Last seen: 1 month 4 weeks ago

Hello Anaxim, we are also working with JasperReports, and we found the same problem as you. Have you found any solution to this? Thanks.

alvarez.daniel - 2 years 2 months ago

Good morning, do either of you have an update on this topic?
I figured I'd try the channels first before opening up a support ticket on the same thing.

jverkerk - 2 years 4 weeks ago

I opened up a ticket with support for this, and their answer was this:
"I will look to see if we have any example. Unfortunately, we do not have any formal documentation for this
as this somewhat lies out of the scope of support. I will update you with my findings."

jverkerk - 2 years 3 weeks ago

3 Answers:

0

Hello,

An example :

Http POST

URI : http://localhost:8080/jasperserver/rest_v2/resources/Workshop/

Headers :

 - Content-Type : application/repository.reportUnit+json

 - Authorization : ********

 - X-REMOTE-DOMAIN  : 1 (if Csrf enable)

Body :

{
     "label": "listeBts-UploadRest",
     "dataSource": {
        "dataSourceReference": {
            "uri": "/datasources/reference_requisition"
        }
    },
    "inputControls": [
        {
            "inputControlReference": {
                "uri": "/Workshop/InputControl/ParameterCommune"
            }
        }
    ],
    "alwaysPromptControls": true,
    "controlsLayout": "popupScreen",
    "resources": {
        "resource": [
            {
                "name": "logo_opt.jpg",
                "file": {
                    "fileReference": {
                        "uri": "/Workshop/images/logo_opt.png"
                    }
                }
            }
        ]
    },
     "jrxml": {
       "jrxmlFile": {
         "label": "MyJRXML",
         "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhLS0gQ3JlYXRlZCB3aXRoIEphc3BlcnNvZnQgU3R1ZGlvIHZlcnNpb24gNi40LjMuZmluYWwgdXNpbmcgSmFzcGVyUmVwb3J0cyBMaWJyYXJ5IHZlcnNpb24gNi40LjMgIC0tPg0KPGphc3BlclJlcG9ydCB4bWxucz0iaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2phc3BlcnJlcG9ydHMiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L2phc3BlcnJlcG9ydHMgaHR0cDovL2phc3BlcnJlcG9ydHMuc291cmNlZm9yZ2UubmV0L3hzZC9qYXNwZXJyZXBvcnQueHNkIiBuYW1lPSJMaXN0ZSBkZXMgQlRTIiBwYWdlV2lkdGg9Ijg0MiIgcGFnZUhlaWdodD0iNTk1IiBvcmllbnRhdGlvbj0iTGFuZHNjYXBlIiB3aGVuTm9EYXRhVHlwZT0iQmxhbmtQYWdlIiBjb2x1bW5XaWR0aD0iODAyIiBsZWZ0TWFyZ2luPSIyMCIgcmlnaHRNYXJnaW49IjIwIiB0b3BNYXJnaW49IjIwIiBib3R0b21NYXJnaW49IjIwIiB3aGVuUmVzb3VyY2VNaXNzaW5nVHlwZT0iS2V5IiBpc0lnbm9yZVBhZ2luYXRpb249InRydWUiIHV1aWQ9IjdhNWM5YjQ5LTlkYzUtNDIyYS1hYzY5LWU5MmNmNjFlZjUzMCI+DQoJPHByb3BlcnR5IG5hbWU9ImNvbS5qYXNwZXJzb2Z0LnN0dWRpby5kYXRhLnNxbC50YWJsZXMiIHZhbHVlPSIiLz4NCgk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLmRhdGEuZGVmYXVsdGRhdGFhZGFwdGVyIiB2YWx1ZT0icmVxdWlzaXRpb24tcmVmZXJlbmNlIi8+DQoJPHByb3BlcnR5IG5hbWU9ImlyZXBvcnQuamFzcGVyc2VydmVyLnVybCIgdmFsdWU9Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9qYXNwZXJzZXJ2ZXIvIi8+DQoJPHByb3BlcnR5IG5hbWU9ImlyZXBvcnQuamFzcGVyc2VydmVyLnVzZXIiIHZhbHVlPSJqYXNwZXJhZG1pbiIvPg0KCTxwcm9wZXJ0eSBuYW1lPSJpcmVwb3J0Lmphc3BlcnNlcnZlci5yZXBvcnQucmVzb3VyY2UiIHZhbHVlPSIvV29ya3Nob3AvcG9jX2J0c19maWxlcy9tYWluX2pyeG1sIi8+DQoJPHByb3BlcnR5IG5hbWU9ImlyZXBvcnQuamFzcGVyc2VydmVyLnJlcG9ydFVuaXQiIHZhbHVlPSIvV29ya3Nob3AvcG9jX2J0cyIvPg0KCTxzdHlsZSBuYW1lPSJUaXRsZSIgZm9yZWNvbG9yPSIjRkZGRkZGIiBmb250TmFtZT0iVGltZXMgTmV3IFJvbWFuIiBmb250U2l6ZT0iNTAiIGlzQm9sZD0iZmFsc2UiLz4NCgk8c3R5bGUgbmFtZT0iU3ViVGl0bGUiIGZvcmVjb2xvcj0iI0NDQ0NDQyIgZm9udE5hbWU9IlRpbWVzIE5ldyBSb21hbiIgZm9udFNpemU9IjE4IiBpc0JvbGQ9ImZhbHNlIi8+DQoJPHN0eWxlIG5hbWU9IkNvbHVtbiBoZWFkZXIiIGZvcmVjb2xvcj0iIzY2NjY2NiIgZm9udE5hbWU9IlRpbWVzIE5ldyBSb21hbiIgZm9udFNpemU9IjE0IiBpc0JvbGQ9InRydWUiLz4NCgk8c3R5bGUgbmFtZT0iRGV0YWlsIiBtb2RlPSJUcmFuc3BhcmVudCIgZm9udE5hbWU9IlRpbWVzIE5ldyBSb21hbiIvPg0KCTxzdHlsZSBuYW1lPSJSb3ciIG1vZGU9IlRyYW5zcGFyZW50IiBmb250TmFtZT0iVGltZXMgTmV3IFJvbWFuIiBwZGZGb250TmFtZT0iVGltZXMtUm9tYW4iPg0KCQk8Y29uZGl0aW9uYWxTdHlsZT4NCgkJCTxjb25kaXRpb25FeHByZXNzaW9uPjwhW0NEQVRBWyRWe1JFUE9SVF9DT1VOVH0lMiA9PSAwXV0+PC9jb25kaXRpb25FeHByZXNzaW9uPg0KCQkJPHN0eWxlIG1vZGU9Ik9wYXF1ZSIgYmFja2NvbG9yPSIjRjBFRkVGIi8+DQoJCTwvY29uZGl0aW9uYWxTdHlsZT4NCgk8L3N0eWxlPg0KCTxwYXJhbWV0ZXIgbmFtZT0iUGFyYW1ldGVyQ29tbXVuZSIgY2xhc3M9ImphdmEudXRpbC5Db2xsZWN0aW9uIj4NCgkJPHBhcmFtZXRlckRlc2NyaXB0aW9uPjwhW0NEQVRBW0xpc3RlIGRlcyBjb21tdW5lc11dPjwvcGFyYW1ldGVyRGVzY3JpcHRpb24+DQoJPC9wYXJhbWV0ZXI+DQoJPHF1ZXJ5U3RyaW5nIGxhbmd1YWdlPSJTUUwiPg0KCQk8IVtDREFUQVtzZWxlY3QgKiBmcm9tIGJ0cyB3aGVyZSAkWHtJTiwgQ09NTVVORSwgUGFyYW1ldGVyQ29tbXVuZX1dXT4NCgk8L3F1ZXJ5U3RyaW5nPg0KCTxmaWVsZCBuYW1lPSJjb2RlX2J0c19tb2JpbGUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIj4NCgkJPHByb3BlcnR5IG5hbWU9ImNvbS5qYXNwZXJzb2Z0LnN0dWRpby5maWVsZC5sYWJlbCIgdmFsdWU9ImNvZGVfYnRzX21vYmlsZSIvPg0KCTwvZmllbGQ+DQoJPGZpZWxkIG5hbWU9ImNvZGVfYnRzXzNnIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyI+DQoJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uZmllbGQubGFiZWwiIHZhbHVlPSJjb2RlX2J0c18zZyIvPg0KCTwvZmllbGQ+DQoJPGZpZWxkIG5hbWU9ImNvbW11bmUiIGNsYXNzPSJqYXZhLmxhbmcuU3RyaW5nIj4NCgkJPHByb3BlcnR5IG5hbWU9ImNvbS5qYXNwZXJzb2Z0LnN0dWRpby5maWVsZC5sYWJlbCIgdmFsdWU9ImNvbW11bmUiLz4NCgk8L2ZpZWxkPg0KCTxmaWVsZCBuYW1lPSJkYXRlX2FwcGFyaXRpb25fZmx1eCIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciPg0KCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLmZpZWxkLmxhYmVsIiB2YWx1ZT0iZGF0ZV9hcHBhcml0aW9uX2ZsdXgiLz4NCgk8L2ZpZWxkPg0KCTxmaWVsZCBuYW1lPSJkYXRlX29ic29sZXNjZW5jZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciPg0KCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLmZpZWxkLmxhYmVsIiB2YWx1ZT0iZGF0ZV9vYnNvbGVzY2VuY2UiLz4NCgk8L2ZpZWxkPg0KCTxmaWVsZCBuYW1lPSJkZXJuaWVyX21vaXNfZGV0ZWN0aW9uIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyI+DQoJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uZmllbGQubGFiZWwiIHZhbHVlPSJkZXJuaWVyX21vaXNfZGV0ZWN0aW9uIi8+DQoJPC9maWVsZD4NCgk8ZmllbGQgbmFtZT0ibm9tIiBjbGFzcz0iamF2YS5sYW5nLlN0cmluZyI+DQoJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uZmllbGQubGFiZWwiIHZhbHVlPSJub20iLz4NCgk8L2ZpZWxkPg0KCTxmaWVsZCBuYW1lPSJwcm92aW5jZSIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciPg0KCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLmZpZWxkLmxhYmVsIiB2YWx1ZT0icHJvdmluY2UiLz4NCgk8L2ZpZWxkPg0KCTxmaWVsZCBuYW1lPSJsaXN0ZV9lY3JhbiIgY2xhc3M9ImphdmEubGFuZy5TdHJpbmciPg0KCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLmZpZWxkLmxhYmVsIiB2YWx1ZT0ibGlzdGVfZWNyYW4iLz4NCgk8L2ZpZWxkPg0KCTxiYWNrZ3JvdW5kPg0KCQk8YmFuZCBzcGxpdFR5cGU9IlN0cmV0Y2giLz4NCgk8L2JhY2tncm91bmQ+DQoJPHRpdGxlPg0KCQk8YmFuZCBoZWlnaHQ9IjEwMiIgc3BsaXRUeXBlPSJTdHJldGNoIj4NCgkJCTxmcmFtZT4NCgkJCQk8cmVwb3J0RWxlbWVudCBtb2RlPSJPcGFxdWUiIHg9IjAiIHk9IjAiIHdpZHRoPSI3MjEiIGhlaWdodD0iNjYiIGJhY2tjb2xvcj0iIzAwMDAwMCIgdXVpZD0iZDhkOWU2NDQtM2EzMi00OTFkLTk3Y2ItYTI3N2FmZjE3MTMzIi8+DQoJCQkJPHN0YXRpY1RleHQ+DQoJCQkJCTxyZXBvcnRFbGVtZW50IHN0eWxlPSJUaXRsZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjM3MCIgaGVpZ2h0PSI2NiIgdXVpZD0iMjdkOGY2ZWUtZjBhOS00NGY2LWExNjAtMTc2M2MzYjAwZjMwIi8+DQoJCQkJCTxib3ggdG9wUGFkZGluZz0iNCIgbGVmdFBhZGRpbmc9IjQiIGJvdHRvbVBhZGRpbmc9IjQiIHJpZ2h0UGFkZGluZz0iNCIvPg0KCQkJCQk8dGV4dEVsZW1lbnQgdmVydGljYWxBbGlnbm1lbnQ9IkJvdHRvbSI+DQoJCQkJCQk8Zm9udCBpc0JvbGQ9ImZhbHNlIi8+DQoJCQkJCTwvdGV4dEVsZW1lbnQ+DQoJCQkJCTx0ZXh0PjwhW0NEQVRBW0xpc3RlIGRlcyBCVFNdXT48L3RleHQ+DQoJCQkJPC9zdGF0aWNUZXh0Pg0KCQkJCTxzdGF0aWNUZXh0Pg0KCQkJCQk8cmVwb3J0RWxlbWVudCBzdHlsZT0iU3ViVGl0bGUiIHg9IjM3MCIgeT0iMzciIHdpZHRoPSIzMTYiIGhlaWdodD0iMjkiIHV1aWQ9ImNmYTIxMzM0LTA2MzQtNDYwNS05ZWE3LWFjYTQ5ODFmNjdlNCIvPg0KCQkJCQk8dGV4dEVsZW1lbnQgdGV4dEFsaWdubWVudD0iUmlnaHQiPg0KCQkJCQkJPGZvbnQgc2l6ZT0iMjIiIGlzQm9sZD0iZmFsc2UiLz4NCgkJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQkJPHRleHQ+PCFbQ0RBVEFbXV0+PC90ZXh0Pg0KCQkJCTwvc3RhdGljVGV4dD4NCgkJCTwvZnJhbWU+DQoJCQk8ZnJhbWU+DQoJCQkJPHJlcG9ydEVsZW1lbnQgbW9kZT0iT3BhcXVlIiB4PSIwIiB5PSI3MCIgd2lkdGg9IjcyMSIgaGVpZ2h0PSIzMiIgZm9yZWNvbG9yPSIjMDAwMDAwIiBiYWNrY29sb3I9IiNDQzAwMDAiIHV1aWQ9ImIwYzg5NWY2LTZkYmQtNDc3ZC05ODU4LTlhZDY2YWYwODdlMSIvPg0KCQkJCTx0ZXh0RmllbGQgcGF0dGVybj0iRUVFRUUgZGQgTU1NTU0geXl5eSI+DQoJCQkJCTxyZXBvcnRFbGVtZW50IHg9IjU1MyIgeT0iMTIiIHdpZHRoPSIxNDQiIGhlaWdodD0iMjAiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgdXVpZD0iYTMzZmNlM2ItMjBjMS00Njk2LTg3M2EtZmUxMzRkMWU3ZDg4Ii8+DQoJCQkJCTx0ZXh0RWxlbWVudCB0ZXh0QWxpZ25tZW50PSJSaWdodCI+DQoJCQkJCQk8Zm9udCBzaXplPSIxMiIvPg0KCQkJCQk8L3RleHRFbGVtZW50Pg0KCQkJCQk8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVtuZXcgamF2YS51dGlsLkRhdGUoKV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCgkJCQk8L3RleHRGaWVsZD4NCgkJCTwvZnJhbWU+DQoJCQk8aW1hZ2U+DQoJCQkJPHJlcG9ydEVsZW1lbnQgeD0iNzI1IiB5PSIwIiB3aWR0aD0iODUiIGhlaWdodD0iODIiIHV1aWQ9ImRjNTlmM2QzLWNhMGEtNDUzNy05MTNkLTBjZDJhMTI2ZjdmMCIvPg0KCQkJCTxpbWFnZUV4cHJlc3Npb24+PCFbQ0RBVEFbInJlcG86bG9nb19vcHQuanBnIl1dPjwvaW1hZ2VFeHByZXNzaW9uPg0KCQkJPC9pbWFnZT4NCgkJPC9iYW5kPg0KCTwvdGl0bGU+DQoJPHBhZ2VIZWFkZXI+DQoJCTxiYW5kIHNwbGl0VHlwZT0iU3RyZXRjaCIvPg0KCTwvcGFnZUhlYWRlcj4NCgk8Y29sdW1uSGVhZGVyPg0KCQk8YmFuZCBoZWlnaHQ9IjE4IiBzcGxpdFR5cGU9IlN0cmV0Y2giPg0KCQkJPHByb3BlcnR5IG5hbWU9ImNvbS5qYXNwZXJzb2Z0LnN0dWRpby5sYXlvdXQiIHZhbHVlPSJjb20uamFzcGVyc29mdC5zdHVkaW8uZWRpdG9yLmxheW91dC5Ib3Jpem9udGFsUm93TGF5b3V0Ii8+DQoJCQk8c3RhdGljVGV4dD4NCgkJCQk8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iMCIgeT0iMCIgd2lkdGg9IjExOCIgaGVpZ2h0PSIxOCIgZm9yZWNvbG9yPSIjMDAwMDAwIiB1dWlkPSIzNWVhNjFlMi1lZDQ2LTQ3ZTktYTFlNi1jMTg2YmJiMWY3ZTciPg0KCQkJCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLnNwcmVhZHNoZWV0LmNvbm5lY3Rpb25JRCIgdmFsdWU9ImQzODZlNGRkLTU0NmItNDA3My1iMjBiLTk3NDJmYThjYWM3YyIvPg0KCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQk8dGV4dEVsZW1lbnQ+DQoJCQkJCTxmb250IGlzQm9sZD0idHJ1ZSIvPg0KCQkJCTwvdGV4dEVsZW1lbnQ+DQoJCQkJPHRleHQ+PCFbQ0RBVEFbY29kZV9idHNfbW9iaWxlXV0+PC90ZXh0Pg0KCQkJPC9zdGF0aWNUZXh0Pg0KCQkJPHN0YXRpY1RleHQ+DQoJCQkJPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkNvbHVtbiBoZWFkZXIiIHg9IjExOCIgeT0iMCIgd2lkdGg9IjExNCIgaGVpZ2h0PSIxOCIgZm9yZWNvbG9yPSIjMDAwMDAwIiB1dWlkPSIyNTkyNWI3YS01ZGM3LTRhODEtYWIxYy04YTk4MTQzZjc2YmYiPg0KCQkJCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLnNwcmVhZHNoZWV0LmNvbm5lY3Rpb25JRCIgdmFsdWU9ImFlYmRlYmY3LWIxN2EtNGZmZS05ZDJhLWNhMzJjY2U4MWQ2YSIvPg0KCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQk8dGV4dEVsZW1lbnQ+DQoJCQkJCTxmb250IGlzQm9sZD0idHJ1ZSIvPg0KCQkJCTwvdGV4dEVsZW1lbnQ+DQoJCQkJPHRleHQ+PCFbQ0RBVEFbY29kZV9idHNfM2ddXT48L3RleHQ+DQoJCQk8L3N0YXRpY1RleHQ+DQoJCQk8c3RhdGljVGV4dD4NCgkJCQk8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iMjMyIiB5PSIwIiB3aWR0aD0iMTE0IiBoZWlnaHQ9IjE4IiBmb3JlY29sb3I9IiMwMDAwMDAiIHV1aWQ9ImY0ZmFmZTU0LTY1ZjAtNDgzOC1iZDMwLTVkZDkzM2I4MTI2OSI+DQoJCQkJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uc3ByZWFkc2hlZXQuY29ubmVjdGlvbklEIiB2YWx1ZT0iZjE3OGQ3YjItMDlmMy00MzhiLWE0OWEtZjM4ZTllNzBjNmU1Ii8+DQoJCQkJPC9yZXBvcnRFbGVtZW50Pg0KCQkJCTx0ZXh0RWxlbWVudD4NCgkJCQkJPGZvbnQgaXNCb2xkPSJ0cnVlIi8+DQoJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQk8dGV4dD48IVtDREFUQVtjb21tdW5lXV0+PC90ZXh0Pg0KCQkJPC9zdGF0aWNUZXh0Pg0KCQkJPHN0YXRpY1RleHQ+DQoJCQkJPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkNvbHVtbiBoZWFkZXIiIHg9IjM0NiIgeT0iMCIgd2lkdGg9IjExNCIgaGVpZ2h0PSIxOCIgZm9yZWNvbG9yPSIjMDAwMDAwIiB1dWlkPSJkOGQ3ZGE0OS1hMzlhLTQzZWEtYTVmMC1mYTc1ZDhmM2QyNzIiPg0KCQkJCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLnNwcmVhZHNoZWV0LmNvbm5lY3Rpb25JRCIgdmFsdWU9ImU4ZWQ2NGYyLWViMjktNGE5Yi05ZDE0LTZhZTZmNTdhOGMwOSIvPg0KCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQk8dGV4dEVsZW1lbnQ+DQoJCQkJCTxmb250IGlzQm9sZD0idHJ1ZSIvPg0KCQkJCTwvdGV4dEVsZW1lbnQ+DQoJCQkJPHRleHQ+PCFbQ0RBVEFbZGF0ZV9hcHBhcml0aW9uX2ZsdXhdXT48L3RleHQ+DQoJCQk8L3N0YXRpY1RleHQ+DQoJCQk8c3RhdGljVGV4dD4NCgkJCQk8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iNDYwIiB5PSIwIiB3aWR0aD0iMTE0IiBoZWlnaHQ9IjE4IiBmb3JlY29sb3I9IiMwMDAwMDAiIHV1aWQ9IjBiZGQ2ODZjLWFiZjctNDZiNi04MGRjLTcyNTMyNDM3NzNhYiI+DQoJCQkJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uc3ByZWFkc2hlZXQuY29ubmVjdGlvbklEIiB2YWx1ZT0iMGI4NWYyMjgtZDY1My00ZjQyLWFmYTMtMjIyNGVmOTkwYzk2Ii8+DQoJCQkJPC9yZXBvcnRFbGVtZW50Pg0KCQkJCTx0ZXh0RWxlbWVudD4NCgkJCQkJPGZvbnQgaXNCb2xkPSJ0cnVlIi8+DQoJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQk8dGV4dD48IVtDREFUQVtkZXJuaWVyX21vaXNfZGV0ZWN0aW9uXV0+PC90ZXh0Pg0KCQkJPC9zdGF0aWNUZXh0Pg0KCQkJPHN0YXRpY1RleHQ+DQoJCQkJPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkNvbHVtbiBoZWFkZXIiIHg9IjU3NCIgeT0iMCIgd2lkdGg9IjExNCIgaGVpZ2h0PSIxOCIgZm9yZWNvbG9yPSIjMDAwMDAwIiB1dWlkPSJmZGEyMGE1ZC0yYWFiLTQxYWMtODc2Ny0xZGVkMmZiZWJiN2EiPg0KCQkJCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLnNwcmVhZHNoZWV0LmNvbm5lY3Rpb25JRCIgdmFsdWU9ImQ5NGI3OWVmLWQyMjktNGE1YS05MWMyLWZjYWFmNTMxZTJmMSIvPg0KCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQk8dGV4dEVsZW1lbnQ+DQoJCQkJCTxmb250IGlzQm9sZD0idHJ1ZSIvPg0KCQkJCTwvdGV4dEVsZW1lbnQ+DQoJCQkJPHRleHQ+PCFbQ0RBVEFbbm9tXV0+PC90ZXh0Pg0KCQkJPC9zdGF0aWNUZXh0Pg0KCQkJPHN0YXRpY1RleHQ+DQoJCQkJPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkNvbHVtbiBoZWFkZXIiIHg9IjY4OCIgeT0iMCIgd2lkdGg9IjExNCIgaGVpZ2h0PSIxOCIgZm9yZWNvbG9yPSIjMDAwMDAwIiB1dWlkPSI5YjQxYWRiMC1lM2M1LTQ4YWQtOWFkNy0xYzFiN2M3YjE5YTkiPg0KCQkJCQk8cHJvcGVydHkgbmFtZT0iY29tLmphc3BlcnNvZnQuc3R1ZGlvLnNwcmVhZHNoZWV0LmNvbm5lY3Rpb25JRCIgdmFsdWU9ImMxODIxY2FkLTU0NTktNGFlNi05N2I4LWJmZjk0MTYxZTU4ZiIvPg0KCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQk8dGV4dEVsZW1lbnQ+DQoJCQkJCTxmb250IGlzQm9sZD0idHJ1ZSIvPg0KCQkJCTwvdGV4dEVsZW1lbnQ+DQoJCQkJPHRleHQ+PCFbQ0RBVEFbcHJvdmluY2VdXT48L3RleHQ+DQoJCQk8L3N0YXRpY1RleHQ+DQoJCTwvYmFuZD4NCgk8L2NvbHVtbkhlYWRlcj4NCgk8ZGV0YWlsPg0KCQk8YmFuZCBoZWlnaHQ9IjE4IiBzcGxpdFR5cGU9IlN0cmV0Y2giPg0KCQkJPGZyYW1lPg0KCQkJCTxyZXBvcnRFbGVtZW50IHN0eWxlPSJSb3ciIG1vZGU9Ik9wYXF1ZSIgeD0iMCIgeT0iMCIgd2lkdGg9Ijc5NyIgaGVpZ2h0PSIxOCIgdXVpZD0iMzRhMmFlNGItNDA1NS00NzZiLTg2NzYtZDQ5OWY2YWY1MTBiIj4NCgkJCQkJPHByb3BlcnR5IG5hbWU9ImNvbS5qYXNwZXJzb2Z0LnN0dWRpby5sYXlvdXQiIHZhbHVlPSJjb20uamFzcGVyc29mdC5zdHVkaW8uZWRpdG9yLmxheW91dC5Ib3Jpem9udGFsUm93TGF5b3V0Ii8+DQoJCQkJPC9yZXBvcnRFbGVtZW50Pg0KCQkJCTx0ZXh0RmllbGQgaXNTdHJldGNoV2l0aE92ZXJmbG93PSJ0cnVlIj4NCgkJCQkJPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkRldGFpbCIgcG9zaXRpb25UeXBlPSJGbG9hdCIgeD0iMCIgeT0iMCIgd2lkdGg9IjExOSIgaGVpZ2h0PSIxOCIgdXVpZD0iMTA0MmIyMWQtMThiZi00NmFiLWJkOTUtN2M5YWU3OTk4ODRiIj4NCgkJCQkJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uc3ByZWFkc2hlZXQuY29ubmVjdGlvbklEIiB2YWx1ZT0iZDM4NmU0ZGQtNTQ2Yi00MDczLWIyMGItOTc0MmZhOGNhYzdjIi8+DQoJCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQkJPHRleHRFbGVtZW50Pg0KCQkJCQkJPGZvbnQgc2l6ZT0iMTIiLz4NCgkJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQkJPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbJEZ7Y29kZV9idHNfbW9iaWxlfV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCgkJCQk8L3RleHRGaWVsZD4NCgkJCQk8dGV4dEZpZWxkIGlzU3RyZXRjaFdpdGhPdmVyZmxvdz0idHJ1ZSI+DQoJCQkJCTxyZXBvcnRFbGVtZW50IHN0eWxlPSJEZXRhaWwiIHBvc2l0aW9uVHlwZT0iRmxvYXQiIHg9IjExOSIgeT0iMCIgd2lkdGg9IjExMyIgaGVpZ2h0PSIxOCIgdXVpZD0iODBhZmM4ZWMtYTg4Mi00NzY0LThhMTgtY2RlMzc0NzViN2JlIj4NCgkJCQkJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uc3ByZWFkc2hlZXQuY29ubmVjdGlvbklEIiB2YWx1ZT0iYWViZGViZjctYjE3YS00ZmZlLTlkMmEtY2EzMmNjZTgxZDZhIi8+DQoJCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQkJPHRleHRFbGVtZW50Pg0KCQkJCQkJPGZvbnQgc2l6ZT0iMTIiLz4NCgkJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQkJPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbJEZ7Y29kZV9idHNfM2d9XV0+PC90ZXh0RmllbGRFeHByZXNzaW9uPg0KCQkJCTwvdGV4dEZpZWxkPg0KCQkJCTx0ZXh0RmllbGQgaXNTdHJldGNoV2l0aE92ZXJmbG93PSJ0cnVlIj4NCgkJCQkJPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkRldGFpbCIgcG9zaXRpb25UeXBlPSJGbG9hdCIgeD0iMjMyIiB5PSIwIiB3aWR0aD0iMTEzIiBoZWlnaHQ9IjE4IiB1dWlkPSI4ZTI5ZjFkNi0xNTVlLTQ1MGItOTE0MS0yMTY5NjYxZjhmZmMiPg0KCQkJCQkJPHByb3BlcnR5IG5hbWU9ImNvbS5qYXNwZXJzb2Z0LnN0dWRpby5zcHJlYWRzaGVldC5jb25uZWN0aW9uSUQiIHZhbHVlPSJmMTc4ZDdiMi0wOWYzLTQzOGItYTQ5YS1mMzhlOWU3MGM2ZTUiLz4NCgkJCQkJPC9yZXBvcnRFbGVtZW50Pg0KCQkJCQk8dGV4dEVsZW1lbnQ+DQoJCQkJCQk8Zm9udCBzaXplPSIxMiIvPg0KCQkJCQk8L3RleHRFbGVtZW50Pg0KCQkJCQk8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVskRntjb21tdW5lfV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCgkJCQk8L3RleHRGaWVsZD4NCgkJCQk8dGV4dEZpZWxkIGlzU3RyZXRjaFdpdGhPdmVyZmxvdz0idHJ1ZSI+DQoJCQkJCTxyZXBvcnRFbGVtZW50IHN0eWxlPSJEZXRhaWwiIHBvc2l0aW9uVHlwZT0iRmxvYXQiIHg9IjM0NSIgeT0iMCIgd2lkdGg9IjExMyIgaGVpZ2h0PSIxOCIgdXVpZD0iYzA5YWUyMmQtYjllNi00MDg0LWE3MGUtODI0YTNkZTJmMDFjIj4NCgkJCQkJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uc3ByZWFkc2hlZXQuY29ubmVjdGlvbklEIiB2YWx1ZT0iZThlZDY0ZjItZWIyOS00YTliLTlkMTQtNmFlNmY1N2E4YzA5Ii8+DQoJCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQkJPHRleHRFbGVtZW50Pg0KCQkJCQkJPGZvbnQgc2l6ZT0iMTIiLz4NCgkJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQkJPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbJEZ7ZGF0ZV9hcHBhcml0aW9uX2ZsdXh9XV0+PC90ZXh0RmllbGRFeHByZXNzaW9uPg0KCQkJCTwvdGV4dEZpZWxkPg0KCQkJCTx0ZXh0RmllbGQgaXNTdHJldGNoV2l0aE92ZXJmbG93PSJ0cnVlIj4NCgkJCQkJPHJlcG9ydEVsZW1lbnQgc3R5bGU9IkRldGFpbCIgcG9zaXRpb25UeXBlPSJGbG9hdCIgeD0iNDU4IiB5PSIwIiB3aWR0aD0iMTEzIiBoZWlnaHQ9IjE4IiB1dWlkPSJiMjZkY2M4ZC0yMWIxLTQ4NTItODhjNS03YzYxNjI3Y2ZlNGMiPg0KCQkJCQkJPHByb3BlcnR5IG5hbWU9ImNvbS5qYXNwZXJzb2Z0LnN0dWRpby5zcHJlYWRzaGVldC5jb25uZWN0aW9uSUQiIHZhbHVlPSIwYjg1ZjIyOC1kNjUzLTRmNDItYWZhMy0yMjI0ZWY5OTBjOTYiLz4NCgkJCQkJPC9yZXBvcnRFbGVtZW50Pg0KCQkJCQk8dGV4dEVsZW1lbnQ+DQoJCQkJCQk8Zm9udCBzaXplPSIxMiIvPg0KCQkJCQk8L3RleHRFbGVtZW50Pg0KCQkJCQk8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVskRntkZXJuaWVyX21vaXNfZGV0ZWN0aW9ufV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCgkJCQk8L3RleHRGaWVsZD4NCgkJCQk8dGV4dEZpZWxkIGlzU3RyZXRjaFdpdGhPdmVyZmxvdz0idHJ1ZSI+DQoJCQkJCTxyZXBvcnRFbGVtZW50IHN0eWxlPSJEZXRhaWwiIHBvc2l0aW9uVHlwZT0iRmxvYXQiIHg9IjU3MSIgeT0iMCIgd2lkdGg9IjExMyIgaGVpZ2h0PSIxOCIgdXVpZD0iNTZmOWU3OWMtOTAxZi00MTVmLThmYTAtNTlmMDViOGQ5ODdkIj4NCgkJCQkJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uc3ByZWFkc2hlZXQuY29ubmVjdGlvbklEIiB2YWx1ZT0iZDk0Yjc5ZWYtZDIyOS00YTVhLTkxYzItZmNhYWY1MzFlMmYxIi8+DQoJCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQkJPHRleHRFbGVtZW50Pg0KCQkJCQkJPGZvbnQgc2l6ZT0iMTIiLz4NCgkJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQkJPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbJEZ7bm9tfV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCgkJCQk8L3RleHRGaWVsZD4NCgkJCQk8dGV4dEZpZWxkIGlzU3RyZXRjaFdpdGhPdmVyZmxvdz0idHJ1ZSI+DQoJCQkJCTxyZXBvcnRFbGVtZW50IHN0eWxlPSJEZXRhaWwiIHBvc2l0aW9uVHlwZT0iRmxvYXQiIHg9IjY4NCIgeT0iMCIgd2lkdGg9IjExMyIgaGVpZ2h0PSIxOCIgdXVpZD0iZmM5ODhhYTktZmMzZS00MTljLWE4ZWQtMTY4ZDdmNWIxNjI1Ij4NCgkJCQkJCTxwcm9wZXJ0eSBuYW1lPSJjb20uamFzcGVyc29mdC5zdHVkaW8uc3ByZWFkc2hlZXQuY29ubmVjdGlvbklEIiB2YWx1ZT0iYzE4MjFjYWQtNTQ1OS00YWU2LTk3YjgtYmZmOTQxNjFlNThmIi8+DQoJCQkJCTwvcmVwb3J0RWxlbWVudD4NCgkJCQkJPHRleHRFbGVtZW50Pg0KCQkJCQkJPGZvbnQgc2l6ZT0iMTIiLz4NCgkJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQkJPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbJEZ7cHJvdmluY2V9XV0+PC90ZXh0RmllbGRFeHByZXNzaW9uPg0KCQkJCTwvdGV4dEZpZWxkPg0KCQkJPC9mcmFtZT4NCgkJPC9iYW5kPg0KCTwvZGV0YWlsPg0KCTxjb2x1bW5Gb290ZXI+DQoJCTxiYW5kIGhlaWdodD0iNyIgc3BsaXRUeXBlPSJTdHJldGNoIj4NCgkJCTxsaW5lPg0KCQkJCTxyZXBvcnRFbGVtZW50IHBvc2l0aW9uVHlwZT0iRml4UmVsYXRpdmVUb0JvdHRvbSIgeD0iMCIgeT0iMyIgd2lkdGg9IjU1NSIgaGVpZ2h0PSIxIiB1dWlkPSI1MDFhYzZjNC1lOWQ0LTQzY2ItYmE2Yi03ZjJmNDQzOTRjZjMiLz4NCgkJCQk8Z3JhcGhpY0VsZW1lbnQ+DQoJCQkJCTxwZW4gbGluZVdpZHRoPSIwLjUiIGxpbmVDb2xvcj0iIzk5OTk5OSIvPg0KCQkJCTwvZ3JhcGhpY0VsZW1lbnQ+DQoJCQk8L2xpbmU+DQoJCTwvYmFuZD4NCgk8L2NvbHVtbkZvb3Rlcj4NCgk8cGFnZUZvb3Rlcj4NCgkJPGJhbmQgaGVpZ2h0PSIyNSIgc3BsaXRUeXBlPSJTdHJldGNoIj4NCgkJCTxmcmFtZT4NCgkJCQk8cmVwb3J0RWxlbWVudCBtb2RlPSJPcGFxdWUiIHg9IjAiIHk9IjAiIHdpZHRoPSI4MDIiIGhlaWdodD0iMjUiIGZvcmVjb2xvcj0iI0QwQjQ4RSIgYmFja2NvbG9yPSIjMDAwMDAwIiB1dWlkPSJmZmIxMGVjOC0wMzcxLTQ1NDUtOGVhYS05NmQ2MmFkM2NlYzAiLz4NCgkJCQk8dGV4dEZpZWxkIGV2YWx1YXRpb25UaW1lPSJSZXBvcnQiPg0KCQkJCQk8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iNzU3IiB5PSIzIiB3aWR0aD0iNDAiIGhlaWdodD0iMjAiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgdXVpZD0iYjU1MjFlYTYtNWYzNi00ODY0LTg1NmYtNThkMGJjZDAxMWYyIi8+DQoJCQkJCTx0ZXh0RWxlbWVudCB2ZXJ0aWNhbEFsaWdubWVudD0iTWlkZGxlIj4NCgkJCQkJCTxmb250IHNpemU9IjEwIiBpc0JvbGQ9ImZhbHNlIi8+DQoJCQkJCTwvdGV4dEVsZW1lbnQ+DQoJCQkJCTx0ZXh0RmllbGRFeHByZXNzaW9uPjwhW0NEQVRBWyIgIiArICRWe1BBR0VfTlVNQkVSfV1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCgkJCQk8L3RleHRGaWVsZD4NCgkJCQk8dGV4dEZpZWxkPg0KCQkJCQk8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iNjc3IiB5PSIzIiB3aWR0aD0iODAiIGhlaWdodD0iMjAiIGZvcmVjb2xvcj0iI0ZGRkZGRiIgdXVpZD0iZTYyNWVhM2MtMTc0MS00Y2ZlLTgxY2YtZmJiZGQwMDE2MmM4Ii8+DQoJCQkJCTx0ZXh0RWxlbWVudCB0ZXh0QWxpZ25tZW50PSJSaWdodCIgdmVydGljYWxBbGlnbm1lbnQ9Ik1pZGRsZSI+DQoJCQkJCQk8Zm9udCBzaXplPSIxMCIgaXNCb2xkPSJmYWxzZSIvPg0KCQkJCQk8L3RleHRFbGVtZW50Pg0KCQkJCQk8dGV4dEZpZWxkRXhwcmVzc2lvbj48IVtDREFUQVsiUGFnZSAiKyRWe1BBR0VfTlVNQkVSfSsiIG9mIl1dPjwvdGV4dEZpZWxkRXhwcmVzc2lvbj4NCgkJCQk8L3RleHRGaWVsZD4NCgkJCQk8dGV4dEZpZWxkIHBhdHRlcm49IkVFRUVFIGRkIE1NTU1NIHl5eXkiPg0KCQkJCQk8cmVwb3J0RWxlbWVudCBzdHlsZT0iQ29sdW1uIGhlYWRlciIgeD0iMiIgeT0iMyIgd2lkdGg9IjE5NyIgaGVpZ2h0PSIyMCIgZm9yZWNvbG9yPSIjRkZGRkZGIiB1dWlkPSIwYzlmN2U5MS1kM2Y1LTQ3ZjktODJiNy0wYjJiM2E0M2E1ZDYiLz4NCgkJCQkJPHRleHRFbGVtZW50IHZlcnRpY2FsQWxpZ25tZW50PSJNaWRkbGUiPg0KCQkJCQkJPGZvbnQgc2l6ZT0iMTAiIGlzQm9sZD0iZmFsc2UiLz4NCgkJCQkJPC90ZXh0RWxlbWVudD4NCgkJCQkJPHRleHRGaWVsZEV4cHJlc3Npb24+PCFbQ0RBVEFbbmV3IGphdmEudXRpbC5EYXRlKCldXT48L3RleHRGaWVsZEV4cHJlc3Npb24+DQoJCQkJPC90ZXh0RmllbGQ+DQoJCQk8L2ZyYW1lPg0KCQk8L2JhbmQ+DQoJPC9wYWdlRm9vdGVyPg0KCTxzdW1tYXJ5Pg0KCQk8YmFuZCBzcGxpdFR5cGU9IlN0cmV0Y2giLz4NCgk8L3N1bW1hcnk+DQo8L2phc3BlclJlcG9ydD4NCg==",
         "type":"jrxml"
      }
   }
} 

The input Control, datasource and other reources are presents in JasperReport Server.

Regards,

Johann

johann.reboulleau's picture
Joined: Dec 5 2017 - 7:49pm
Last seen: 1 year 10 months ago
0

Hi

I faced the same problem.

You should add an additional level of nesting in dataType object. In your case, it will be something like that

"dataType": {
    "dataType": {
        "label": "typeTEXT",
        "description" : "description",
        "type": "text",
        "strictMax": false,
        "strictMin": false
     }
}

inputControl can accept dataTypeReference as well as an explicit declaration of dataType. Thus you should specify firstly what way of dataType declaration you will use.

a.khodeev's picture
Joined: Sep 5 2017 - 11:34pm
Last seen: 7 months 1 week ago
0

Even tried the option with DataType, its failing.

murugesanvinoth3's picture
Joined: Sep 29 2018 - 7:09pm
Last seen: 6 months 1 week ago
Feedback
randomness