aiM18 Developer Center aiM18 Developer Center
DOC Home
  • Platform

    • Overview
    • Frontend Framework
    • Backend Framework
    • EBI Development
    • JSF Components
    • BPM Extension Interface
    • Telescope Extension Interface
    • Mobile App Setup
  • ERP

    • ERP EJB Interfaces
    • ERP XML Config Files
    • ERP Decorators (Frontend Interfaces)
  • Tutorial

    • Setup Development Environment
    • Sample App
  • Platform

    • Authentication
    • Common JSON Objects
    • Core Services
    • EBI Services
  • Enterprise Resource Planning
  • Human Capital Management
  • Business Process Management
  • Schedule Management
  • Document Management
  • Tutorial

    • Interacting with aiM18 via webservices
Tutorial
GitHub (opens new window)
DOC Home
  • Platform

    • Overview
    • Frontend Framework
    • Backend Framework
    • EBI Development
    • JSF Components
    • BPM Extension Interface
    • Telescope Extension Interface
    • Mobile App Setup
  • ERP

    • ERP EJB Interfaces
    • ERP XML Config Files
    • ERP Decorators (Frontend Interfaces)
  • Tutorial

    • Setup Development Environment
    • Sample App
  • Platform

    • Authentication
    • Common JSON Objects
    • Core Services
    • EBI Services
  • Enterprise Resource Planning
  • Human Capital Management
  • Business Process Management
  • Schedule Management
  • Document Management
  • Tutorial

    • Interacting with aiM18 via webservices
Tutorial
GitHub (opens new window)
  • base

    • Authentication
    • Common JSON Objects
    • Core Services
      • CRUD Web Services of Entities
        • Create Entity
        • HTTP Request
        • Parameters
        • Result
        • Read Entity
        • HTTP Request
        • Parameters
        • Result
        • Save Entity
        • HTTP Request
        • Parameters
        • Simplified Entity JSON
        • Result
        • Delete Entity
        • HTTP Request
        • Parameters
        • Result
      • Get ID by Code Web Service
        • HTTP Request
        • Parameters
        • Result
      • Data Search Web Service
        • HTTP Request
        • Parameters
        • Condition Detail
        • Result
      • Attachment Web Services
        • Get Attachment List
        • HTTP Request
        • Parameters
        • Result
        • Get Attachment File
        • HTTP Request
        • Parameters
        • Result
        • Upload Attachment File
        • HTTP Request
        • Parameters
        • Result
        • Method to Transfer File Password
      • Alert Web Services
        • Get Alert List
        • HTTP Request
        • Parameters
        • Get Alert List by User ID
        • HTTP Request
        • Parameters
        • Result
        • Get Alert
        • HTTP Request
        • Parameters
        • Result
      • Announcement Web Services
        • Get Announcement List
        • HTTP Request
        • Parameters
        • Result
        • Get Announcement
        • HTTP Request
        • Parameters
        • Result
        • Telescope - Get Related Records
        • HTTP Request
        • Parameters
        • Result
        • Telescope - Get Result by Voice command
        • HTTP Request
        • Parameters
        • Result
      • Document Printing Web Services
        • Fetch PDF File
        • HTTP Request
        • Parameters
        • Result
      • Upload Image Web Services
        • HTTP Request
        • Parameters
        • Result
      • Save Draft Web Services
        • HTTP Request
        • Parameters
        • Simplified Entity JSON
        • Result
    • Enduser-driven Business Intelligence
    • Error Code Description
  • Business Process Management

    • Business Process Management
  • Schedule Management

    • Schedule Management
  • Document Management System

    • Document Management System
  • Enterprise Resource Planning

    • README for ERP
    • Master Data
    • Sales
    • Purchase
    • Stock
    • Consignment
    • Subcontract
    • Production
    • Retail
    • Retail Stored Value
    • Warehouse Management Solution
    • Retail and Third-Party Logistics
    • Trading and Finance
    • Accounting
    • Accounting EBI
  • Human Capital Management

    • README for HCM
    • Attendance Management
    • Hong Kong Labour Law Compliance
    • Leave Management
    • Organization And Personnel Management
    • Payroll Management
    • PRC Labour Law Compliance
    • Appraisal Management
    • Attendance
    • Casual Labour
    • Personnel
    • Leave
    • Medical Claim Management
    • Payroll
    • Recruitment
    • Training & Sponsorship
  • Web Services
  • base
