API Endpoint Documentation

Updated: 14-Nov | Previous: 11-Oct-25


This guide covers posting of exemptions and reading resources using
API Key, as the preferred method for server to server authentication and authorization.

NOTE: Before performing below actions, ensure that you have already acquired a valid API Key from PPA Account Center.
#MethodEndpoint AddressUpdated | Previous
1GEThttps://stage-opceapi.ppa.com.ph/api/opce/GetPartyClientListAsync?ver=26-Mar-2025 | 21-Mar-2025
2GEThttps://stage-opceapi.ppa.com.ph/api/opce/GetCommodityListAsync?ver=26-Mar-2025 | 21-Mar-2025
3POSThttps://stage-opceapi.ppa.com.ph/api/opce/PostExemptionRequestAsync26-Mar-2025 | 21-Mar-2025
4POSThttps://stage-opceapi.ppa.com.ph/api/opce/PostBatchExemptionRequestAsync19-Nov-2025 | 07-Jul-2025
5GEThttps://stage-opceapi.ppa.com.ph/api/opce/GetVerChanges?t=26-Mar-2025 | 21-Mar-2025
MethodEndpoint Address / DescriptionUpdated
GET

  • Gets all the list of the PEZA accredited list of parties.
  • The list of parties must be saved or persisted on the subscriber side as a transaction lookup instead of acquiring the list on every request.
  • The list should be updated based on version in a timely manner, e.g. every 12 midnight. Read request parameter below.
  • NOTE: Must have a valid API KEY to use.

Request Parameters:

TypeNameDescriptionTypeRequired
Request Header

The API Key acquired from the Account Center.
Example API Key: eyJhbGciOiJIUzI1Ni...

stringYes
URL ParameterA string representation of the version list in the form of #.##, example: 1.00 or 1.02stringYes

Example Code: (NodeJS TypeScript)
fetch(
  https://stage-opceapi.ppa.com.ph/api/opce/GetPartyClientListAsync?ver=2,
  {
    method: "GET",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer eyJhbGciOiJIUzI1Ni..."
    },
  }
)

JSON Response:

NOTE: The endpoint will emit the JSON record below depending on the version requested. If the version being requested is not equal to the version currently held in PPA server, it will emit JSON Figure A.Otherwise, it will emit a JSON record Figure B.


Figure A

Example Request:

Below, the JSON property ListOfParties contains all the current updated list of companies. The subscriber client (e.g. ICTSI) must persist the version number on their part for requesting the next available updated list.

Party List Figure A

Figure B

Example Request:

Below, the JSON property Below, the JSON property ListOfParties is null or empty because the version list being requested is the same with PPA records.

Party List Figure B
26-Mar-2025
GET

  • Gets all the list of the commodities regardless of who is the party accredited with it.
  • The list of commodities must be saved or persisted on the subscriber side as a transaction lookup instead of acquiring the list on every request.
  • The list should be updated based on version in a timely manner, e.g. every 12 midnight. Read request parameter below.
  • NOTE: Must be authorized or logged-in to use. Must have a valid API KEY to use.

Request Parameters:

TypeNameDescriptionTypeRequired
Request Header

The API Key acquired from the Account Center.
Example API Key: eyJhbGciOiJIUzI1Ni...

stringYes
URL ParameterA string representation of the version list in the form of #.##, example: 1.00 or 1.02stringYes

Example Code: (NodeJS TypeScript)
fetch(
  https://stage-opceapi.ppa.com.ph/api/opce/GetCommodityListAsync?ver=2,
  {
    method: "GET",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer eyJhbGciOiJIUzI1Ni..."
    },
  }
)

Figure A

Example Request:

Below, the JSON property OpceMasterDetailCommodities contains all the current updated list of commodities in master-id parent format. The subscriber client (e.g. ICTSI) must persist the version number on their part for requesting the next available updated list.

Commodity List Figure A

The fields:


  • ATTRIBUTE1 - may contain "A" or "E". Meaning Added or Edited respectively.
  • ATTRIBUTE2 - contains the Party or customer ID and useful when mapping commodity and party info in look-ups or other display information.
  • ATTRIBUTE3 - contains the proprietary or internal company item code, if specified.
  • ATTRIBUTE4 - system reserved.
  • COMMODITY_LST_LST_CODE - is the parent of each commodity code on a 2 to 3 level parent-child nesting. reserved.
  • POST_FLAG - internal use for PPA.
  • STATUS - "A" means the commodity is currently being carried. "I" means a commodity is inactive or already retired.

Figure B

Example Request:

Below, the JSON property Below, the JSON property OpceMasterDetailCommodities is null or empty because the version list being requested is the same with PPA records.

Commodity List Figure B
26-Mar-2025
POST

Post a commodity item being requested from a particular party or company for exemption.The order and casing of each field/member must be in order and exact respectively.


Request Parameters (payload)


