Help & Support

  • Download OPCE2 User Manual (PDF)

Developer Guide

  • Developer Guide & Track Changes
  • Api Endpoint Documentation
Copyright © 2024 - 2026 Philippine Ports Authority. All rights are reserved.
System Version: 1.1.0-beta.03162026.1949

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
https://stage-opceapi.ppa.com.ph/api/opce/GetPartyClientListAsync?ver=

  • 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 HeaderAuthorization

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

stringYes
URL ParameterverA 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:

https://stage-opceapi.ppa.com.ph/api/opce/GetPartyClientListAsync?ver=1.00

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:

https://stage-opceapi.ppa.com.ph/api/opce/GetPartyClientListAsync?ver=2.71

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
https://stage-opceapi.ppa.com.ph/api/opce/GetCommodityListAsync?ver=

  • 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 HeaderAuthorization

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

stringYes
URL ParameterverA 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:

https://stage-opceapi.ppa.com.ph/api/opce/GetCommodityListAsync?ver=1.00

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:

https://stage-opceapi.ppa.com.ph/api/opce/GetCommodityListAsync?ver=9.95

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
https://stage-opceapi.ppa.com.ph/api/opce/PostExemptionRequestAsync

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
REQ_ENTITY_IDThe user name/email of the subscriber (e.g. ICTSI)stringYes
REQ_ENTITY_LOGINThe 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
HASH_CODEThe hashcode or serial number of the requeststringYes
REQ_EX_COM_CODECommodity CodestringYes
REQ_EX_COM_DSCCommodity descriptionstringYes
REQ_EX_PU_NAMEThe name of the Company requesting for the commodity exemptionstringYes
REQ_EX_PU_ADDRThe address of the Company requesting for the commodity exemptionstringYes
REQ_EX_PU_TINThe TIN of the Company requesting for the commodity exemptionstringYes
REQ_EX_VOYAGE_NOVoyage NumberstringYes
REQ_EX_REFERENCE_NOThe unique reference number or code of the requeststringYes
REQ_EX_REFERENCE_DATEDate of exemption request in form of: MM/DD/YYYY hh:mm:ss AM/PMstringYes
REQ_EX_BLNOBill of Lading NumberstringYes
REQ_EX_WEIGHTWeight of the commodity itemDecimal numberYes
REQ_EX_VOLUMEVolume of the commodity itemDecimal numberYes
REQ_EX_CARGO_TYPECargo TypestringYes
REQ_EX_UOMUnit of Measurement (Ton, Kg, etc.)stringYes
REQ_EX_QTYQuantity of the commodity being requestedDecimal NumberYes
REQ_EX_PPA_AMTComputed AmountDecimal NumberYes
CONFIRMED_TRANSACTIONDetermines 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
https://stage-opceapi.ppa.com.ph/api/opce/PostBatchExemptionRequestAsync

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
BATCH_REQUEST_IDThe ID of the batch request being sent. This is to identify all the items contained in the request.stringYes
REQ_ENTITY_IDThe user name/email of the subscriber (e.g. ICTSI)stringYes
REQ_ENTITY_LOGINThe 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
HASH_CODEThe hashcode or serial number of the requeststringYes
REQ_EX_PU_NAMEThe name of the Company requesting for the commodity exemptionstringYes
REQ_EX_PU_ADDR The address of the Company requesting for the commodity exemptionstringYes
REQ_EX_PU_TINThe TIN of the Company requesting for the commodity exemptionstringYes
BatchCommodityList
A list or array of Commodities for exemption request in the form/definition of:
ListOpceCommodityDto
as described below:
Generic ListYes

Definition of OpceCommodityDto

NameDescriptionTypeRequired
REQ_EX_COM_CODECommodity CodestringYes
REQ_EX_COM_DSCCommodity descriptionstringYes
REQ_EX_VOYAGE_NOVoyage NumberstringYes
REQ_EX_REFERENCE_NOThe unique reference number or code of the requeststringYes
REQ_EX_REFERENCE_DATEDate of exemption request in form of: MM/DD/YYYY hh:mm:ss AM/PMstringYes
REQ_EX_BLNOBill of Lading NumberstringYes
REQ_EX_WEIGHTWeight of the commodity itemDecimal numberYes
REQ_EX_VOLUMEVolume of the commodity itemDecimal numberYes
REQ_EX_CARGO_TYPECargo TypestringYes
REQ_EX_UOMUnit of Measurement (Ton, Kg, etc.)stringYes
REQ_EX_QTYQuantity of the commodity being requestedDecimal numberYes
REQ_EX_PPA_AMTComputed AmountDecimal numberYes
CONFIRMED_TRANSACTIONDetermines 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
https://stage-opceapi.ppa.com.ph/api/opce/GetVerChanges?t=

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
t
  • 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