Submission of Applications from third-party systems

xCAS API Documentation Ver 1.6, 28 June 2018

About API    2

Description    2

Interaction Overview    2

Authentication and authorization    3

Request Headers    5

Content-Type    5

JSON    5

URL Encoded Form    5

Authorization    5

Data structures    6

Draft Application    6

Draft Application response    10

Login form    10

Owner and Beneficiary    11

Attachments list    12

Application    13

Endpoints    16

Login    16

Ping    17

Create draft application    17

Get draft application    18

Get license    18

Attach documents    20

Get draft application attachments    20

Delete Document    21

Submit draft    21

Cancel draft    22

List changed application    23

Request license extension    24

List minerals    25

List Statuses    26

List document types    26

List license types    26

List contract term types    27

About the API for Application Submission

This document describes xCAS (previously called MCAS) system API for registering applications from other systems. The API intends to integrate government systems, allowing for example government to include license application forms on centralized e-governance or tax administration portals, for submission of applications eletronically to xCAS.

Description

Application registration API represents web services with token security system used to initiate application registration in xCAS from different systems. All communications with this API happens through HTTP/HTTPS protocol using JSON data structures. Application data submitted to xCAS is validated and either rejected with specific error message or accepted and new application code returned. Submitted data should contain external (to xCAS) identificator which will be used as reference for status update notifications.

Applications registered in this way goes through normal configured process of application life cycle in xCAS. Beside registration functions API also contains some helper functions which may be used by different client systems to provide their users with easy to use UI.

Interaction Overview

Below is overview of the process of interactions between two systems expressed as sequence diagram. Client App represents client application which uses xCAS web services. In the following diagram names of the operations are not REST endpoint names, but instead more readable names are used.

HighLevel.png

1: Client application calls xCAS with application payload and registers draft application. Beside application data client also should provide its own unique ID for the application which will be stored by xCAS.

2: xCAS validates data and replies with its own ID so that client can associate its own ID and xCAS generated ID.

3: Client can attach documents to the draft applications. This can be done many times while application is in draft state.

4: Once finished collecting documents, client application issues finalization message which sends application to next stage – registration stage in this case. Since this moment application goes through preconfigured stages in xCAS – xCAS users check applications and move to next stages as defined by their workflow.

5: On every change of status of application, xCAS can notify client application if it configures callback URL. Message delivered to client application contains ID of application. status change date, new status name and description or comment.

Authentication and authorization

To access the API for each client application special user should be registered in xCAS with password and permissions to call API. This can be done by xCAS administrator using corresponding UI. Once user is registered and permissions are given to call API corresponding username and password can be used by client application to obtain authorization token.

Each call to API endpoints should contain valid authorization token otherwise API call will result in HTTP response with status code 401. Token should be set in the ‘Authorization’ header with ‘Bearer’ prefix. Format is Authorization : Bearer . Below is example of the HTTP header:

Authorization : Bearer cn389ncoiwuencr79fweclknfrn3n5l2nms

Tokens are issued by xCAS server and they are valid for predefined time period. After that time they expire and are not accepted. In such case 401 status code is returned by the system and client is required to reauthenticate with the system – obtain new token.

Note: In this version we do not enable ‘nonce’ feature. In next versions this feature will be enabled. Nonce is random number (formatted as text: ) which is used only once. It is generated by xCAS and sent to client with 401 error only once. Client uses it to hash username/password. Since nonce is used only once, hijacked password cannot be used for  replay attack.

Below is sequence diagram showing interactions between client and server during authentication:

auth.png

1: Client application authenticates to xCAS using username and password hash sent in request.

2: xCAS checks username, password, user state and permissions and issues authorization token. Token is returned as response to client application which stores it in secure location.

3: Client applications includes token in all API calls. xCAS checks token digital signature integrity, validity and allows requested operation execution.

4: xCAS returns requested operation response to client application.

Request Headers

Each call to API requires different set of headers to be present. Below we list all possible request headers by names. They will be referenced from Endpoints section by these names:

Content-Type

This specifies what type of content is being submitted to xCAS. Below is list of possible values for Content-Type header:

JSON

Specifies that payload is JSON data:

Content-Type : application/json

This is used in almost all requests when data is submitted to server.

URL Encoded Form

Specifies form encoding style:

Content-Type : application/x-www-form-urlencoded

Authorization

Contains token data prefixed with Bearer. Example:

Authorization : Bearer cn389ncoiwuencr79fweclknfrn3n5l2nms

Data structures

Below is list of submitted or returned data structures, referenced from Endpoints section:

Draft Application

Represents data required for draft application registration. This structure is submitted when client needs to create draft application:

{
 “client_id”: [string],
 “type_id”: [number],
 “minerals”: [array],  “area”: [number],  “mineral_value”:[number],  “mineral_value_currency”:[string]
 “owner”:{
    “tax_id”: [string],
    “name”: [string],
    “individual”: [boolean],
    “first_name”: [string],
    “last_name”: [string],
    “country”: [string],
    “city”: [string],
    “email”: [string],
    “phone”: [string],
    “address”: [string],
    “post_code”: [string],
 },  “beneficiary”:{
    “tax_id”: [string],
    “name”: [string],
    “individual”: [boolean],
    “first_name”: [string],
    “last_name”: [string],
    “country”: [string],
    “city”: [string],
    “email”: [string],
    “phone”: [string],
    “address”: [string],
    “post_code”: [string],
 },
 “compliance_docs”:{    “mineral_analysys_certificates”:[      {        “barcode”:[string],        “company_name”: [string],        “sample_collected”: [string],        “company_address”: [string],        “lab_ref”:[string],        “company_code”:[string],        “nature_sample”:[string],        “source_sample”:[string],        “examination_required”:[string],        “method”:[string],        “signature”:[string],        “analyzed_by”:[string]      }    ],    “mineral_valuation_certificate”:[      {        “text”:[string],        “product_desc”:[string],        “total_weight_kgm”:[string],        “consignee_name”:[string],        “consignee_address”:[string],        “consignee_country”:[string],        “prepared_by_label”:[string],        “prepared_by_value”:[string]      }    ],    “contract_terms”:[      {        “type_id”:[number],        “value”:[number],        “text”:[string]      }    ]  }
}

client_id – unique ID inside client’s context.

type_id – unique ID of license type.

minerals – list of mineral names – string values.

area – optional sq. meters of area.

mineral_value – initial value of minerals.

mineral_value_currency – ISO code of the currency of minerals value.

owner – represents owner object and contains different fields for single permit owner. Not all fields are mandatory here. For individuals (individual = true) First name, last name and tax_id fields are mandatory. For non-individual owners (individual=false) name and tax_id fields are mandatory.

beneficiary – same as owner but different company should be specified. This field is optional.

compliance_docs – this contains fields for different compliance docs. For each there is an array of structure which represents the document fields. In this example we have two types of these docs as shown above. Currently fields here are not checked by strict rules but are justs stored in the system.

contract_terms – array of contract terms. Each contract term should contain type_id value obtained via /contractTermTypes endpoint. Also Value of contract term and optional text. Because contract_terms field is array of structures, you can submit several contract terms with application.

Example:

{
 “client_id”: 1234567,  “type_id”: 128,
 “minerals”: [“silver”, “gold”, “copper”],  “area”:15.88,  “mineral_value”:167.89,  “mineral_value_currency”:”USD”,
 “owner”:{
    “tax_id”: 1199695765,
    “name”: “Some company name,
    “individual”: false,
    “first_name”: null,
    “last_name”: null,
    “country”: “Georgia”,
    “city”: “Tbilisi”,
    “email”: “company@gmail.com”,
    “phone”: “+995 593 591 500”,
    “address”: “Qindzmarauli str 43,
    “post_code”: “0121”,
 },  “beneficiary”:{
    “tax_id”: 1199695766,
    “name”: “Some other company name,
    “individual”: false,
    “first_name”: null,
    “last_name”: null,
    “country”: “Georgia”,
    “city”: “Tbilisi”,
    “email”: “company2@gmail.com”,
    “phone”: “+995 593 591 501”,
    “address”: “Qindzmarauli str 47,
    “post_code”: “0122”,
 },
 “compliance_docs”:{    “mineral_analysys_certificates”:[      {        “barcode”:”123”,        “company_name”: “abc”,        “sample_collected”: “abc”,        “company_address”: “abc”,        “lab_ref”: ”123”,        “company_code”: ”12345”,        “nature_sample”: “abc”,        “source_sample”: ”abc”,        “examination_required”: “No”,        “method”: “online”:,        “signature”: “sig”,        “analyzed_by”: “David”      }    ],    “mineral_valuation_certificate”:[      {        “text”:”abc”,        “product_desc”:”abc”,        “total_weight_kgm”:1234.23,        “consignee_name”:”abc,        “consignee_address”:”abc”,        “consignee_country”:”Zambia”,        “prepared_by_label”:”abc”,        “prepared_by_value”:”123”      }    ],    “contract_terms”:[      {        “type_id”:45,        “value”:112,        “text”:”Not citizen”      }    ]  }
}

Draft Application response

This structure is returned after application draft is successfully registered. It contains ID generated by xCAS, client_id value which was passed in in request and client application name for current user.

{
    “status”:”OK”,
    “mcas_id”:[integer],
    “client_id”:[string],
    “client_name”:[string]
}

Example:

{
    “status”:”OK”,
    “mcas_id”:123,
    “client_id”:”321”,
    “client_name”:”MOSES-test”
}

License response

Response of the getLicense endpoint contains everything

Login form

Login endpoint requires username and password to be submitted as JSON structure. Request should be POST and headers should contain Content-Type: application/json. Body of the request should be JSON with two fields.

username – string representing user name

password – string representing password (no hashing for test version)

This is example JSON body:

{
 “username”:”moses”,
 “password”:”secret”
}

Owner and Beneficiary

Owner object structure represent owner of the application. It might be individual (person) or company.

{

    “tax_id”: [string],

    “name”: [string],

    “individual”: [boolean],

    “first_name”: [string],

    “last_name”: [string],

    “country”: [string],

    “city”: [string],

    “email”: [string],

    “phone”: [string],

    “address”: [string],

    “post_code”: [string]

}

tax_id – unique identification number or string assigned to taxpayer within country. Mandatory

name – company name. has value only when owner is company. Optional.

individual – boolean value defines whether owner is individual person. Mandatory.

first_name – string representing first name of individual. Optional.

last_name – string representing last name of individual. Optional.

country – country of owner. Optional.

city – city name of the owner. Optional

email – email of the owner. Optional.

phone – of the owner. Optional.

address – address of the owner. Optional

post_code – postal code of owner. Optional.

Same structure is used for beneficiary company, but it is usually optional field in application and permit.

Example:

{
   “tax_id”: “34553-d3”,
   “name”: “Some Company”,
   “individual”: false,
   “country”: “Zambia”,
   “city”: “Lusaka”,
   “email”: “sim@company.com”,
   “phone”: “8769887087”,
   “address”: “street 75”,
   “post_code”: “7821”
}

Attachments list

This is JSON structure containing metadata of the document. It does not contain actual bytes of the document.

{
  “status”:[string],
  “client_id”: [string],
  “attachments”:[
     {
        “id”: [number],
        “client_id”:[string],
        “doc_date”:[string],
        “record_date”:[string],
        “original_name:[string],
        “type_name”:[string],
        “type_code”:[string]
      }
  ]
}

status – status of the operation: ‘OK’ or ‘ERROR’. In case of error, code and message will be specified instead of data fields.

client_id – unique ID of draft application inside client system. This value comes from request.