Multiable
2024-02-23
目录

Core Services

Version: 1.0 | Release Date: 14/8/2018

# CRUD Web Services of Entities

An entity means a record in a aiM18 module, the following web services related to entities are provided:

  • Create
  • Read
  • Update
  • Delete

# Create Entity

Get an empty SqlEntity of a specific module.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/entity/create/employee?menuCode=employee")
  .post()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

POST http://[server]/jsf/rfws/entity/create/[module]?menuCode=[menuCode]

# Parameters

Name Type Description
authorization String(Header) Required. Access token obtained via OAuth
client_id String(Header) Required. Client ID in aiM18 [OAuth Applications]
module String(Path) Required. Module type, can be found in data dictionary.
menuCode String(Query) Required. Menu code, such as 'employee', can be found in data dictionary.
param json String(Query) Additional parameters for special actions.

# Result

If API runs success, status of the response will be 200, then it will return an empty SqlEntity. If API runs failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body An empty SqlEntity
fail Header(error_id=1) Multiple errors with JSON array format
fail Header(error_info) A CheckMsg JSON array

# Read Entity

Get an existing SQLEntity of a specific module.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/entity/read/employee?menuCode=employee&id=1")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/entity/read/[module]?menuCode=[menuCode]&id=[id]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via OAuth
client_id String(Header) Required. Client ID in aiM18 [OAuth Applications]
module String(Path) Required. Module type, such as 'employee', can be found in data dictionary
menuCode String(Query) Required. Menu code, such as 'employee', can be found in data dictionary
id long(Query) Required. ID of the entity.
param json String(Query) Additional parameters for special actions
iRev int(Query) If you want to read the old version of the entity, please set this value. If you want to read a delete entity, please set the id and iRev of the delete entity.

# Result

If API runs success, status of the response will be 200, then it will return a correct SqlEntity of this module. If API runs failed, status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body A correct SqlEntity
fail Header(error_id=1) Multiple errors with JSON array format
fail Header(error_info) A CheckMsg JSON array

# Save Entity

Save a SqlEntity to a specific module.

OkHttpClient client = new OkHttpClient();

MediaType jsonMT = MediaType.parse("application/json; charset=utf-8");
RequestBody rb = RequestBody.create(jsonMT, 
                 "[Simplified Entity JSON]" or "array of [Simplified Entity JSON]");

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/entity/s/save/employee?menuCode=employee")
  .put(formBody)
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

PUT http://[server]/jsf/rfws/entity/s/save/[module]?menuCode=[menuCode]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via OAuth
client_id String(Header) Required. Client ID in aiM18 [OAuth Applications]
module String(Path) Required. Module type,such as 'employee', can be found in data dictionary.
menuCode String(Query) Required. Menu code, such as 'employee', can be found in data dictionary.
param jsonString(Query) Additional parameters for special actions.
entity jsonString(Query) The Simplified Entity JSON, structure please refer to the below. Notice that the JSON need to be URL Encoded.
entitys_in_entity String(Body) The Simplified Entity JSON, structure please refer to the below. It is recommended to pass entity JSON in request body.If you want to handle more entitys, please pass an array of Simplified Entity JSON.
autoSubmit boolean(Query) If the value is true, the system will submit the record automatically.

# Simplified Entity JSON

{
	"employeepic": {
		"values": []
	},
	"employee_attach": {
		"values": []
	},
	"employee": {
		"values": [
          {"code": "000171","desc": "abcd"}
        ]
	}
}
  • The JSON contains objects of different tables in a module, each table contains a "values" JSON array to specify the value of each field in the table.
  • The main table of a module is compulsory. For which table is main users can refer to data dictionary.
  • If a table or the value for a field are not provided, they will not be saved.

# Result

If API runs success, status of the response will be 200, then it will return a correct id of this SqlEntity. If API run failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body ID of the saved SqlEntity
fail Header(error_id=1) Multiple errors with JSON array format
fail Header(error_info) A CheckMsg JSON array

# Delete Entity

Delete a SqlEntity from a specific module.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/entity/delete/employee?menuCode=employee&id=1")
  .delete()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

