liveapicreator-admin-cli
Version:
The NodeJS command line utility for 'CA Live API Creator' DevOps Administration from CA Technologies
1,380 lines • 66.6 kB
JSON
{
"{d}demo": {
"{d}connections": {
"{f}ReadMe.md": "This folder contains definitions for connections"
},
"{d}listeners": {
"{f}ReadMe.md": "This folder contains definitions for listeners"
},
"{d}custom_endpoints": {
"{f}ReadMe.md": "This folder contains definitions for custom_endpoints"
},
"{f}relationships.json": [
{
"parentEntity": "demo:customer",
"childEntity": "demo:PurchaseOrder",
"roleToParent": "customer",
"roleToChild": "PurchaseOrderList",
"deleteRule": "Cascade",
"updateRule": "No Action",
"parentColumns": [
"name"
],
"childColumns": [
"customer_name"
]
},
{
"parentEntity": "demo:customer",
"childEntity": "finance:orders",
"roleToParent": "demoCustomer",
"roleToChild": "financeOrders",
"deleteRule": "No Action",
"updateRule": "No Action",
"parentColumns": [
"name"
],
"childColumns": [
"customer_name"
]
},
{
"parentEntity": "demo:employee",
"childEntity": "demo:employee_picture",
"roleToParent": "employee_picture",
"roleToChild": "employee_pictureList",
"deleteRule": "Cascade",
"updateRule": "No Action",
"parentColumns": [
"employee_id"
],
"childColumns": [
"employee_id"
]
},
{
"parentEntity": "demo:employee",
"childEntity": "demo:PurchaseOrder",
"roleToParent": "salesrep",
"roleToChild": "PurchaseOrderList",
"deleteRule": "Cascade",
"updateRule": "No Action",
"parentColumns": [
"employee_id"
],
"childColumns": [
"salesrep_id"
]
},
{
"parentEntity": "demo:product",
"childEntity": "demo:LineItem",
"roleToParent": "product",
"roleToChild": "LineItemList",
"deleteRule": "No Action",
"updateRule": "No Action",
"parentColumns": [
"product_number"
],
"childColumns": [
"product_number"
]
},
{
"parentEntity": "demo:PurchaseOrder",
"childEntity": "demo:LineItem",
"roleToParent": "lineitem_purchaseorder",
"roleToChild": "LineItemList",
"deleteRule": "Cascade",
"updateRule": "No Action",
"parentColumns": [
"order_number"
],
"childColumns": [
"order_number"
]
},
{
"parentEntity": "demo:PurchaseOrder",
"childEntity": "demo:purchaseorder_audit",
"roleToParent": "purchaseorder_audit",
"roleToChild": "purchaseorder_auditList",
"deleteRule": "Cascade",
"updateRule": "No Action",
"parentColumns": [
"order_number"
],
"childColumns": [
"order_number"
]
}
],
"{d}data_sources": {
"{f}ReadMe.md": "This folder contains definitions for data sources",
"{f}demo_oiz.json": {
"name": "demo_oiz",
"prefix": "demo",
"title": "Demo",
"databaseType": "DERBY",
"comments": null,
"isActive": true,
"isLogErrors": false,
"isSchemaEditable": false,
"isSupportBoolean": false,
"isReadOnly": false,
"useJNDIDataSource": false,
"url": "jdbc:derby:directory:/Users/banty01/derbytest/Demo",
"catalog": null,
"schema": "\"DEMO\"",
"username": "\"DEMO\"",
"encryptedPassword": "2:Gk/KCM6biX7bDGcsFfT2OgNZu/rGw0HFH9vqVCFXCvFOU48m3hIpGw==",
"encryptedPasswordSalt": "hDwBB6Scn+tPF6nhFH9g13fWvMoyr3DbYPebKb9z",
"maximumConnections": 20,
"tableExcludes": null,
"tableIncludes": null,
"procedureExcludes": null,
"procedureIncludes": null,
"nonPersistentAttributes": {},
"tableInfos": {},
"viewInfos": {}
},
"{f}finance_fde.json": {
"name": "finance_fde",
"prefix": "finance",
"title": "Finance",
"databaseType": "DERBY",
"comments": null,
"isActive": true,
"isLogErrors": false,
"isSchemaEditable": false,
"isSupportBoolean": false,
"isReadOnly": false,
"useJNDIDataSource": false,
"url": "jdbc:derby:directory:/Users/banty01/derbytest/Finance",
"catalog": null,
"schema": "\"FINANCE\"",
"username": "\"FINANCE\"",
"encryptedPassword": "2:6Q6TxY04hsSyO9m/ZAjBCs1+kYJBhMAmQqzyQwdzEuF2sIGn1O4oVg==",
"encryptedPasswordSalt": "ktBWh1Vzxvl5FHBTq92RZrAqnzpIiRDqEfUpFqwF",
"maximumConnections": 20,
"tableExcludes": null,
"tableIncludes": null,
"procedureExcludes": null,
"procedureIncludes": null,
"nonPersistentAttributes": {},
"tableInfos": {},
"viewInfos": {}
}
},
"{d}filters": {
"{f}ReadMe.md": "This folder contains definitions for filters"
},
"{d}functions": {
"{f}ReadMe.md": "This folder contains definitions for functions",
"{f}gcd.json": {
"name": "gcd",
"isActive": true,
"comments": "Simple function that takes two parameters and returns the greatest common divisor.\nThis function is not associated with any tables or resources, so it must be called on the API, with a URL that looks like:\n\n.../v1/gcd?n1=256&n2=512",
"returnType": "{\n \"n1\":6,\n \"n2\":9,\n \"gcd\":3\n}",
"parameters": {
"n1": {
"parameterType": "number",
"isRequired": true,
"comments": "First number"
},
"n2": {
"parameterType": "number",
"isRequired": true,
"comments": "Second number"
}
},
"functionType": "apiLevel"
},
"{f}gcd.js": "// Trivial example: find greatest common divisor for two positive numbers\nvar div = 2\nvar gcd = 1;\n\nif (parameters.n1 < 2 || parameters.n2 < 2) {\n return {\n n1: parameters.n1,\n n2: parameters.n2,\n gcd: 1,\n message: \"One or both of your parameters were less than 2, so the result is 1\"\n };\n}\n \nif (parameters.n1 > 1000000000000 || parameters.n2 > 1000000000000) {\n return {\n n1: parameters.n1,\n n2: parameters.n2,\n gcd: null,\n message: \"One or both of your parameters were greater than 1,000,000,000,000, so the result is too expensive to compute\"\n };\n}\n \nwhile (parameters.n1 >= div && parameters.n2 >= div) {\n if (parameters.n1%div === 0 && parameters.n2%div === 0) {\n gcd = div; \n }\n div++;\n}\n\nreturn {\n n1: parameters.n1,\n n2: parameters.n2,\n gcd: gcd\n};\n"
},
"{d}libraries": {
"{f}ReadMe.md": "This folder contains definitions for libraries and whether they are used.\n",
"{f}SystemLibraryUsage.json": []
},
"{d}request_events": {
"{f}ReadMe.md": "This folder contains definitions for request events"
},
"{d}resources": {
"{f}ReadMe.md": "This folder contains definitions for resources",
"{f}apiversions.json": {
"v1": {
"name": "v1",
"comments": null
}
},
"{d}v1": {
"{d}AllCustomers": {
"{f}AllCustomers.json": {
"name": "AllCustomers",
"description": "Query for all customers",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "customer",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "name",
"description": "",
"isKey": false
},
{
"attribute": "balance",
"alias": "balance",
"description": "",
"isKey": false
}
]
},
"{f}AllCustomers.js": ""
},
"{d}CustomerBusinessObject": {
"{f}CustomerBusinessObject.json": {
"name": "CustomerBusinessObject",
"description": "all customer attributes and related child data",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "customer",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": "\"name\" asc",
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "name",
"description": null,
"isKey": false
},
{
"attribute": "balance",
"alias": "balance",
"description": null,
"isKey": false
},
{
"attribute": "credit_limit",
"alias": "credit_limit",
"description": null,
"isKey": false
},
{
"attribute": "comments",
"alias": "comments",
"description": null,
"isKey": false
}
]
},
"{f}CustomerBusinessObject.js": "",
"{d}Orders": {
"{f}Orders.json": {
"name": "Orders",
"description": "Orders of Customer",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "PurchaseOrder",
"join": "\"customer_name\" = [name]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": "\"order_number\" desc",
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "order_number",
"alias": "order_number",
"description": null,
"isKey": false
},
{
"attribute": "amount_total",
"alias": "amount_total",
"description": null,
"isKey": false
},
{
"attribute": "paid",
"alias": "paid",
"description": null,
"isKey": false
},
{
"attribute": "notes",
"alias": "notes",
"description": null,
"isKey": false
},
{
"attribute": "customer_name",
"alias": "customer_name",
"description": null,
"isKey": false
},
{
"attribute": "salesrep_id",
"alias": "salesrep_id",
"description": null,
"isKey": false
}
]
},
"{f}Orders.js": "",
"{d}LineItems": {
"{f}LineItems.json": {
"name": "LineItems",
"description": "LineItems of Order",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "LineItem",
"join": "\"order_number\" = [order_number]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": "\"product_number\" asc",
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "lineitem_id",
"alias": "lineitem_id",
"description": null,
"isKey": false
},
{
"attribute": "product_number",
"alias": "product_number",
"description": null,
"isKey": false
},
{
"attribute": "order_number",
"alias": "order_number",
"description": null,
"isKey": false
},
{
"attribute": "qty_ordered",
"alias": "qty_ordered",
"description": null,
"isKey": false
},
{
"attribute": "product_price",
"alias": "product_price",
"description": null,
"isKey": false
},
{
"attribute": "amount",
"alias": "amount",
"description": null,
"isKey": false
}
]
},
"{f}LineItems.js": "",
"{d}OrderAudits": {
"{f}OrderAudits.json": {
"name": "OrderAudits",
"description": "Audits of Order",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "purchaseorder_audit",
"join": "\"order_number\" = [order_number]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "audit_number",
"alias": "audit_number",
"description": null,
"isKey": false
},
{
"attribute": "order_number",
"alias": "order_number",
"description": null,
"isKey": false
},
{
"attribute": "amount_total",
"alias": "amount_total",
"description": null,
"isKey": false
},
{
"attribute": "paid",
"alias": "paid",
"description": null,
"isKey": false
},
{
"attribute": "notes",
"alias": "notes",
"description": null,
"isKey": false
},
{
"attribute": "audit_time",
"alias": "audit_time",
"description": null,
"isKey": false
},
{
"attribute": "customer_name",
"alias": "customer_name",
"description": null,
"isKey": false
}
]
},
"{f}OrderAudits.js": ""
},
"{d}Product": {
"{f}Product.json": {
"name": "Product",
"description": "Product for LineItem",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "product",
"join": "\"product_number\" = [product_number]",
"isCollection": false,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "product_number",
"alias": "product_number",
"description": null,
"isKey": false
},
{
"attribute": "name",
"alias": "name",
"description": null,
"isKey": false
},
{
"attribute": "price",
"alias": "price",
"description": null,
"isKey": false
},
{
"attribute": "icon",
"alias": "icon",
"description": null,
"isKey": false
},
{
"attribute": "full_image",
"alias": "full_image",
"description": null,
"isKey": false
}
]
},
"{f}Product.js": ""
}
}
}
},
"{d}CustomerJSOrdersREST": {
"{f}CustomerJSOrdersREST.json": {
"name": "CustomerJSOrdersREST",
"description": "RESTful Orders from a REST call\nMake a SQL Call for each customer and then make a REST call to another REST Endpoint to create a compound document resource.",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "customer",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "name",
"description": null,
"isKey": false
},
{
"attribute": "balance",
"alias": "balance",
"description": null,
"isKey": false
}
]
},
"{f}CustomerJSOrdersREST.js": "",
"{d}OrdersRest": {
"{f}OrdersRest.json": {
"name": "OrdersRest",
"description": "Make a REST call to another REST Endpoint (PurchaseOrders)t to create a compound document resource. Test this in the REST Lab",
"siblingRank": 100,
"resourceType": "JavaScript",
"isCollection": true,
"joinCondition": null
},
"{f}OrdersRest.js": "var url = req.baseUrl;\nlog.debug(url); // this is the base URL for this server\nurl = url.replace(\"/demo/\",\"/sample/\");// compute baseURL of target system\nurl = url + \"v1/orders\"; // add version/ resource endPoint on target\nvar key = containingRow.name; // containingRow is system supplied\nlog.debug(\"..using key: \" + key + \", and url: \" + url);\nkey = JSON.stringify(key, null, 0);\nvar params= {\n sysfilter: \"equal(customer_name:\" + key + \")\"\n};\n//special Auth Token in this project to allow access from url (?auth=AdminKey:1)\nvar settings = {\n headers: {\n Authorization: \"CALiveAPICreator AdminKey:1\"\n }\n}\n//////////// Built in utility to make REST GET call\nvar response = SysUtility.restGet(url, params, settings);\nreturn JSON.parse(response);\n"
}
},
"{d}Customers": {
"{f}Customers.json": {
"name": "Customers",
"description": "API example - illustrates attribute aliasing / projection",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "customer",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "Name",
"description": "",
"isKey": false
},
{
"attribute": "balance",
"alias": "Balance",
"description": "",
"isKey": false
},
{
"attribute": "credit_limit",
"alias": "CreditLimit",
"description": "",
"isKey": false
}
]
},
"{f}Customers.js": "",
"{d}Orders": {
"{f}Orders.json": {
"name": "Orders",
"description": "API example",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "PurchaseOrder",
"join": "\"customer_name\" = [name]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": "\"order_number\" desc",
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "order_number",
"alias": "OrderNumber",
"description": "",
"isKey": false
},
{
"attribute": "amount_total",
"alias": "TotalAmount",
"description": "",
"isKey": false
},
{
"attribute": "paid",
"alias": "Paid",
"description": "",
"isKey": false
},
{
"attribute": "notes",
"alias": "Notes",
"description": "",
"isKey": false
}
]
},
"{f}Orders.js": "",
"{d}LineItems": {
"{f}LineItems.json": {
"name": "LineItems",
"description": "API example",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "LineItem",
"join": "\"order_number\" = [order_number]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": "\"product_number\" asc",
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "product_number",
"alias": "ProductNumber",
"description": "",
"isKey": false
},
{
"attribute": "order_number",
"alias": "OrderNumber",
"description": "",
"isKey": false
},
{
"attribute": "qty_ordered",
"alias": "Quantity",
"description": "",
"isKey": false
},
{
"attribute": "product_price",
"alias": "Price",
"description": "",
"isKey": false
},
{
"attribute": "amount",
"alias": "Amount",
"description": "",
"isKey": false
}
]
},
"{f}LineItems.js": "",
"{d}Product": {
"{f}Product.json": {
"name": "Product",
"description": "Query for product",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "product",
"join": "\"product_number\" = [product_number]",
"isCollection": false,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "Name",
"description": "",
"isKey": false
},
{
"attribute": "price",
"alias": "Price",
"description": "",
"isKey": false
},
{
"attribute": "product_number",
"alias": "ProductId",
"description": "",
"isKey": false
}
]
},
"{f}Product.js": ""
}
}
}
},
"{d}MDBDemoCustomers": {
"{f}MDBDemoCustomers.json": {
"name": "MDBDemoCustomers",
"description": "Multiple Database join, see the relationships to children under Schema.",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "customer",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "name",
"description": null,
"isKey": false
},
{
"attribute": "balance",
"alias": "balance",
"description": null,
"isKey": false
},
{
"attribute": "credit_limit",
"alias": "credit_limit",
"description": null,
"isKey": false
},
{
"attribute": "comments",
"alias": "comments",
"description": null,
"isKey": false
}
]
},
"{f}MDBDemoCustomers.js": "",
"{d}financeOrders": {
"{f}financeOrders.json": {
"name": "financeOrders",
"description": null,
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "finance",
"entity": "orders",
"join": "customer_name = [name]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "cloned_from_order_ident",
"alias": "cloned_from_order_ident",
"description": null,
"isKey": false
},
{
"attribute": "ident",
"alias": "ident",
"description": null,
"isKey": false
},
{
"attribute": "ts",
"alias": "ts",
"description": null,
"isKey": false
},
{
"attribute": "amount_total",
"alias": "amountTotal",
"description": null,
"isKey": false
},
{
"attribute": "amount_discounted",
"alias": "amountDiscounted",
"description": null,
"isKey": false
},
{
"attribute": "amount_paid",
"alias": "amountPaid",
"description": null,
"isKey": false
},
{
"attribute": "amount_un_paid",
"alias": "amountNn_paid",
"description": null,
"isKey": false
},
{
"attribute": "is_ready",
"alias": "is_ready",
"description": null,
"isKey": false
},
{
"attribute": "approving_officer",
"alias": "approving_officer",
"description": null,
"isKey": false
},
{
"attribute": "officer_item_usage_approval",
"alias": "officer_item_usage_approval",
"description": null,
"isKey": false
},
{
"attribute": "unresolved_usage_count",
"alias": "unresolved_usage_count",
"description": null,
"isKey": false
}
]
},
"{f}financeOrders.js": ""
}
},
"{d}OrderLookupParent": {
"{f}OrderLookupParent.json": {
"name": "OrderLookupParent",
"description": "PUT this object to see LOOKUP in action.\n{ \"@metadata\": {\"action\":\"INSERT\"}, \"Customer\": { \"@metadata\": { \"action\":\"LOOKUP\", \"key\":\"Name\"}, \"Name\":\"Alpha and Sons\"}, \"Items\":[ { \"Product\": { \"@metadata\": {\"action\":\"LOOKUP\", \"key\":\"ProductName\"}, \"ProductName\":\"Hammer\"}, \"Quantity\": 1} ]}",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "PurchaseOrder",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "order_number",
"alias": "order_number",
"description": null,
"isKey": false
},
{
"attribute": "amount_total",
"alias": "amount_total",
"description": null,
"isKey": false
},
{
"attribute": "paid",
"alias": "paid",
"description": null,
"isKey": false
},
{
"attribute": "notes",
"alias": "notes",
"description": null,
"isKey": false
},
{
"attribute": "customer_name",
"alias": "customer_name",
"description": null,
"isKey": false
},
{
"attribute": "salesrep_id",
"alias": "salesrep_id",
"description": null,
"isKey": false
}
]
},
"{f}OrderLookupParent.js": "",
"{d}Customer": {
"{f}Customer.json": {
"name": "Customer",
"description": null,
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "customer",
"join": "\"name\" = [customer_name]",
"isCollection": false,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "Name",
"description": null,
"isKey": false
}
]
},
"{f}Customer.js": ""
},
"{d}Items": {
"{f}Items.json": {
"name": "Items",
"description": null,
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "LineItem",
"join": "\"order_number\" = [order_number]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "qty_ordered",
"alias": "Quantity",
"description": null,
"isKey": false
}
]
},
"{f}Items.js": "",
"{d}Product": {
"{f}Product.json": {
"name": "Product",
"description": null,
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "product",
"join": "\"product_number\" = [product_number]",
"isCollection": false,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "ProductName",
"description": null,
"isKey": false
},
{
"attribute": "price",
"alias": "Price",
"description": null,
"isKey": false
}
]
},
"{f}Product.js": ""
}
}
},
"{d}Products": {
"{f}Products.json": {
"name": "Products",
"description": "Query for all products",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "product",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "name",
"alias": "name",
"description": "",
"isKey": false
},
{
"attribute": "price",
"alias": "price",
"description": "",
"isKey": false
}
]
},
"{f}Products.js": ""
},
"{d}PurchaseOrders": {
"{f}PurchaseOrders.json": {
"name": "PurchaseOrders",
"description": "Query for all orders with line items",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "PurchaseOrder",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": null,
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "order_number",
"alias": "order_number",
"description": null,
"isKey": false
},
{
"attribute": "amount_total",
"alias": "amount_total",
"description": null,
"isKey": false
},
{
"attribute": "paid",
"alias": "paid",
"description": null,
"isKey": false
},
{
"attribute": "notes",
"alias": "notes",
"description": null,
"isKey": false
},
{
"attribute": "customer_name",
"alias": "customer_name",
"description": null,
"isKey": false
},
{
"attribute": "salesrep_id",
"alias": "salesrep_id",
"description": null,
"isKey": false
}
]
},
"{f}PurchaseOrders.js": "",
"{d}LineItems": {
"{f}LineItems.json": {
"name": "LineItems",
"description": "API example",
"siblingRank": 100,
"resourceType": "TableBased",
"prefix": "demo",
"entity": "LineItem",
"join": "\"order_number\" = [order_number]",
"isCollection": true,
"isCombined": false,
"filter": null,
"order": "\"product_number\" asc",
"useSchemaAttributes": false,
"attributes": [
{
"attribute": "lineitem_id",
"alias": "lineitem_id",
"description": null,
"isKey": false
},
{
"attribute": "product_number",
"alias": "product_number",
"description": null,
"isKey": false
},
{
"attribute": "order_number",
"alias": "order_number",
"description": null,
"isKey": false
},
{
"attribute": "qty_ordered",
"alias": "qty_ordered",
"description": null,
"isKey": false
},
{
"attribute": "product_price",
"alias": "product_price",
"description": null,
"isKey": false
},
{
"attribute": "amount",
"alias": "amount",
"description": null,
"isKey": false
}
]
},
"{f}LineItems.js": ""
}
},
"{d}PurchaseOrdersFreeSQL": {
"{f}PurchaseOrdersFreeSQL.json": {
"name": "PurchaseOrdersFreeSQL",
"description": "Using FreeSQL - you can create complex sql statements. This is a group by find sales reps with large quantity (>20) lineitem sales.",
"siblingRank": 100,
"resourceType": "FreeSQL",
"prefix": "demo",
"isCollection": true
},
"{f}PurchaseOrdersFreeSQL.sql": "SELECT sum(\"amount_total\") as SUM_AMOUNT\n ,\"salesrep_id\"\n FROM \"@{SCHEMA}\".\"PurchaseOrder\" o\n inner join \"@{SCHEMA}\".\"LineItem\" i\n on o.\"order_number\" = i.\"order_number\"\n where \"paid\" = true\n and i.\"product_number\" in\n (SELECT l.\"product_number\"\n FROM \"@{SCHEMA}\".\"LineItem\" l\n group by l.\"product_number\"\n having count(*) > 20)\n group by \"salesrep_id\"",
"{f}PurchaseOrdersFreeSQL.js": "row.foo = 'these reps have sold more than 20 items';\n"
}
}
},
"{d}rules": {
"{f}ReadMe.md": "This folder contains definitions for rules",
"{d}demo": {
"{f}ReadMe.md": "Rules for entities in prefix demo",
"{d}customer": {
"{f}?????????.json": {
"name": "?????????",
"isActive": true,
"ruleType": "validation",
"codeType": "JavaScript",
"errorMessage": "Customer {name}'s balance: {balance|#,##0.00} exceeds their credit limit: {credit_limit|#,##0.00}",
"problemAttributes": [],
"isAutoTitle": true,
"title": "Validation: return row.balance <= row.credit_limit;\n",
"comments": "balance cannot exceed credit limit, else throw exception",
"topics": [
"Check Credit"
]
},
"{f}?????????.js": "return row.balance <= row.credit_limit;\n",
"{f}event_ibuiu.json": {
"name": "event_ibuiu",
"isActive": false,
"ruleType": "event",
"asynchronous": false,
"appliesTo": {
"insert": true,
"update": true,
"delete": false
},
"codeType": "JavaScript",
"isAutoTitle": false,
"title": "Lookup city and state from zip code",
"comments": null,
"topics": []
},
"{f}event_ibuiu.js": "var detail = {\n filter: \"{_id: \\\"32751\\\"}\" ,\n order: \"\",\n pagesize: 30,\n offset: 0,\n verbose: false\n};\n\nvar response = SysUtility.getResource('zipcodes', detail);\nlog.debug(JSON.stringify(response,null,2));\nlog.debug(response[0].state);\nlog.debug(response[0].city);\n//log.debug(response[0].loc);",
"{f}sum_balance.json": {
"name": "sum_balance",
"isActive": true,
"ruleType": "sum",
"attribute": "balance",
"roleToChildren": "PurchaseOrderList",
"childAttribute": "amount_total",
"qualification": "paid = false",
"isJIT": false,
"isAutoTitle": true,
"title": "balance = sum(PurchaseOrderList.amount_total where paid = false)",
"comments": "A rule is like a spreadsheet cell formula... it *reacts\" to changes in referenced data...\n* increased when order placed\n* decreased when order deleted... or paid\n* adjusted when order changed... or assigned to a new customer",
"topics": [
"Check Credit"
]
}
},
"{d}LineItem": {
"{f}formula_amount.json": {
"name": "formula_amount",
"isActive": true,
"ruleType": "formula",
"attribute": "amount",
"codeType": "JavaScript",
"isJIT": false,
"isAutoTitle": false,
"title": "Discounted price*qty",
"comments": "Reactive Logic is expressed in JavaScript, so you use...\n- conditional logic (as above),\n- standard JavaScript services (e.g., moment date functions - enable in Project > Libraries),\n- SQL / external services.... whatever is required.",
"topics": [
"Check Credit"
]
},
"{f}formula_amount.js": "if (row.qty_ordered <= 6) // discount (using conditional JavaScript logic)\n return row.product_price * row.qty_ordered;\nelse\n return row.product_price * row.qty_ordered * 0.8;\n",
"{f}parentCopy_product_price.json": {
"name": "parentCopy_product_price",
"isActive": true,
"ruleType": "parentCopy",
"attribute": "product_price",
"roleToParent": "product",
"parentAttribute": "price",
"isAutoTitle": true,
"title": "product_price = parentcopy(product.price)",
"comments": "Parent copy means order unaffected by product price changes",
"topics": [
"Check Credit"
]
}
},
"{d}PurchaseOrder": {
"{f}event_naqnj.json": {
"name": "event_naqnj",
"isActive": true,
"ruleType": "event",
"asynchronous": false,
"appliesTo": {
"insert": false,
"update": true,
"delete": false
},
"codeType": "JavaScript",
"isAutoTitle": false,
"title": "Audit Purchase Order amount changes",
"comments": "row, logicContext passed in from engine; initialVerb is *client* action (e.g., POST), irrespective of subsequent updates (e.g., from item adjustments)\nearly events execute before reactive expressions, events execute after reactive expressions, commit events execute after all rows are processed",
"topics": [
"Audit Orders"
]
},
"{f}event_naqnj.js": "if (row.amount_total != oldRow.amount_total) {\n var newPurchaseorder_audit = logicContext.createPersistentBean(\"purchaseorder_audit\");\n newPurchaseorder_audit.amount_total = oldRow.amount_total; // set attributes from old values\n newPurchaseorder_audit.paid = oldRow.paid;\n newPurchaseorder_audit.customer_name = oldRow.customer_name;\n newPurchaseorder_audit.order_number = oldRow.order_number; // set the foreign key\n logicContext.insert(newPurchaseorder_audit); // saves (fires logic)\n}\n// better: re-use alternative using Loadable Libraries\n// if (row.amount_total != oldRow.amount_total)\n// SysLogic.insertChildFrom(\"purchaseorder_audit\", logicContext);",
"{f}sum_amount_total.json": {
"name": "sum_amount_total",
"isActive": true,
"ruleType": "sum",
"attribute": "amount_total",
"roleToChildren": "LineItemList",
"childAttribute": "amount",
"qualification": null,
"isJIT": false,
"isAutoTitle": true,
"title": "amount_total = sum(LineItemList.amount)",
"comments": "sum of line item amounts",
"topics": [
"Check Credit"
]
}
}
},
"{d}finance": {
"{f}ReadMe.md": "Rules for entities in prefix finance"
}
},
"{d}security": {
"{f}ReadMe.md": "This folder contains definitions for security",
"{d}authtokens": {
"{f}ReadMe.md": "This contains statically defined API Keys (Auth Tokens) for this project.\nDynamically created keys (using @authentication service) are NOT affected by these.",
"{f}Broad access.json": {
"name": "Broad access",
"authToken": "demo_full",
"description": null,
"userIdentifier": "sam",
"isActive": true,
"expiration": null,
"logging": "*=FINE",
"roles": [
"API Owner"
],
"globals": {}
},
"{f}Restricted access.json": {
"name": "Restricted access",
"authToken": "demo_restricted",
"description": null,
"userIdentifier": null,
"isActive": true,
"expiration": null,
"logging": null,
"roles": [
"API User"
],
"globals": {
"customerName": "Bravo Hardware"
}
},
"{f}SalesRep.json": {
"name": "SalesRep",
"authToken": "SalesRepApiKey",
"description": null,
"userIdentifier": "sam",
"isActive": true,
"expiration": null,
"logging": "*=FINE",
"roles": [
"Sales Rep"
],
"globals": {}
}
},
"{d}roles": {
"{f}ReadMe.md": "This contains Roles defined for the project.\nRoles define which server features are available and what the permissions\non each feature is enabled.",
"{f}API Documentation.json": {
"name": "API Documentation",
"description": "Full permissions on the entire API, special documentation role",
"defaultTablePermission": "A",
"defaultViewPermission": "A",
"globals": {},
"apiVisibility": {
"table": {
"isRestricted": false,
"restrictedTo": null
},
"view": {
"isRestricted": false,
"restrictedTo": null
},
"resource": {
"isRestricted": false,
"restrictedTo": null
},
"procedure": {
"isRestricted": false,
"restrictedTo": null
},
"metatable": {
"isRestricted": false,
"restrictedTo": null
},
"function": {
"isRestricted": false,
"restrictedTo": null
}
},
"entityPermission": {},
"functionPermission": null
},
"{f}API Owner.json": {
"name": "API Owner",
"description": "Full permissions on the entire API",
"defaultTablePermission": "A",
"defaultViewPermission": "A",
"globals": {},
"apiVisibility": {
"table": {
"isRestricted": false,
"restrictedTo": null
},
"view": {
"isRestricted": false,
"restrictedTo": null
},
"resource": {
"isRestricted": false,
"restrictedTo": null
},
"procedure": {
"isRestricted": false,
"restrictedTo": null
},
"metatable": {
"isRestricted": false,
"restrictedTo": null
},
"function": {
"isRestricted": false,
"restrictedTo": null
}
},
"entityPermission": {},
"functionPermission": null
},
"{f}API User.json": {
"name": "API User",
"description": "Limited permissions on the entire API",
"defaultTablePermission": "N",
"defaultViewPermission": "N",
"globals": {},
"apiVisibility": {
"table": {
"isRestricted": true,
"restrictedTo": []
},
"view":