NameDescriptionTypeRequired
The user name/email of the subscriber (e.g. ICTSI)stringYes
The user name/email of the PEZA/company requesting for the exemption from the subscriber. (e.g. the user/email of a company PV TECH PTE. LTD.)stringYes
The hashcode or serial number of the requeststringYes
Commodity CodestringYes
Commodity descriptionstringYes
The name of the Company requesting for the commodity exemptionstringYes
The address of the Company requesting for the commodity exemptionstringYes
The TIN of the Company requesting for the commodity exemptionstringYes
Voyage NumberstringYes
The unique reference number or code of the requeststringYes
Date of exemption request in form of: MM/DD/YYYY hh:mm:ss AM/PMstringYes
Bill of Lading NumberstringYes
Weight of the commodity itemDecimal numberYes
Volume of the commodity itemDecimal numberYes
Cargo TypestringYes
Unit of Measurement (Ton, Kg, etc.)stringYes
Quantity of the commodity being requestedDecimal NumberYes
Computed AmountDecimal NumberYes
Determines the request if confirmed (1) | Inquiry (0) (* New) as of 20-Aug-2019IntegerYes

 

Example Code: (NodeJS TypeScript), ASP.NET and other languages may differ.
fetch(
  https://stage-opceapi.ppa.com.ph/api/opce/PostExemptionRequestAsync,
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer eyJhbGciOiJIUzI1Ni..."
    },
    body: JSON.stringify(payload),
  }
)

JSON Response:

Response Data
26-Mar-2025
POST

Post a batch of commodity items being requested from a particular party or company for exemption. The order and casing of each field/member must be in order and exact respectively.


Request Parameters (payload):


NameDescriptionTypeRequired
The ID of the batch request being sent. This is to identify all the items contained in the request.stringYes
The user name/email of the subscriber (e.g. ICTSI)stringYes
The user name/email of the PEZA/company requesting for the exemption from the subscriber. (e.g. the user/email of a company PV TECH PTE. LTD.)stringYes
The hashcode or serial number of the requeststringYes
The name of the Company requesting for the commodity exemptionstringYes
The address of the Company requesting for the commodity exemptionstringYes
The TIN of the Company requesting for the commodity exemptionstringYes
A list or array of Commodities for exemption request in the form/definition of:
as described below:
Generic ListYes

Definition of OpceCommodityDto

NameDescriptionTypeRequired
Commodity CodestringYes
Commodity descriptionstringYes
Voyage NumberstringYes
The unique reference number or code of the requeststringYes
Date of exemption request in form of: MM/DD/YYYY hh:mm:ss AM/PMstringYes
Bill of Lading NumberstringYes
Weight of the commodity itemDecimal numberYes
Volume of the commodity itemDecimal numberYes
Cargo TypestringYes
Unit of Measurement (Ton, Kg, etc.)stringYes
Quantity of the commodity being requestedDecimal numberYes
Computed AmountDecimal numberYes
Determines the request if confirmed (1) | Inquiry (0) (* New) as of 20-Aug-2019IntegerYes

fetch(
  https://stage-opceapi.ppa.com.ph/api/opce/PostBatchExemptionRequestAsync,
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer eyJhbGciOiJIUzI1Ni..."
    },
    body: JSON.stringify(payload),
  }
)

Sample JSON Response:

PostBatchExemption response

NOTES:

Should there be expired commodities inside the batch request, the CommodityListReponse, each REQ_REMARK_CODE will contain the value X1 which stands for COMMODITY IS EXPIRED.

The ATTRIBUTE5 of the response will also contain the effectivity date from and to, both in dates formats.

            REQ_REMARK_CODE": "X1",
            "REQ_PPA_REMARKS": "COMMODITY IS EXPIRED - PPA-UNC-0006299 | DEV - DESERTHILL LOGISTICS AND TERMINAL SERVICES INC. | TEST",
            "REQ_STATUS_ID": 0,
            "ATTRIBUTE1": "DEV - DESERTHILL LOGISTICS AND TERMINAL SERVICES INC.",
            "ATTRIBUTE2": "SVR-PTM-0:00:00.000",
            "ATTRIBUTE3": "SVR-DPRTR-16:25:01.044",
            "ATTRIBUTE4": "ip-addr",
            "ATTRIBUTE5": {
              "COMM_EFF_DT_FROM": "2020-11-14T07:25:31.215Z",
              "COMM_EFF_DT_TO": "2024-11-14T07:25:31.215Z"
            },,

11-Nov-2025
GET

Gets the version changes history of either commodity or the party/customer such as name modifications, additions, deletions, others.

  • Emmits JSON List records.
  • Acquires the last 800 changes or modifications only.

Request Parameters:

NameDescriptionTypeRequired
  • when t=c for commodity changes listings in JSON format
  • when t=p for party/customer changes listings in JSON format.
stringYes
JSON Schema when p is used."ID":xx,"VERSION_ID":xx,"VERSION_TEXT":"xx","REMARKS": xx
JSON Schema when c is used."ID":xx,"VERSION_ID":xx,"VERSION_TEXT":"xx","REMARKS": xx
JSON Schema when other character is used."Message":"Parameter accepted is only p for Party and c for commodity."

 

Example Code: (NodeJS TypeScript), ASP.NET C# and other languages may differ.
fetch(
  https://stage-opceapi.ppa.com.ph/api/opce/GetVerChanges?t=,
  {
    method: "GET",
    headers: {
      "Content-Type": "application/json",
      "Authorization": "Bearer eyJhbGciOiJIUzI1Ni..."
    },
  }
)

JSON Response:

Response Data
26-Mar-2025