DELETE http://[server]/jsf/rfws/entity/delete/[module]?menuCode=[menuCode]&id=[id]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via OAuth
client_id String(Header) Required. Client ID in aiM18 [OAuth Applications]
module String(Path) Required. Module type,such as 'employee', can be found in data dictionary
menuCode String(Query) Required. Menu code, such as 'employee', can be found in data dictionary
id long(Query) Required. ID of the entity
param json String(Query) Additional parameters for special actions

# Result

If API runs success, status of the response will be 200. If API runs failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Status Status is 200
fail Header(error_id=1) Multiple errors with JSON array format
fail Header(error_info) A CheckMsg JSON array

# Get ID by Code Web Service

Get entity ID using record's code in a module.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/entity/getIdByCode/employee?menuCode=employee&code=001")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/entity/getIdByCode/[module]?menuCode=[menuCode]&code=[record code]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via OAuth
client_id String(Header) Required. Client ID in aiM18 [OAuth Applications]
module String(Path) Required. Module type, such as 'employee', can be found in Data Dictionary.
menuCode String(Query) Menu code of the editor, can be found in Data Dictionary.
code string(Query) Required. The code of the record.
beId int(Query) If the module is BE specific, need to provide the beID. BE means Business Entity in aiM18, which is a [Department] record with BE check box ticked.

# Result

If API runs success, status of the response will be 200, then it will return a JSON object. The JSON object includes id, withRight and withMulti. The type of id is long. The type of withRight and withMulti is boolean. When withRight is true, it means the current user can visit this record. When withMulti is true, it means two or more records are using this code.

If API runs failed, status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body A JSON object includes the ID, withRight and withMulti.
fail Header(error_id=1) Multiple errors with JSON array format
fail Header(error_info) A CheckMsg JSON array

# Data Search Web Service

Search data in aiM18 using lookup type.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/search/search?stSearch=employee&startRow=1&endRow=10")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/search/search?stSearch=[stSearchName]&startRow=[startRow]&endRow=[endRow]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via OAuth
client_id String(Header) Required. Client ID in aiM18 [OAuth Applications]
stSearch String(Query) Required. Lookup type, such as 'employee', can be found in Data Dictionary or UDF Lookup.
startRow int(Query) The start row of the search
endRow int(Query) The end row of the search
beId long(Query) If the search is BE specific, beId need to input
formatId long(Query) Search format ID
conds String(Query) Please check Condition Detail
sorts String(Query) Sort Fields ,split by ";". If not ascending, please use "!"; Example:"code;!desc"
resultFields String(Query) If you want to return some fields value, please this parameter.
lookupField boolean(Query) If the value is true, then the result data will be no expired,no locked, and approved.
quickSearchStr String(Query) If you want to use quick search ,please set this value.
fieldDesc boolean(Query) If the value is true, the will return the field's name and mess value.
viewDeleted boolean(Query) If you want to search the data already be deleted, Please use this value true.

# Condition Detail

Conds Format:

Id=lessThan=5=and=id=largerOrEqual=3=or=(name=contains =ss=or=name=contains=bb)

Which means:

Id<5 and id >=3 or (name like ‘%ss%’ or name like ‘%bb%’)

**Please use these formats to write the conds: **

("equal", "="),

("unequal", "<>"),

("largerThan", ">"),

("lessThan", "<"),

("largerOrEqual", ">="),

("lessOrEqual", "<="),

("contains", "like"),

("doseNotContain", "notlike"),

("in", "in"),

("notIn", "notin"),

("startWith", "like"),

("endWith", "like");

# Result

If API runs success, status of the response will be 200, then it will return a SqlTable . If API runs failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body A SqlTable
fail Header(error_info) A CheckMsg JSON array

# Attachment Web Services

# Get Attachment List

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/attach/getAttach?module=dept&stSearch=dept&code=ADMIN")
  .get()
  .addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://127.0.0.1:8080/jsf/rfws/attach/getAttach?module=[module Name]&stSearch=[stSearch code]&code=[recod's code]

# Parameters