attachments – list of attachment objects. See fields description below:

id – xCAS database id of the record.

client_id – unique id of this attachment in the client system.

doc_date – date value that came with attachment in metadata. Optional

record_date – date when attachment was received and recorded

original_name – string representing original file name specified in when attachment was submitted

type_name – name of document type in xCAS.

type_code – code of document type

This example shows response with 2 attachments.

{
  “status”:”OK”,
  “client_id”: “123”,
  “attachments”:[
    {
        “id”: 123,
        “client_id”:”345”,
        “doc_date”:”2017/07/14 11:11:11”,
        “record_date”:”2017/07/14 11:12:13”,
        “original_name:”some_file.pdf”,
        “type_name”:”Registration Form”,
        “type_code”:registration_form
     },
    {
        “id”: 124,
        “client_id”:”567”,
        “doc_date”:null,
        “record_date”:”2017/07/15 18:17:16”,
        “original_name:”passport.jpeg”,
        “type_name”:”Passport scan”,
        “type_code”:”passport”
     }
  ]
}

Application

Full JSON structure of applications. It does not contains all of the fields that xCAS holds for application in its database, but instead only part required for remote registration applications. Also not all fields are mandatory here, so they will add in some cases when application goes to different stages. Here we list all possible fields this API might return when Get Application endpoint is requested:

{
    “mcas_id”: [number],
    “client_id”: [string],
    “draft_date”: [string],
    “application_date”: [string],
    “update_date”: [string],
    “license_date”: [string],
    “expiration_date”: [string],
    “status” : [string],
    “type” : [string],
    “minerals” : [array].
    “owner” : {
        “tax_id”: [string],
        “name”: [string],
        “individual”: [boolean],
        “first_name”: [string],
        “last_name”: [string],
        “country”: [string],
        “city”: [string],
        “email”: [string],
        “phone”: [string],
        “address”: [string],
        “post_code”: [string]
   },    “beneficiary” : {
        “tax_id”: [string],
        “name”: [string],
        “individual”: [boolean],
        “first_name”: [string],
        “last_name”: [string],
        “country”: [string],
        “city”: [string],
        “email”: [string],
        “phone”: [string],
        “address”: [string],
        “post_code”: [string]
   },
   “documents” : [objects]
}

mcas_id – Unique ID of record in xCAS.- long integer

client_id – Unique ID which was provided by client application when draft was created

draft_date – date when application draft was created. String in yyyy-MM-ddTHH:mm:ssZ format. Z at the end means Zulu time which is UTC time.

application_date – date when draft became real application – when finalized draft. Optional

update_date – date when application was last updated. Optional.

license_date – date when license was issued. Optional.

expiration_date – date when license expires. Only when application becomes license. Optional.

status – string representing name of status of the application.

type – string representing application type.

minerals – list of strings representing mineral names

owner – object representing owner. See Owner section for details.

documents – list of objects. See Document metadata section. Optional.

Example:

{
    “mcas_id”: 123,
    “client_id”: “2355”,
    “draft_date”: “2017-05-19T20:45:55Z”,
    “application_date”: “2017-05-29T20:45:55Z”,
    “update_date”: “2017-05-29T20:45:55Z”,
    “status” : “Registration”,
    “type” : “Export Permit”,
    “minerals” : [“Copper”, “Silver”],.
    “owner” : {
        “tax_id”: “34553-d3”,
        “name”: “Some Company”,
        “individual”: false,
        “country”: “Zambia”,
        “city”: “Lusaka”,
        “email”: “sim@company.com”,
        “phone”: “8769887087”,
        “address”: “street 75”,
        “post_code”: “7821”
   },    “beneficiary” : {
        “tax_id”: “34553-d3”,
        “name”: “Some Company”,
        “individual”: false,
        “country”: “Zambia”,
        “city”: “Lusaka”,
        “email”: “sim@company.com”,
        “phone”: “8769887087”,
        “address”: “street 75”,
        “post_code”: “7821”
   },

   “documents” : [
      {
        “id”:456,
        “name”:”Some document”,
        “type”:”contract”,
     },
    {
        “id”:457,
        “name”:”filename.doc”,
        “type”:”letter”,
     }
   ]
}

This example shows application which has 123 ID in xCAS database and 2355 ID in client application. It has two minerals selected, and two documents attached. It is in Registration stage.

Small Application

Small structure of application used in lists to not overload results. It contaisn only most important fields:

Endpoints

Below is list of all endpoints of this API.

Login

Description: Authenticates client and returns token.

URL: /login

Method: POST

Headers: Content-Type: application/json

URL params: None

Data params:

{
    “username”: “moses”,
    “password”: “secret”
}

Success response:

    code: 200

    body: JSON structure containing authorization token

    example:

{
   “username”: “moses”,
   “roles”: [
       “ROLE_NTR”
   ],
   “access_token”: “eyJhbG…tzM”,
   “token_type”: “Bearer”
}

Failure response:

    400 – if any required parameter is missing

401 – if password or username is incorrect

Each response contains also JSON containing details of failure.

Notes: See Login form and Authorization section for details

Ping

Description: Ping server to test connection. Returns time on the server.

URL: /ping

Method: GET

Headers; nothing

URL params: nothing

Data params: nothing

Success response:

    Status code: 200

    Body: JSON structure containing server date-time in yyyy/MM/dd HH:mm:ss format.

    Example:     

{
    “time”:”2017/05/01 23:59:59”
}

Failure response: No failures should happen

Notes: No authentication is required for this endpoint.

Create draft application

Description: Receives submitted data, validates it and creates draft application record. Data submitted should be JSON structure and should contain fields described in Draft Application section.  

URL: /createDraft

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL Params: None

Data params:

    Application JSON structure. See Data Structures: Draft Application.

Success Response:

201 – Draft created

Response contains JSON with new xCAS id. See Draft application Response

Failure Responses:

    Code: 400 – If submitted data is missing any field or contains incorrect value.

    Body: JSON describing issue.

Notes:

In this version there is no restriction of how long application can stay in draft state.

Get draft application

Description: Returns application data

URL: /getDraft

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL params: None

Data params:

JSON with client_id value. This value is ID unique in client system.

{
    “client_id”:”2″
}

Success response:

    Code: 200 – application JSON is returned

Failure response:

    Code: 404 – application with specified ID not found.

Notes: won’t return application if it is not registered through this API

Get license

Description: Returns license data

URL: /getLicense

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL params: None

Data params:

JSON with mcas_id, client_id, or license_code value. Any of these 3 identification values should be specified:.

{
    “client_id”:”2123asd31”,      “mcas_id”:231,      “license_code”:”AE 123/18”
}

Success response:

    Code: 200 – application JSON is returned. Example response:

{
   “mcas_id”: 14603,
   “client_id”: “123123,
   “draf_date”: “2009-01-30T00:00:00+04”,
   “application_date”: “2009-01-30T00:00:00+04”,
   “update_date”: “2018-06-25T20:43:20+04”,
   “status”: “Active License”,
   “type”: “Test Export Permit”,
   “minerals”: [
       “Copper”
   ],
   “owner”: {
       “tax_id”: “087801709Y”,
       “name”: “Some company”,
       “individual”: false,
       “first_name”: null,
       “last_name”: null,
       “country”: “Georgia”,
       “city”: “Tbilisi”,
       “email”: “someone@somewhere.com”,
       “phone”: “20 29 41 41 / 21 21 51 14 “,
       “address”: “Rustaveli ave 21”,
       “post_code”: 0121
   },
   “renewal_no”: 2,
   “renewal_requested”: false,
   “last_renewal_accepted”: false,
   “last_renewal_comment”: “Rejecting because this is test”,
   “last_renewal_date”: “2018-06-25T16:43:20Z”
}

Failure response:

    Code: 404 – application with specified ID not found.

Notes: mcas_id is a number, all other values submitted should be strings.

Attach documents

Description: Attaches new document to draft application. This request submits file and JSON at same time. Request should be POST regular form data. Just like HTML file is submitting form with different fields. In our case we have two fields. Both fields in the form contains different data. Document field contains file bytes and mime type. Data field contains json string with draft ID in client system to assign attachment to, attachment unique ID in the client system and document type id obtained through /documentTypes endpoint. As in case of applications, client IDs are used by client system to lookup records. xCAS assigns its own unique IDs to these records, but clients also might have their own ID to reference them. Document type id is one of the registered document types in xCAS. It can be letter, Declaration, contract or some kind of certificate.

URL: /attachDoc

Method: POST (submit form with fields)

Headers:

    Authorization: Bearer     

URL params: None

Form fields: Submitted form should have following 2 fields:

    data=’{“client_id”:”123″,”doc_id”:”456″}’

where 123 is example client ID value and 456 is example client document ID. These IDs are unique in API client system. And second field value:

document=./some_file.pdf;type=application/pdf

Here some_file.pdf is example file name and type field is set to corresponding mime type.

Success response:

    200 – document saved and attached to application

    Response body contains JSON with ID of new document created.

Failure response:

    404 – draft application with specified ID not found

Notes:

Get draft application attachments

Description: Returns list of attached document metadata for specific application.

URL: /listAttachments

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL params: None

Data params:

JSON with client_id value. This value is ID unique in client system.

{
    “client_id”:”2″
}

Success response:

    200 – documents list found and returned.

    Response body contains JSON described in Attachments list section.

Failure response:

    404 – document or application not found

Notes:

Won’t return documents that are not registered through this API.

Delete Document

Description: Removes attached document from application

URL: /deleteAttachment

Method: POST

Headers:

    Authorization: Bearer

URL params: None

Data params: JSON with application client ID and attachment document id

{
 “client”:”123”,
 “doc_id”:”321”
}

Success response:

    200 – document removed.

Failure response:

    404 – document or application with specified ID not found.

Notes:

Submit draft

Description: Moves application from draft to registration/validation stage.

URL: /submitDraft

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL params: None

Data params: JSON with client_id of draft to submit:

{
 “client_id”:”123”
}

Success response:

    code: 200 – application sent to next stage.

    body: JSON structure:

{

        “status”:”OK”,

        “client_id”:”123”,

        “application_code”:”APL-I-789”

    }

Here status field indicates that request was successful. application_code is generated by xCAS and assigned to application.

Failure response:

    400 – in case application is found but cannot be sent to next stage.

    404 – application with ID not found

Notes:

    Actually next stage is called Registration and this is where validation process starts.

Cancel draft

Description: Removes application from the system.

URL: /cancelDraft

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL params: None

Data params: JSON with client_id of draft to cancel:

{
 “client_id”:”123”
}

Success response:

    code: 200 – application sent to next stage.

    body: JSON structure:

{

        “status”:”OK”,

    }

Failure response:

    400 – bad request – mainly missing client_id.

    404 – application with ID not found

Notes:

    Actually next stage is called Registration and this is where validation process starts.

List changed application

Description: Returns list of updated application/licenses since specific date.

URL: /getChanges

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL params: None

Data params: { “since_date”:”yyyy-MM-ddTHH:mm:ssX”}

Example JSON { “since_date”:”2017-12-31T23:59:59+04”}.

Success response:

    200 – list of structures each containing reduced number of fields, only most important fields. These are: client_id, mcas_id, status, status_update_date. Also based on status of application, if present, these fields are added: application_code, license_code, start_date and based on renewal state there might be renewal_requested, renewal_request_date or last_renewal_accepted, last_renewal_comment, last_renewal_date.

Here is the example list (just 2 items) of changes returned by this endpoint:

