Hi, there are no errors in the log. The error is in the API response: The log is: 1 %studio_hide_wrapper;
83 /* === EXTRACT REPORT CONTENT AND SAVE TO GIT =====*/
84 %let BASE_URI=%sysfunc(getoption(SERVICESBASEURL));
85 FILENAME rptFile TEMP encoding = 'UTF8';
86 PROC HTTP
87 METHOD="GET"
88 oauth_bearer=sas_services
89 OUT=rptFile
90 URL = "&BASE_URI/reports/reports/6d637247-1566-45c1-8222-dcdab470d58f/content";
91 HEADERS "Accept" = "application/vnd.sas.report.content+json";
92
93 RUN;
NOTE: PROCEDURE HTTP used (Total process time):
real time 0.04 seconds
cpu time 0.01 seconds
94
95 LIBNAME rptFile json;
NOTE: JSON data is only read once. To read the JSON again, reassign the JSON LIBNAME.
NOTE: Libref RPTFILE was successfully assigned as follows:
Engine: JSON
Physical Name: /sastemp/SAS_work896B001EA2E3_micro-sasviya-ris-c.prod.aavs.ns2p.corp.hmrc.gov.uk/#LN00020
96 %put %sysfunc( jsonpp(rptFile, log));
{
"@element": "SASReport",
"xmlns": "http://www.sas.com/sasreportmodel/bird-4.2.4",
"label": "Export_import_test",
"dateCreated": "2025-08-20T12:46:06Z",
"createdApplicationName": "SAS Visual Analytics 8.5.2",
"dateModified": "2025-08-20T12:46:06Z",
"lastModifiedApplicationName": "SAS Visual Analytics 8.5.2",
"createdVersion": "4.2.4",
"createdLocale": "en",
"nextUniqueNameIndex": 9,
"visualElements": [
{
"@element": "Text",
"name": "ve8",
"labelAttribute": "Text 1",
"selectionDisabled": "true",
"paragraphList": [
{
"@element": "P",
"styleClass": "paragraph1",
"elements": [
{
"@element": "Span",
"elements": [
{
"@element": "Span",
"elements": [
{
"@element": "TextString",
"text": "THIS IS THE INITIAL VERSION"
}
],
"styleClass": "span2"
}
],
"styleClass": "span1"
}
]
}
],
"applyDynamicBrushes": "no"
}
],
"view": {
"@element": "View",
"sections": [
{
"@element": "Section",
"name": "vi6",
"label": "Page 1",
"body": {
"@element": "Body",
"mediaContainerList": [
{
"@element": "MediaContainer",
"target": "mt2",
"layout": {
"@element": "ResponsiveLayout",
"orientation": "vertical",
"overflow": "fit",
"weights": [
{
"@element": "Weights",
"mediaTarget": "mt5",
"unit": "percent",
"values": [
{
"@element": "Weight",
"value": "100%"
}
]
},
{
"@element": "Weights",
"mediaTarget": "mt4",
"unit": "percent",
"values": [
{
"@element": "Weight",
"value": "100%"
}
]
},
{
"@element": "Weights",
"mediaTarget": "mt3",
"unit": "percent",
"values": [
{
"@element": "Weight",
"value": "100%"
}
]
}
]
},
"containedElementList": [
{
"@element": "Visual",
"name": "vi7",
"ref": "ve8",
"responsiveConstraint": {
"@element": "ResponsiveConstraint",
"widthConstraint": {
"@element": "Responsive_WidthConstraint",
"widths": [
{
"@element": "Width",
"mediaTarget": "mt3",
"preferredSizeBehavior": "ignore",
"flexibility": "flexible"
}
]
},
"heightConstraint": {
"@element": "Responsive_HeightConstraint",
"heights": [
{
"@element": "Height",
"mediaTarget": "mt3",
"preferredSizeBehavior": "honor",
"flexibility": "fixed"
}
]
}
}
}
]
}
]
}
}
]
},
"mediaSchemes": [
{
"@element": "MediaScheme",
"name": "ms1",
"baseStylesheetResource": {
"@element": "BaseStylesheetResource",
"theme": "opal"
},
"stylesheet": {
"@element": "Stylesheet",
"cdata": "\n\n#ve8 .paragraph1 {\n text-align: center;\n}\n#ve8 .span2 {\n font-weight: bold;\n}\n#ve8 .span1 {\n
font-size: 20pt;\n}\n\n\t\t\t",
"styles": {
"#ve8 .paragraph1": {
"@element": "Style",
"styleName": "#ve8 .paragraph1",
"properties": {
"text-align": "center"
}
},
"#ve8 .span2": {
"@element": "Style",
"styleName": "#ve8 .span2",
"properties": {
"font-weight": "bold"
}
},
"#ve8 .span1": {
"@element": "Style",
"styleName": "#ve8 .span1",
"properties": {
"font-size": "20pt"
}
}
}
}
}
],
"mediaTargets": [
{
"@element": "MediaTarget",
"name": "mt2",
"windowSize": "default",
"scheme": "ms1"
},
{
"@element": "MediaTarget",
"name": "mt3",
"windowSize": "small",
"scheme": "ms1"
},
{
"@element": "MediaTarget",
"name": "mt4",
"windowSize": "medium",
"scheme": "ms1"
},
{
"@element": "MediaTarget",
"name": "mt5",
"windowSize": "large",
"scheme": "ms1"
}
],
"exportProperties": [
{
"@element": "Export",
"destination": "pdf",
"exportPropertyList": [
{
"@element": "Export_Property",
"key": "showCoverPage",
"value": "true",
"content": ""
},
{
"@element": "Export_Property",
"key": "showPageNumbers",
"value": "true",
"content": ""
}
]
}
],
"history": {
"@element": "History",
"versions": [
{
"@element": "Version",
"versionKey": "4.2.4",
"lastDate": "2025-09-12T15:23:03Z"
}
],
"editors": [
{
"@element": "Editor",
"applicationName": "VA",
"revisions": [
{
"@element": "Revision",
"editorVersion": "8.5.2",
"lastDate": "2025-08-20T12:46:06.050Z"
}
]
}
]
},
"sasReportState": {
"@element": "SASReportState",
"view": {
"@element": "View_State"
}
}
}
0
97
98 filename latf "/home/users/&sysuserid./GIT_folder/testL.json" encoding='UTF8';
99
100 data _null_;
101 infile rptFile lrecl=32767;
102 file latf lrecl=32767;
103 input;
104 put _infile_;
105 run;
NOTE: The infile RPTFILE is:
Filename=/sastemp/SAS_work896B001EA2E3_micro-sasviya-ris-c.prod.aavs.ns2p.corp.hmrc.gov.uk/#LN00020,
Owner Name=7259891,Group Name=Domain Users,
Access Permission=-rw-rw-r--,
Last Modified=12 September 2025 16:23:03,
File Size (bytes)=3391
NOTE: The file LATF is:
Filename=/home/users/7259891/GIT_folder/testL.json,
Owner Name=7259891,Group Name=Domain Users,
Access Permission=-rw-rw-r--,
Last Modified=12 September 2025 16:23:03
NOTE: 1 record was read from the infile RPTFILE.
The minimum record length was 3388.
The maximum record length was 3388.
NOTE: 1 record was written to the file LATF.
The minimum record length was 3388.
The maximum record length was 3388.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
106
107
108
109 /* ====== EXTRACT REPORT ETAG ==== */
110 Filename outhead temp ;
111 PROC HTTP
112
113 URL = "&BASE_URI/reports/reports/6d637247-1566-45c1-8222-dcdab470d58f"
114 METHOD="GET"
115 oauth_bearer=sas_services
116 OUT=rptFile
117 headerout = outhead
118 headerout_overwrite ;
119 run;
NOTE: PROCEDURE HTTP used (Total process time):
real time 0.01 seconds
cpu time 0.00 seconds
120
121
122 data _null_;
123 infile outhead;
124 input;
125 if index(_infile_, 'ETag:') then do;
126 call symputx('etag', scan(_infile_, 2, '"'));
127 end;
128 run;
NOTE: The infile OUTHEAD is:
Filename=/sastemp/SAS_work896B001EA2E3_micro-sasviya-ris-c.prod.aavs.ns2p.corp.hmrc.gov.uk/#LN00024,
Owner Name=7259891,Group Name=Domain Users,
Access Permission=-rw-rw-r--,
Last Modified=12 September 2025 16:23:03,
File Size (bytes)=701
NOTE: 19 records were read from the infile OUTHEAD.
The minimum record length was 0.
The maximum record length was 107.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
129
130 %put WARNING: &etag.;
WARNING: mfgz0hgn
131 data _null_;
132 infile outhead;
133 input ;
134 put _infile_;
135 run;
NOTE: The infile OUTHEAD is:
Filename=/sastemp/SAS_work896B001EA2E3_micro-sasviya-ris-c.prod.aavs.ns2p.corp.hmrc.gov.uk/#LN00024,
Owner Name=7259891,Group Name=Domain Users,
Access Permission=-rw-rw-r--,
Last Modified=12 September 2025 16:23:03,
File Size (bytes)=701
HTTP/1.1 200
Date: Fri, 12 Sep 2025 15:23:03 GMT
Server: Apache/2.4
Vary: Origin,User-Agent,Access-Control-Request-Method,Access-Control-Request-Headers
SAS-Service-Response-Flag: true
Last-Modified: Fri, 12 Sep 2025 15:06:53 GMT
ETag: "mfgz0hgn"
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Content-Security-Policy: default-src 'self'; object-src 'none'; frame-ancestors 'self'; form-action 'self';
Content-Type: application/json; charset=utf-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Transfer-Encoding: chunked
NOTE: 19 records were read from the infile OUTHEAD.
The minimum record length was 0.
The maximum record length was 107.
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
136
137
138 /* ==== UPDATE REPORT WITH EDITED JSON ======*/
139 filename resp1 temp encoding = 'UTF8';
140 proc http
141 method = 'PUT'
142 oauth_bearer=sas_services
143 url = "&BASE_URI/reports/reports/6d637247-1566-45c1-8222-dcdab470d58f/content"
144 in = /*rptFile */"/home/users/&sysuserid./GIT_folder/testL2.json"
145 out = resp1;
146
147 headers
148
149 "Content-Type"="application/vnd.sas.report.content+json"
150 "Accept"="application/json"
151 "If-Match" = """&etag.""";
152
153 ;
154 run;
NOTE: PROCEDURE HTTP used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
155 LIBNAME resp1 json;
NOTE: JSON data is only read once. To read the JSON again, reassign the JSON LIBNAME.
NOTE: Libref RESP1 was successfully assigned as follows:
Engine: JSON
Physical Name: /sastemp/SAS_work896B001EA2E3_micro-sasviya-ris-c.prod.aavs.ns2p.corp.hmrc.gov.uk/#LN00025
156
157 filename rptFIle clear;
NOTE: Fileref RPTFILE has been deassigned.
158
159 %studio_hide_wrapper;
170
171 The API response is : 1 errorCode 1 10755 1 message 1 An error occurred. The content is invalid, possibly in the wrong format. 1 details 0 2 details details1 1 traceId: 3ea109edaee4b9ef 2 details details2 1 path: /reports/reports/6d637247-1566-45c1-8222-dcdab470d58f/content 1 links 0 1 version 1 2 1 httpStatusCode 1 400
... View more