Name Type Description
authorization string(Header) Required. Access Token obtained via Oauth2
client_id string(Header) Required. When registered in [OAuth Applications], generated by the aiM18
module string(Query) Required. TargetFM/transaction record’s module code
code string(Query) Required. TargetFM/transaction record’s code
stSearch string(Query) default= module, StSearchinfo, for system usage
beId long(Query) If the module is BE specific, need to provide the beID. BE means Business Entity in aiM18, which is a [Department] record with BE check box ticked.

# Result

Type Location(error_id) Description
success Body A json array

json array example

[
	{"needPassword":"false",
	"code":"M18_GZWZ2017050801-FIXED.docx",
	"fileSize":823092.0,
	"author":"admin",
	"createUser":"admin",
	"remark":"",
	"id":9,
	"createUid":5,
	"desc":"M18_GZWZ2017050801-FIXED",
	"createDate":"2017/07/04 10:52:25",
	"tags":""},

	{"needPassword":"true",
	"code":"M18_GZWZ2017051801.docx",
	"fileSize":108683.0,
	"author":"admin",
	"createUser":"admin",
	"remark":"",
	"id":10,
	"createUid":5,
	"desc":"M18_GZWZ2017051801",
	"createDate":"2017/07/04 10:52:25",
	"tags":""}
]


Parameter Name Meaning
id ID of the attachment
code Code of the attachment
desc Title of the attachment
fileSize File size of the attachment
author Author of the attachment
tags Tags of the attachment
remark Remark of the attachment
createUser Create User’s username of the attachment
createUid Create User’s ID of the attachment
createDate Date of create of the attachment
needPassword Whether the file is encrypted with password or not. *

# Get Attachment File

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/attach/getFile?module=dept&stSearch=dept&code=ADMIN&id=10")
  .get()
  .addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://127.0.0.1:8080/jsf/rfws/attach/getFile?module=[module Name]&stSearch=[stSearch code]&code=[recod's code]&id=[Attachment ID]

# Parameters

Name Type Description
authorization string(Header) Required. Access Token obtained via Oauth2
client_id string(Header) Required. When registered in [OAuth Applications], generated by the aiM18
module string(Query) Required. TargetFM/ transaction record’s module code
stSearch string(Query) default= module, StSearchinfo, for system usage
code string(Query) TargetFM/ transaction record’s code
Id string(Query) Required. Attachment ID
password string(Query) Required when the file is encrypted with password. Password of the attachment. This password needs to be encrypted.

# Result

If API runs success, status of the response will be 200, then it will return a file. If API runs failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body A file
fail Header(error_info) A CheckMsg JSON array

# Upload Attachment File

OkHttpClient client = new OkHttpClient();
File file = new File("C:\\script.txt");
MediaType mt = MediaType.parse("application/octet-stream");
RequestBody rb = RequestBody.create(mt, file);

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/attach/upload?module=dept&stSearch=dept&code=ADMIN&fileName=script.text&title=attachment&author=aa&tags=program;aiM18;script&remark=aabbcc")
  .post(rb)
  .addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

POST http://127.0.0.1:8080/jsf/rfws/attach/upload?module=[module Name]&stSearch=[stSearch code]&code=[recod's code]&fileName=[Attachment’s filename]&title=[file name]&author=[user name]&tags=[tags]&remark=[remark]

# Parameters

Name Type Description
authorization string(Header) Required. Access Token obtained via Oauth2
client_id string(Header) Required. When registered in [OAuth Applications], generated by the aiM18
module string(Query) Required. TargetFM/ transaction record’s module code
stSearch string(Query) default = module, StSearchinfo, for system usage
code string(Query) TargetFM/transaction record’s code
fileName string(Query) Required. Attachment’sfilename
title string(Query) Required. Filename (will be used as attachment code as in current system logic)
author string(Query) default = current user’s username. Author of the attachment
tags string(Query) Tags of the attachment
remark string(Query) Remark of the attachment
overwrite boolean(Query) Whether replace the first attachment of the same file name in the record. If set to true, it will search the current attachment list, and replace the first matched attachment with the same attachment code. If set to false, it will always append to the attachment list
password string(Query) Password is needed to encrypt or not. *
beId long(Query) If the module is BE specific, need to provide the beID. BE means Business Entity in aiM18, which is a [Department] record with BE check box ticked.

# Result

If API runs success, status of the response will be 200. If API runs failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body status 200
fail Header(error_info) A CheckMsg

# Method to Transfer File Password

Note that the attachment module supports password encryption to the file. If a user would like to pass the password to encrypt or decrypt the file, the user needs to first encrypt the password for security purpose. Our system uses AES mode to encrypt the password for web service transmission.

Here are the example codes:

	private static Key aesKey = new SecretKeySpec("Mac02017Dms02017".getBytes(), "AES");

	public static String encryptDmsTransferPassword(String password) {
		try {
			Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
			// encrypt the text
			cipher.init(Cipher.ENCRYPT_MODE, aesKey);
			byte[] encrypted = cipher.doFinal(password.getBytes());
			return DatatypeConverter.printHexBinary(encrypted);
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
	}

# Alert Web Services

# Get Alert List

Get system alert list.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/sysAlert/getList?rowLimit=10&page=1&readMode=2")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/sysAlert/getList?rowLimit=[no. of row]&page=[pagination]&readMode=[readMode]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via Oauth2
client_id String(Header) Required. When registered in [OAuth Applications], generated by the aiM18
rowLimit int(Query) No. of row, default = 5
page int(Query) Pagination of the alert list, default = 1
readMode int(Query) readMode 0 = all, 1 = read, 2 = unread
count boolean(Query) if count is true, then it will return the count of alert

# Get Alert List by User ID

Get system alert list by user ID.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/sysAlert/getAlertList?uid=1&rowLimit=10&page=1")
  .post()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

POST http://[server]/jsf/rfws/sysAlert/getAlertList?uid=[uid]&rowLimit=[no. of row]&page=[pagination]&readMode=[readMode]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via Oauth2
client_id String(Header) Required. When registered in [OAuth Applications], generated by the aiM18
uid long(Query) Required. User ID
rowLimit int(Query) No. of row, default = 5
page int(Query) Pagination of the alert list, default = 1
readMode int(Query) readMode 0 = all, 1 = read, 2 = unread
count boolean(Query) if count is true, then it will return the count of alert

# Result

If API runs success, it will return a SqlTable. If count is true, then will return the count of alert.

Location Description
Body A sqlTable json string
Header If count is true, then will return the count of alert.

# Get Alert

Get system alert.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/sysAlert/get?alertId=1")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/sysAlert/getList?alertId=[id of alert record]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via Oauth2
client_id String(Header) Required. When registered in [OAuth Applications], generated by the aiM18
alertId long(Path) Required. id of alert record

# Result

If API runs success, it will return a SqlTable.

Location Description
Body A SqlTable JSON string

# Announcement Web Services

# Get Announcement List

Get system announcement list.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/ancm/getAncmList?page=1&pageSize=50&orderField=ancmDate&orderAsc=DESC&readMode=0")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/ancm/getAncmList?page=[pagination]&pageSize=[pageSize]&orderField=[order field]&orderAsc=[order type]&readMode=[read mode]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via Oauth2
client_id String(Header) Required. When registered in [OAuth Applications], generated by the aiM18
pageSize int(Path) Required. Page size
page int(Query) Required. Pagination of the announcement list
readMode int(Query) ReadMode 0 = all, 1 = read, 2 = unread
orderField string(Query) Which field use to sort.
orderAsc String(Query) Sort type, the value can be ASC or DESC. DESC is default.
excludeIds String(Query) Exclude some announcements using this value. It can be one id, or more ids. If two or more ids, id must separate with ,
getCount boolean(Query) If getCount is true ,then it will return the count of announcement
quickSearch String(Query) if this value is not empty, it can used to search the title, public date and importance

# Result

If API runs success, it will return a SqlTable. If getCount is true, then it will return the count of the announcement list. If getCount is false, then it will return the information of the announcement list.

Location Description
Body A SqlTable JSON string

# Get Announcement

Get system announcement.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/ancm/read?ancmId=1")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/ancm/read?ancmId=[id of announcementrecord]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via Oauth2
client_id String(Header) Required. When registered in [OAuth Applications], generated by the aiM18
ancmId long(Path) Required. id of announcement record

# Result

If API runs success, status of the response will be 200, then it will return a SqlEntity. If API runs failed, status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON from the response header with key word 'error_info'.

Type Location Description
success Body A SqlEntity JSON string
fail Header(error_info) A CheckMsg JSON array

# Telescope - Get Related Records

Given a record, return all other records associated with this record.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/telescope/getRelatedRecord/user/2")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/telescope/getRelatedRecord/{lookupType}/{recordId}

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via Oauth2
client_id String(Header) Required. When registered in [OAuth Applications], generated by the aiM18
lookupType String(Path) Required. Search Type
recordId long(Path) Required. id of source record

# Result

If API runs success, status of the response will be 200, then it will return a JSON. If API runs failed, status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON from the response header with key word 'error_info'.

[
    {
        "ids": [
            1,
            114
        ],
        "lastModifyDate": 1553229061000,
        "module": "dept",
        "moduleDisplay": "Department"
    },
    {
        "ids": [
            182,
            120
        ],
        "lastModifyDate": 1555925150000,
        "module": "employee",
        "moduleDisplay": "Employee"
    }
]
Type Location Description
success Body A SqlEntity JSON string
fail Header(error_info) A CheckMsg JSON array

# Telescope - Get Result by Voice command

Telescope NPL trigger, return matched telescope results according to Mobile App Setup.

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/telescope/telescopeNlp?tags=staff&tags=Jacky")
  .get()
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

GET http://[server]/jsf/rfws/telescope/telescopeNlp?tags={keyword}

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via Oauth2
client_id String(Header) Required. When registered in [OAuth Applications], generated by the aiM18
tags String(Query) Required. Search Keyword

# Result

If API runs success, status of the response will be 200, then it will return a JSON. If API runs failed, status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON from the response header with key word 'error_info'.

{
    "stSearch": "employee",
    "formatFieldDesc": {
        "code": "",
        "desc__lang": "Name(Current Language)",
        "iRev": "Inner Version",
        "lastModifyDate": "Last Modified Time",
        "employee.lastModifyUid.simpleUser.desc__lang": "Last Modified By(Current Language)",
        "id": "",
        "desc": ""
    },
    "size": 2,
    "stSearchDisplay": "Employee",
    "values": [
        {
            "code": "Havid0012",
            "desc__lang": "Raindrop_en",
            "iRev": 11,
            "lastModifyDate": "2019-04-22 17:27:57",
            "employee.lastModifyUid.simpleUser.desc__lang": "Raindrop_en",
            "id": 382,
            "desc": "Raindrop_en",
            "st_desc": "Raindrop_en",
            "st_id": 382,
            "st_code": "Havid0012"
        },
        {
            "code": "Havid0018",
            "desc__lang": "B",
            "iRev": 8,
            "lastModifyDate": "2019-04-22 17:27:57",
            "employee.lastModifyUid.simpleUser.desc__lang": "Raindrop_en",
            "id": 398,
            "desc": "B",
            "st_desc": "B",
            "st_id": 398,
            "st_code": "Havid0018"
        }
    ],
    "fieldDesc": {
        "code": "Code",
        "st_id": "st_id",
        "st_code": "st_code",
        "desc__lang": "Name(Current Language)",
        "st_desc": "st_desc",
        "employee.lastModifyUid.simpleUser.desc__lang": "Name(Current Language)",
        "iRev": "Inner Version",
        "id": "Key ID",
        "lastModifyDate": "Last Modified Time",
        "desc": "Name"
    }
}
Type Location Description
success Body A SqlEntity JSON string
fail Header(error_info) A CheckMsg JSON array

# Document Printing Web Services

# Fetch PDF File

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/jrPrint/fetchPdf?menuCode=employee&recId=1")
  .post()
  .addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

POST http://127.0.0.1:8080/jsf/rfws/jrPrint/fetchPdf?menuCode=[Menu code]&recId=[Record Id]

# Parameters

Name Type Description
authorization string(Header) Required. Access Token obtained via Oauth2
client_id string(Header) Required. When registered in [OAuth Applications], generated by the aiM18
menuCode string(Query) Required. Menu code, such as 'employee', can be found in data dictionary.
recId long(Query) Required. ID of the entity.
printOptionId long(Query) ID of Print Options.

# Result

If API runs success, status of the response will be 200, then it will return a file. If API runs failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body A file
fail Header(error_info) A CheckMsg JSON array

# Upload Image Web Services

OkHttpClient client = new OkHttpClient();
File file = new File("C:\\Sample.jpg");
MediaType mt = MediaType.parse("application/jpg");
RequestBody rb = RequestBody.create(mt, file);

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/image/uploadImage?imgName=Sample.jpg")
  .post(rb)
  .addHeader("authorization", "Bearer OGFiZmU2ZTktMzYzMS00NjIwLWJhNGYtYWU2OGQyNTZhMmNi")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

POST http://127.0.0.1:8080/jsf/rfws/image/uploadImage?imgName=[Image Name]

# Parameters

Name Type Description
authorization string(Header) Required. Access Token obtained via Oauth2
client_id string(Header) Required. When registered in [OAuth Applications], generated by the aiM18
imgName string(Query) Image Name

# Result

If API runs success, status of the response will be 200, then it will return the imgCode. If API runs failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body imgCode
fail Header(error_info) A CheckMsg JSON array

# Save Draft Web Services

Save draft.

OkHttpClient client = new OkHttpClient();

MediaType jsonMT = MediaType.parse("application/json; charset=utf-8");
RequestBody rb = RequestBody.create(jsonMT, 
                 "[Simplified Entity JSON]" or "array of [Simplified Entity JSON]");

Request request = new Request.Builder()
  .url("http://127.0.0.1:8080/jsf/rfws/draft/s/save/employee?menuCode=employee")
  .put(rb)
  .addHeader("authorization", "Bearer MjZhZGNjMDctODVhZS00MmE0LWI3ZmEtNzRhMTQwZGZiNTY0")
  .addHeader("client_id", "C-SGF2aWQncyBhcHBsaWNhdGlvbjIwMTctMDItMTAxNjc=")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

# HTTP Request

PUT http://[server]/jsf/rfws/draft/s/save/[module]?menuCode=[menuCode]&beId=[beId]&templateCode=[templateCode]&entity=[entity]

# Parameters

Name Type Description
authorization String(Header) Required. Access Token obtained via OAuth
client_id String(Header) Required. Client ID in M18 [OAuth Applications]
module string(Path) Required. Module type,such as 'employee', can be found in data dictionary.
menuCode string(Query) Required. Menu code, such as 'employee', can be found in data dictionary.
beId int(Query) If the module is BE specific, need to provide the beId. BE means Business Entity in aiM18, which is a [Department] record with BE check box ticked.
templateCode string(Query) Template code, can be found in Template dialog of the module.
entity jsonString(Query) The Simplified Entity JSON, structure please refer to the below. Notice that the JSON need to be URL Encoded.
entity_in_entity jsonString(Body) The Simplified Entity JSON, structure please refer to the below. It is recommended to pass entity JSON in request body.If you want to handle more entitys, please pass an array of Simplified Entity JSON.
footerMergeMode string(Query) Applicable to the use of template, and Entity data in Footer is not empty. Default value is 'override', if the value is 'override',the Entity data will prevail, and will be overwritten directly. If the value is 'append', the template data will be kept.
footerUseTemplateIfMissing boolean(Query) Applicable to the use of template, but the incoming Entity does not have a Footer, or has Footer but the data is empty. Default value is 'true', if true, use the template data. If false, ignore the template data.

# Simplified Entity JSON

{
    "employeepic": {
        "values": []
    },
    "employee_attach": {
        "values": []
    },
    "employee": {
        "values": [
          {"code": "000171","desc": "abcd"}
        ]
    }
}
  • The JSON contains objects of different tables in a module, each table contains a "values" JSON array to specify the value of each field in the table.
  • The main table of a module is compulsory. For which table is main users can refer to data dictionary.
  • If a table or the value for a field are not provided, they will not be saved.

# Result

If API runs success, status of the response will be 200, then it will return a code of the saved draft. If API run failed , status of the response will be 400, then it will return the CheckMsg. You can get a CheckMsg JSON array from the response header with key word 'error_info'.

Type Location Description
success Body code of the saved draft
fail Header(error_id=1) Multiple errors with JSON array format
fail Header(error_info) A CheckMsg JSON array
Last Updated: 2025/05/13, 07:58:58
Common JSON Objects
Enduser-driven Business Intelligence

← Common JSON Objects Enduser-driven Business Intelligence→

Theme by Vdoing | Copyright © 1990-2025 Multiable | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式