[
   {
       “client_id”: null,
       “mcas_id”: 13677,
       “status”: “Active License”,
       “status_update_date”: “2018-06-25T16:46:29Z”,
       “application_code”: “APL-I-334”,
       “license_code”: “AE 321/13”,
       “start_date”: “2012-06-21T20:00:00Z”,
       “renewal_requested”: true,
       “renewal_request_date”: “2018-06-25T16:46:33Z”
   },
   {
       “client_id”: null,
       “mcas_id”: 14603,
       “status”: “Active License”,
       “status_update_date”: “2018-06-25T16:43:20Z”,
       “application_code”: “APL-I-357”,
       “license_code”: “AE 352/10”,
       “start_date”: “2009-12-01T20:00:00Z”,
       “renewal_requested”: false,
       “last_renewal_accepted”: true,
       “last_renewal_comment”: “All good”,
       “last_renewal_date”: “2018-06-25T16:43:20Z”
   }
]

Failure response:

    400 – if date is not specified

Notes:

Note that because list might have many elements, fields representing each application or license are reduced to minimum to reduce amount of transferred data. If full data is required for a license, use getLicense with client_id value to retrieve all data for single one.

Request license extension

Description:Requests license extension if possible. This puts license in extension requested state (renewal_requested=true) if it is not already in that state.

URL: /extend

Method: POST

Headers:

    Authorization: Bearer

    Content Type: application/json

URL params: None

Data params: JSON structure which contains either mcas_id or client_id or license ocde. You need to specify one of them, not 2 or 3 at same time.

{
    “mcas_id”:123,
    “client_id:”1234567”,
    “license_code”:”AE 18/2331″
}

Any of these 3 fields can be specified.

Success response:

    200 – json containing IDs of the license, status and message of the operation, if payment is required and amount of the required payment and currency.  Here is the example response of successful extension request:

{
   “status”: “OK”,
   “id”: 11296,
   “client_id”: null,
   “license_code”: “AE 287/13”,
   “message”: “License extension was requested”,
   “payment_required”: true,
   “extension_request_date”: “2018-06-21T14:15:44+04”,
   “amount”: 10,
   “currency”: “USD”,
   “fee”: “10.0 USD for Renewal”
}

Failure response:

    400 – missing fields

    404 – license not found

    422 – license is in a state when it cannot be extended

    500 – Other errors

Notes:

In the submitted data note that mcas_id is a number, but two other fields are string type.

List minerals

Description: Returns list of all minerals in xCAS.

URL: /minerals

Method: GET

Headers:

    Authorization: Bearer     

URL params: None

Data params: None

Success response:

    200 – list of strings returned

Failure response:

Notes:

Might be used for UI to let users select set of minerals when creating applications.

List Statuses

Description: Returns list of all statuses in xCAS.

URL: /statuses

Method: GET

Headers:

    Authorization: Bearer     

URL params: None

Data params: None

Success response:

    200 – list of strings returned

Failure response:

Notes:

Might be used for UI to let users select set of statuses when creating applications.

List document types

Description: Returns list of all document types in xCAS.

URL: /documentTypes

Method: GET

Headers:

    Authorization: Bearer     

URL params: None

Data params: None

Success response:

    200 – list of strings returned

Failure response:

Notes:

Might be used for UI to let users select set of document types of attachment when creating applications.

List license types

Description: Returns list of all license types in xCAS.

URL: /types

Method: GET

Headers:

    Authorization: Bearer     

URL params: None

Data params: None

Success response:

    200 – list of structures returned. each structure contains “id”, “code” and “name” of each license type configured in xCAS

Failure response:

Notes:

Might be used for UI to let users select set of license types of attachment when creating applications.

List contract term types

Description: Returns list of all contract terms types configured in xCAS.

URL: /contractTermTypes

Method: GET

Headers:

    Authorization: Bearer     

URL params: None

Data params: None

Success response:

    200 – list of structures returned. each structure contains “id” and “name” of each term  type configured in xCAS

Failure response: 401 in case of bad token

Notes:

Might be used for UI to let users select contract term types when creating applications.