https://github.com/espressologiccafe/caliveapicreatorcli
A complete Node.js command-line interface for Layer7 Live API Creator REST API services
https://github.com/espressologiccafe/caliveapicreatorcli
api-client command-line-tool nodejs nodejs-framework
Last synced: 4 months ago
JSON representation
A complete Node.js command-line interface for Layer7 Live API Creator REST API services
- Host: GitHub
- URL: https://github.com/espressologiccafe/caliveapicreatorcli
- Owner: EspressoLogicCafe
- Created: 2014-11-13T20:37:39.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2020-06-26T13:54:57.000Z (over 5 years ago)
- Last Synced: 2025-09-04T11:58:51.455Z (4 months ago)
- Topics: api-client, command-line-tool, nodejs, nodejs-framework
- Language: JavaScript
- Homepage: http://www.ca.com/us/products/ca-live-api-creator.html
- Size: 31.3 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# LiveAPICreatorCLI
A command-line tool to access Layer7 Live API Creator REST API and Logic services.
Refer to online documentation of creating and using Live API Creator [REST API](https://docops.ca.com/ca-live-api-creator/5-2/en/)
## Installation
```aidl
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
```sh
Usage: lac [options] [command]
Commands:
login [options] Login to an API Server
logout [options] [url] Logout from the current server, or a specific server
use Use the specified server by default
status Show the current server, and any defined server aliases
get [options] Retrieve some data for the given resource/table/view
post [options] Insert some data
put [options] Update some data
delete [options] Delete some data
putdata [options] Update a single row with an upload to a file to a named attribute (-k -c -f foo.jpg)
describe [options] Describe the specified resource, can be: tables[/tablename], views[/viewname], resources, functions, license, serverinfo
schema [options] Administer API project options for an account.
Options:
-h, --help output usage information
-V, --version output the version number
```
## Logon to an API Server
```sh
$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
```sh
$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
```sh
$lac describe tables
DB Table
---- -------------------
demo customer
demo employee
demo employee_picture
demo LineItem
demo product
demo PurchaseOrder
demo purchaseorder_audit
```
```sh
$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
```sh
Usage: get [options]
Options:
-h, --help output usage information
-k, --pk Optional: primary key of the object to retrieve
-f, --sysfilter Optional: sysfilter, e.g. "less(balance:1000) or equal(name:'SomeName')
-s, --sysorder Optional: sorting sysorder, e.g. "(balance asc,name desc_uc)"
-g, --userfilter Optional: named filter, e.g. "namedFilter(columnName:'SomeName')
-t, --userorder Optional: named sorts, e.g. "namedSort([columnName])"
-z, --pagesize Optional: up to how many rows to return per level
-m, --format Optional: format of output, either text (default), json or compactjson --truncate
-a, --serverAlias Optional: alias of the server to use if other than the current default server
```
## Get a single REST endpoint (compressed format)
```sh
$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)
```sh
$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
```sh
$lac post --help
Usage: post [options]
Options:
-h, --help output usage information
-j, --json JSON for the data being inserted
-f, --jsonfile Name of a file containing JSON to be inserted, or stdin to read from stdin
-m, --format Optional: format of output, either text (default), json or compactjson
-a, --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
```sh
$lac put --help
Usage: put [options]
Options:
-h, --help output usage information
-j, --json JSON string for the data being updated
-f, --jsonfile Name of a file containing JSON to be updated, or stdin to read from stdin
-m, --format Optional: format of output, either text (default), json or compactjson
-a, --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 )
```sh
$lac delete --help
Usage: delete [options]
Options:
-h, --help output usage information
-k, --pk Primary key of the object to delete
--checksum Optional: checksum for the object to delete, or "override". If not specified, the object will be retrieved then deleted.
-f, --jsonfile Optional: name of a file containing JSON to be deleted, or stdin to read from stdin
-m, --format Optional: format of output, either text (default), json or compactjson
-a, --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
```sh
$lac logout
Logout successful
```