liveapicreator-cli v5.2.2
LiveAPICreatorCLI
A command-line tool to access CA Live API Creator REST API and Logic services. Refer to online documentation of creating and using Live API Creator REST API
Installation
git clone https://github.com/EspressoLogicCafe/liveapicreator-devops.git
cd liveapicreator-devops
Select one of three directories (platform: windows, linux, and macos) and copy the 'lac' and 'lacadmin' to your
path where you intend to run your scripts.
Features
- Log in once per server, stay "logged in" for the lifetime of the API key
- Can call GET, POST, PUT and DELETE
- Can read/write objects from/to file or stdin (suitable for pipe work!)
Command Line Service
Usage: lac [options] [command]
Commands:
login [options] <url> Login to an API Server
logout [options] [url] Logout from the current server, or a specific server
use <alias> Use the specified server by default
status Show the current server, and any defined server aliases
get [options] <resource> Retrieve some data for the given resource/table/view
post [options] <resource> Insert some data
put [options] <resource> Update some data
delete [options] <resource> Delete some data
putdata [options] <resource> Update a single row with an upload to a file to a named attribute (-k <key> -c <attr> -f foo.jpg)
describe [options] <resource> Describe the specified resource, can be: tables[/tablename], views[/viewname], resources, functions, license, serverinfo
schema [options] <list|swagger|export> Administer API project options for an account.
Options:
-h, --help output usage information
-V, --version output the version number
Logon to an API Server
$lac login -u demouser -p mypassword http://localhost:8080/rest/default/demo/v1
Logging in...
This server licensed to: Live API Creator
Login successful, API key will expire on: 2015-11-18T15:03:37.342Z
See which API server (if any) you are logged into
$lac status
You are currently logged in to server: https://localhost:8080/rest/default/demo/v1 as user: demo
Defined aliases:
┌───────┬───────────────────────────────────────────────────────────┬───────┐
│ Alias │ Server │ User │
├───────┼───────────────────────────────────────────────────────────┼───────┤
│sample │ https://localhost:8080/rest/default/sample/v1 │sample │
├───────┼───────────────────────────────────────────────────────────┼───────┤
│ demo │ https://localhost:8080/rest/default/demo/v1 │ demo │
└───────┴───────────────────────────────────────────────────────────┴───────┘
DESCRIBE a system resource
This can return information about all tables, or one specific table, or all views/one specific view, or get information about the server or the server's license. The possible values for the resource are:
- tables
- tables/<table-name>
- views
- views/<view-name>
- license
- serverinfo
$lac describe tables
DB Table
---- -------------------
demo customer
demo employee
demo employee_picture
demo LineItem
demo product
demo PurchaseOrder
demo purchaseorder_audit
$lac describe tables/product
Name Type Size PK
-------------- ------- -------- --
product_number BIGINT 19 *
name VARCHAR 50
price DECIMAL 19
icon BLOB 65535
full_image BLOB 16777215
GET
Usage: get <resource> [options]
Options:
-h, --help output usage information
-k, --pk <pk> Optional: primary key of the object to retrieve
-f, --sysfilter <sysfilter> Optional: sysfilter, e.g. "less(balance:1000) or equal(name:'SomeName')
-s, --sysorder <sysorder> Optional: sorting sysorder, e.g. "(balance asc,name desc_uc)"
-g, --userfilter <named filter> Optional: named filter, e.g. "namedFilter(columnName:'SomeName')
-t, --userorder <named order> Optional: named sorts, e.g. "namedSort([columnName])"
-z, --pagesize <pagesize> Optional: up to how many rows to return per level
-m, --format <format> Optional: format of output, either text (default), json or compactjson --truncate <length>
-a, --serverAlias <serverAlias> Optional: alias of the server to use if other than the current default server
Get a single REST endpoint (compressed format)
$lac get demo:employee
demo:employee/1 employee_id:1 login:sam name:Sam Yosemite
demo:employee/2 employee_id:2 login:mlittlelamb name:Mary Little-Lamb
demo:employee/3 employee_id:3 login:sconnor name:Sarah Connor
demo:employee/4 employee_id:4 login:jkim name:John Kim
demo:employee/5 employee_id:5 login:bmcmanus name:Becky McManus
etc...
GET a single REST endpoint (JSON format)
$lac get employee/4 -m json
[
{
"@metadata": {
"href": "http://localhost:8080/rest/default/demo/v1/demo:employee/4",
"checksum": "A:3ed29188014675ec",
"links": [
{
"href": "http://llocalhost:8080/rest/default/demo/v1/demo:employee_picture?filter=employee_id%20%3D%204",
"rel": "children",
"role": "employee_pictureList",
"type": "http://localhost:8080/rest/default/demo/demo:employee_picture"
},
{
"href": "http://localhost:8080/rest/default/demo/v1/demo:PurchaseOrder?filter=salesrep_id%20%3D%204",
"rel": "children",
"role": "PurchaseOrderList",
"type": "http://llocalhost:8080/rest/default/demo/demo:PurchaseOrder"
}
]
},
"employee_id": 4,
"login": "jkim",
"name": "John Kim"
}
]
$lac get demo:customer --userfilter "myFilter(custname:'Alpha and Sons')" --userorder "sortByName"
POST (insert) a JSON payload
$lac post --help
Usage: post <resource> [options]
Options:
-h, --help output usage information
-j, --json <json> JSON for the data being inserted
-f, --jsonfile <jsonfile> Name of a file containing JSON to be inserted, or stdin to read from stdin
-m, --format <format> Optional: format of output, either text (default), json or compactjson
-a, --serverAlias <serverAlias> Optional: alias of the server to use if other than the current default server
$lac post customer -j '{ "name": "new posted record","balance": 0,"credit_limit": 9000 }'
POST for customer:
I demo:customer/new%20posted%20record name:new posted record balance:0 credit_limit:9000
Request took: 61ms - # objects touched: 1
PUT (update) a JSON Payload
$lac put --help
Usage: put <resource> [options]
Options:
-h, --help output usage information
-j, --json <json> JSON string for the data being updated
-f, --jsonfile <jsonfile> Name of a file containing JSON to be updated, or stdin to read from stdin
-m, --format <format> Optional: format of output, either text (default), json or compactjson
-a, --serverAlias <serverAlias> Optional: alias of the server to use if other than the current default server
$ liveapicreator put customer -j '{ "@metadata": {"checksum": "A:693190f461f5402e" }, "name": "new posted record", "credit_limit": 8000 }'
PUT for customer:
U demo:customer/new%20posted%20record name:new posted record balance:0 credit_limit:8000
Request took: 42ms - # objects touched: 1
note: you can replace the checksum value with "override" - but this overrides optimistic locking so use it wisely.
DELETE a REST resource
Required fields are the primary key (--pk ) and checksum (--checksum )
$lac delete --help
Usage: delete <resource> [options]
Options:
-h, --help output usage information
-k, --pk <pk> Primary key of the object to delete
--checksum <checksum> Optional: checksum for the object to delete, or "override". If not specified, the object will be retrieved then deleted.
-f, --jsonfile <jsonfile> Optional: name of a file containing JSON to be deleted, or stdin to read from stdin
-m, --format <format> Optional: format of output, either text (default), json or compactjson
-a, --serverAlias <serverAlias> Optional: alias of the server to use if other than the current default server
liveapicreator delete customer -k "new posted record" --checksum "A:e86aea2e0a4e74bf"
Logout
$lac logout
Logout successful
6 years ago
6 years ago
6 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago