)clear
clear ws
)copy conga Conga
C:\apps\dyalog182U64\ws\conga.dws saved Tue Mar 8 14:28:06 2022
i←Conga.Init ''
]load HttpCommand
#.HttpCommand
service←'https://services.odata.org/V4/Northwind/Northwind.svc'
⎕←res←HttpCommand.Get service
[rc: 0 | msg: | HTTP Status: 200 "OK" | ⍴Data: 2016]
200↑res.Data
{"@odata.context":"https://services.odata.org/V4/Northwind/Northwind.svc/$metadata","value":[{"name":"Categories","kind":"EntitySet","url":"Categories"},{"name":"CustomerDemographics","kind":"EntitySe
jres←⎕json res.Data
jres.⎕nl -2 9
value ⍙⍙64⍙odata⍙46⍙context
jres.value
#.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON
object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON o
bject].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON object].[JSON object] #.[JSON obj
ect].[JSON object] #.[JSON object].[JSON object]
jres.value[1].⎕nl -2 9
kind name url
⍪jres.value.(kind url)
EntitySet Categories
EntitySet CustomerDemographics
EntitySet Customers
EntitySet Employees
EntitySet Order_Details
EntitySet Orders
EntitySet Products
EntitySet Regions
EntitySet Shippers
EntitySet Suppliers
EntitySet Territories
EntitySet Alphabetical_list_of_products
EntitySet Category_Sales_for_1997
EntitySet Current_Product_Lists
EntitySet Customer_and_Suppliers_by_Cities
EntitySet Invoices
EntitySet Order_Details_Extendeds
EntitySet Order_Subtotals
EntitySet Orders_Qries
EntitySet Product_Sales_for_1997
EntitySet Products_Above_Average_Prices
EntitySet Products_by_Categories
EntitySet Sales_by_Categories
EntitySet Sales_Totals_by_Amounts
EntitySet Summary_of_Sales_by_Quarters
EntitySet Summary_of_Sales_by_Years
jres.⍙⍙64⍙odata⍙46⍙context
https://services.odata.org/V4/Northwind/Northwind.svc/$metadata
⍝ crtl+click on the link
ObjIn←{(⊃⍵).⎕NL-2 9}
⎕←orders←HttpCommand.Get service,'/Orders'
[rc: 0 | msg: | HTTP Status: 200 "OK" | ⍴Data: 70806]
jorders←⎕json orders.Data
ObjIn jorders
value ⍙⍙64⍙odata⍙46⍙context ⍙⍙64⍙odata⍙46⍙nextLink
ObjIn jorders.value
CustomerID EmployeeID Freight OrderDate OrderID RequiredDate ShipAddress ShipCity ShipCountry ShipName ShipPostalCode ShipRegion ShipVia ShippedDate
⍴jorders.value.ShippedDate
200
10↑jorders.value.ShippedDate
1996-07-16T00:00:00Z 1996-07-10T00:00:00Z 1996-07-12T00:00:00Z 1996-07-15T00:00:00Z 1996-07-11T00:00:00Z 1996-07-16T00:00:00Z 1996-07-23T00:00:00Z 1996-07-15T00:00:00Z 1996-07-17T00:00:00Z 1996-07-22T00:00:00Z
jorders.⍙⍙64⍙odata⍙46⍙nextLink
Orders?$skiptoken=10447
⎕←orders2←HttpCommand.Get service,'/',jorders.⍙⍙64⍙odata⍙46⍙nextLink
[rc: 0 | msg: | HTTP Status: 200 "OK" | ⍴Data: 71078]
jo2←⎕json orders2.Data
⍴jo2.value
200
⎕←t←HttpCommand.Get service,'/Orders/$count'
[rc: 0 | msg: | HTTP Status: 200 "OK" | ⍴Data: 3]
t.Data
830
params←1 2⍴ '$select' 'OrderID,ShippedDate'
params⍪← '$filter' 'ShippedDate ge 1997-07-01 and ShippedDate lt 1997-08-01'
⎕←july97←HttpCommand.Get (service,'/Orders') (params)
[rc: 0 | msg: | HTTP Status: 200 "OK" | ⍴Data: 1827]
jjuly97←⎕json july97.Data
ObjIn jjuly97
value ⍙⍙64⍙odata⍙46⍙context
ObjIn jjuly97.value
OrderID ShippedDate
⍴jjuly97.value
31
jjuly97.value.ShippedDate
1997-07-09T00:00:00Z 1997-07-11T00:00:00Z 1997-07-04T00:00:00Z 1997-07-25T00:00:00Z 1997-07-04T00:00:00Z 1997-07-01T00:00:00Z 1997-07-02T00:00:00Z 1997-07-14T00:00:00Z 1997-07-04T00:00:00Z 1997-07-04T00:00:00Z 1997-07-10T00:00:00Z 1997-07-09T00
:00:00Z 1997-07-09T00:00:00Z 1997-07-10T00:00:00Z 1997-07-14T00:00:00Z 1997-07-14T00:00:00Z 1997-07-16T00:00:00Z 1997-07-16T00:00:00Z 1997-07-16T00:00:00Z 1997-07-14T00:00:00Z 1997-07-18T00:00:00Z 1997-07-18T00:00:00Z 1997-07-21T00:00:00Z
1997-07-21T00:00:00Z 1997-07-22T00:00:00Z 1997-07-22T00:00:00Z 1997-07-29T00:00:00Z 1997-07-29T00:00:00Z 1997-07-31T00:00:00Z 1997-07-25T00:00:00Z 1997-07-30T00:00:00Z
1 HttpCommand.Get (service,'/Orders') (params)
GET /V4/Northwind/Northwind.svc/Orders?%24select=OrderID%2CShippedDate&%24filter=ShippedDate%20ge%201997-07-01%20and%20ShippedDate%20lt%201997-08-01 HTTP/1.1
Host: services.odata.org
User-Agent: Dyalog/HttpCommand
Accept: */*
params←1 2⍴ '$select' 'OrderID,ShippedDate'
params⍪← '$filter' 'month(ShippedDate) eq 7 and year(ShippedDate) eq 1997'
params⍪←'$expand' 'Order_Details'
⎕←t ←HttpCommand.Get (service,'/Orders') (params)
[rc: 0 | msg: | HTTP Status: 200 "OK" | ⍴Data: 7814]
jt←⎕Json t.Data
⍴jt.value
31
ObjIn jt.value
OrderID Order_Details ShippedDate
ObjIn jt.value.Order_Details
Discount OrderID ProductID Quantity UnitPrice
params⍪←'$compute' 'Order_Details/Quantity mul Order_Details/UnitPrice as Amount'
⎕←t ←HttpCommand.Get (service,'/Orders') (params)
[rc: 0 | msg: | HTTP Status: 400 "Bad Request" | ⍴Data: 131]
t.Data
{"error":{"code":"","message":"The query parameter '$compute' begins with a system-reserved '$' character but is not recognized."}}
params←¯1↓params
⎕←t ←HttpCommand.Get (service,'/Orders') (params)
[rc: 0 | msg: | HTTP Status: 200 "OK" | ⍴Data: 7814]
jt←⎕json t.Data
jt.value.Order_Details.(Quantity×(1-Discount)×UnitPrice)
155 350 540 217.3875 333.2 360 117 155 162.75 331.3125 82.5075 599.925 310 78 252 1237.9 693.6 306 593.75 142.5 23.8 187.38 360 260 2000 1120 72 360 741 140 300 372.5 368.125 148.3425 168 397.5 405 2565 1755 126 390 202.08 2195 193.5
493 29.8 450 360 1925 48.75 68.85 162 497.325 1045 2261 306.375 352 384 394.4 1350 3900 35 772.8 417.6 54 310 60
⍴¨jt.value.Order_Details.(Quantity×(1-Discount)×UnitPrice)
1 2 2 2 2 3 1 2 3 1 1 1 3 2 1 2 3 2 2 3 3 2 1 2 2 1 2 4 3 5 3
+/⊃,/jt.value.Order_Details.(Quantity×(1-Discount)×UnitPrice)
37544.96
⍝ exercise