SGDex API (1.2.2-release)

Download OpenAPI specification:

This API Specification gives an overview of what SGDex is and serves as a guide to help you integrate your application with SGDex.

Note - This specification is subject to changes based on the evolution of the APIs.

INTRODUCTION

This section gives an introduction to SGDex.

What is SGDex?

SGDex (Singapore Data Exchange) is a data exchange layer platform that supports multiple data exchanges.

SGDex is organised around REST and returns JSON-encoded responses with standard HTTP response codes.

SECURITY

HTTPS Interface

SGDex API gateway supports accessing of APIs via HTTP over TLS (Transport Layer Security) version 1.2 standards.

Supported Cipher Suites

The list of supported Cipher Suites are as follows:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
IMPORTANT: Ensure your server supports TLS 1.2 and supports a cipher suite in the list above. Accessing the RESTful APIs using prior versions of TLS and/or unsupported ciphersuites will result in connectivity errors. SGDex API gateway does not support 2-way TLS client nor mutual authentication.

Data Exchange (Client) Authentication

Data Exchange clients (e.g. SGTraDex) must authenticate to SGDex for every request. SGDex uses JWT (specified in RFC 7523) provided in the Authorization header as a bearer token (specified in RFC 6750) for client authentication.

JWT format

Briefly, an unencrypted, signed JWT consists of three parts:

  1. The header;
  2. The body or payload; and
  3. A signature of the payload.

The header may include information about the key and algorithm used to sign the payload. This is needed unless the receiver has obtained this information through other means. As an example, a JWT used for client authentication may have a header and payload like this:

{
  "alg": "ES256",
  "typ": "JWT",
  "kid": "7229075d-972f-4b21-8a0c-38db3a7f2a98"
}
SGDex supports the following token signature algorithms:
  • ES256
  • RS256

The associated payload may look like this:

{
  "aud": "https://api.sgdex.gov.sg",
  "iss": "client-one",
  "sub": "client-one",
  "nbf": 1535806905,
  "exp": 1535810505,
  "iat": 1535806905,
  "jti": "id123456"
}

JWT parameters include the following:

Parameter Name Parameter Value
REQUIRED aud SGDex domain
e.g. https://api.staging-sgdex.gov.sg for staging environment
REQUIRED iss application_id issued by SGDex during onboarding
REQUIRED sub application_id issued by SGDex during onboarding
REQUIRED exp expiration time of token in epoch format - maximum of 5 minutes from time JWT is generated
REQUIRED iat issued at - the time at which the JWT was issued
OPTIONAL nbf not before - the time before which the token MUST NOT be accepted for processing
REQUIRED jti JWT ID - unique identifier for the token

Signature

  • A JWT must be digitally signed using a private key in asymmetric cryptography (e.g. RS256).
  • A client using the authentication method has to register its public key to SGDex in advance so that the SGDex can verify the token.
NOTE: JWT needs to be signed before being sent to SGDex. Each request's JWT must be unqiue.

Sending JWT in Request

The JWT sent to the SGDex should be a Bearer token in the Authorization header, as described in RFC 6750. A sample request is shown below:

GET /{dex}/{usecase}/{api} HTTP/1.1
Host: stg.api.sgdex.gov.sg
Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJodHRwczovL3N0Zy5hcGkuc2dkZXguZ292LnNnIiwiaXNzIjoiY2xpZW50LW9uZSIsInN1YiI6ImNsaWVudC1vbmUiLCJuYmYiOjE1MzU4MDY5MDUsImV4cCI6MTUzNTgxMDUwNSwiaWF0IjoxNTM1ODA2OTA1LCJqdGkiOiJpZDEyMzQ1NiJ9.1ba2xgaRfxiu18SBPauA4ibe21uqI1lymtFoYXrFpMysQVADei98guL4QKHqgwD6UwHBOkC_L5W6TR19g1fuoQ

Client Assertion

The Partner's application is required to generate client assertions to be attached to server-to-server calls to prove authenticity (Refer to https://datatracker.ietf.org/doc/html/rfc7521). The partner's private key signs the assertion metadata, and SGDex will use the partner's onboarded JWKS endpoint to obtain the public key for verification. Below is a sample of the JWT header and payload of the client assertion:

  {
    "typ": "JWT",
    "alg": "ES256",
    "kid": "x0zDLIC9yNRIXu3gW8nTQDOMNe7sKMAjQnZj3AWTW2U",
  } . {
    "sub": "STG2-APIM-SELF-TEST",
    "jti": "jNDZuyLw66gkTjmCNMawzrTJNlhS8wdjpU0DHTzo",
    "aud": "https://api.staging-sgdex.gov.sg/sgfindex/fpdata/77e0ff15-88be-474a-84ab-5b24ac2fb9d6",
    "iss": "STG2-APIM-SELF-TEST",
    "iat": 1662365106,
    "exp": 1662365406,
    "htm": "POST"
  }

Description of JWT header attributes:

  • {typ} Type - value "JWT"
  • {alg} Algorithm - value "ES256"
  • {kid} Key ID - The unique identifier for the key.

Description of JWT payload attributes:

  • {sub} Subject - client_id issued by SGDex upon onboarding
  • {jti} JWT ID - random unique identifier
  • {aud} Audience - URL that partner's application is calling
  • {iss} Issuer - client_id issued by SGDex upon onboarding
  • {iat} Issued At (Payload) - current timestamp
  • {exp} Expiry (Payload) - expiry timestamp
  • {htm} HTTP Method (Payload) - HTTP method for the request to which the JWT is attached

JWKS Requirements for Participants

When onboarding to SGDex, every Participant is required to provide JWKS (JSON Web Key Set) endpoint.

The JWKS endpoint which hosts the JWK (JSON Web Key) must meet the following requirements.

  • Endpoint is served behind HTTPS on port 443 using a TLS server certificate issued by a standard publicly verifiable CA issuer (no private CAs), with a complete certificate chain presented by the server.
  • No other custom HTTP header requirements outside standard HTTP headers.
  • Able to respond in 3 seconds.

A JWKS endpoint can host multiple JWKs, using a key ID kid to distinguish between each JWK.

The JWK will be used in the following scenarios:

  • Signature JWK is used to verify the client assertion presented when consuming APIs.
  • Encryption JWK is used to encrypt the response of data APIs.

JWK for Signature

The signature JWK will be used to verify the client assertion JWT presented in request, thereby authenticating the client.

The signature JWK should have the following attributes:

  • Must contain a key use use field of value sig, refer to rfc7517#section-4.2.

  • Must contain a key ID kid field, refer to rfc7517#section-4.5.

  • Must contain key type kty of either EC or RSA.

    • For key type kty of value EC, with algorithm alg of value ES256 and curve crv of value P-256.

    • For key type kty of value RSA, with algorithm alg of value RS256.

Example:

// EC Signature Key
{
  "kty": "EC",
  "use": "sig",
  "kid": "sig-2021-01-15T12:09:06Z",
  "alg": "ES256",
  "crv": "P-256",
  "x": "Tjm2thouQXSUJSrKDyMfVGe6ZQRWqCr0UgeSbNKiNi8",
  "y": "8BuGGu519a5xczbArHq1_iVJjGGBSlV5m_FGBJmiFtE"
}

// RSA Signature Key
{
  "kty": "RSA",
  "kid": "sig-2023-06-15T14:31:42Z",
  "use": "sig",
  "alg": "RS256",
  "e": "AQAB",
  "n": "z7HAG7BFZu-VkvcMceXFH4Jt0y2ZZTgD10Y_GuD8iXi_c6SeAreF6KEXpq3mC_bpspf75hCW--mibqiXxJhxOAAOfQ0WAU-W2tWWlv--tDKsLlKUFF5ebWyZHjWPqPEjRIyc8nkqvlGqAjLp7oefcpOgvbZwMcSc7hrh7NX2nSBDJzyBCVRx-CLKe5q3_9bZzbfudK2RHo9o9p6pC6QCE6url2fEpsPC4M3j4T283ksJFpqOxsbmwp5ns_tmHBkN099NHfgrcda5GLrv8DYKW1vcPQ1RlDThlP3EiWefXx76AiTMby1CkArwafD20zurqdngcSjHuJ80_hxou1WCfw"
}

Key rotation for signature key

To rotate the signature keys with zero downtime, the client must:

  • Host the replacement signature key in the JWKS endpoint onboarded.
  • Ensure the replacement signature key has a different key ID kid to the original key.
  • Ensure the replacement signature key matches the other cryptographic key requirements.

JWK for Encryption

The encryption JWK will be used to encrypt data requested.

The encryption JWK must have the following attributes:

  • Must contain a key use use field of value enc, refer to rfc7517#section-4.2.

  • Must contain a key ID kid field, refer to rfc7517#section-4.5.

  • Must contain key type kty of either EC or RSA.

    • For key type kty of value EC, with algorithm alg of value ECDH-ES+A256KW and curve crv of value P-256.

    • For key type kty of value RSA, with algorithm alg of value RSA-OAEP.

  • If there are multiple keys that meets requirements, the first EC or RSA key will be used.

  • If encryptionKid is provided as parameter during data pull, encryptionKid will be used to filter the keys in the JWKS. Criteria of keys listed above applies.

Example:

// EC Encryption Key
{
  "kty": "EC",
  "use": "enc",
  "kid": "enc-2021-01-15T12:09:06Z",
  "crv": "P-256",
  "x": "xom6kD54yfXRPvMFVYFlVjUKzmNhz7wf0DP_2h9kXtY",
  "y": "lrh8C9c8-SBJTm1FcfqLkj2AnHtaxpnB1qsN6PiFFJE",
  "alg": "ECDH-ES+A256KW"
}

// RSA Encryption Key
{
  "kty": "RSA",
  "kid": "enc-2023-06-15T14:31:42Z",
  "use": "enc",
  "alg": "RSA-OAEP",
  "e": "AQAB",
  "n": "-fbCIK-zGdvVjoOJ78M-7l-Avu80MsSPvOCn1IKUACRS31G-H2Z64vvjz6o-h5dEldwhpFCRPmdTl0TEvj4AIcw6CcWLUmL7QttLSW_kaZ3FVV_UaUzjGSP5G9MrEfC67zwl7b1td3N93szrPA47YYXjgmLq9t2MswFyIYQ6pkBhO4_9joTmrz9LcPnOQrqZx2_X9GUIsQAA52Su3ZdxCuCLhUdSe9_AwMdxuhtBCfTdwJEArwcj-3jDxAlZL_Vr1OImBtsgQ2dnCMDE_weaA2NQp2dIQ5zj7a_zaZ8l3G5L2TGKXeCEo8rDuGjvuYQ4fLxjyiJqLydzosCaeB7N7w"
}

Key rotation for encryption key

To rotate the encryption key with zero downtime, the client must:

  • Host the replacement encryption key in the JWKS endpoint onboarded.
  • Identify private key to decrypt JWE using key ID kid in JWE.
  • Ensure the replacement encryption key matches the other cryptographic key requirements.

Person and Corporate Data Signing and Encryption

Before user data is returned to a Consumer, the response payload for the Person/Corporate Data API is first signed, then encrypted by SGDex:

In order to read the response payload, a Consumer has to perform the following steps in this order:

  1. Decrypt the response payload with the Consumer's private encryption key. This private encryption key should correspond to the Consumer's encryption public key in the Consumer's JWKS endpoint that has been onboarded onto SGDex.
  2. Validate the decrypted payload signature with SGDex's public signing key returned from SGDex's JWKS endpoint.

After completing the steps above, the Consumer will be able to extract the payload in JSON format.

Step 1: Decryption

  • The response payload is encrypted using a Consumer public encryption key provided in their onboarded JWKS endpoint. Therefore, decryption of the payload is to be done using the Consumer's corresponding private encryption key.
  • Current encryption algorithms used:
    • ECDH-ES+A256KW (for content key wrapping)
    • A256GCM (for content encryption)

Step 2: Verification of Signature

  • The decrypted payload is signed according to the JWS (JSON Web Signature) format, similar to the access token.
    • Signature algorithm used is ES256.
    • Additional attributes iat (epoch time when the signature is generated) is included in the JWS header.
    • Verify the decrypted payload signature with SGDex's public signing key returned from SGDex's JWKS endpoint.

ERRORS

Error Handling

SGDex uses standard HTTP response codes to indicate the success or failure of each API request. For successful requests, our APIs return 2XX codes. Generally, our HTTP error codes have the following implication:

  • 4XX: Indicates error in the request format, parameters or that your requested items are not found
  • 5XX: Indicates Server errors

The general format of our error responses are as follows:

{
    "code": "integer (int32), this is our custom error code.",
    "message": "string"
}

List of HTTP Response Codes:

Code Possible Reasons
400 Bad Request
  • Invalid parameters (missing, additional or wrongly formatted)
  • 401 Unauthorised
  • The client_id/system_id mismatched with iss field in JWT token
  • 403 Forbidden
  • No permission to modify an item
  • 404 Not Found
  • Invalid Path Parameters
  • ID given was not found
  • 500 Server Error
  • Unexpected Error
  • Refer to the individual API definitions for the error codes you might encounter for each API.

    ENVIRONMENTS

    Available Environments

    Staging Environment

    This environment allows you to test your application with production-level security requirements, without needing to test your application directly in production.

    The following are some essential information that you might need to test your applications with:

    Production Environment

    The environment where your application will be integrated with SGDex in production.

    The following are some essential information that you might need to test your applications with:

    VERSIONING

    This section mentions all information related to versioning.

    Release Notes

    • 1.2.2-release (10 Jun 2025)

      • Added person and entity API
      • Added person and entity scopes
    • 1.2.1-release (24 Jul 2024)

      • Cleaning up of specifications
    • 1.2.0-release (27 Jun 2024)

      • Removed organisation concept
      • Removed dex path parameter from application, endpoint, jwks endpoint, webhook. organisation and participant API.
      • Updated update enrolment API to support the update of processing_task array
      • Added create authorisation request API
    • 1.1.0-release (6 Nov 2023)

      • Removed usecase api service concept
      • Removed directory concept
      • API/Topic softlink to usecase only
      • Mandate iat field as mandatory in generated signed JWT
      • Added new resource api
      • Added new supported security mechanism (APIkey) for endpoint
    • 1.0.0-release (20 Jun 2022)

      • Added new scope field to routing api - Retrieving Data
      • Added input format and validation pattern
    • 0.1.1 (13 Jan 2022)

      • Added SGTraDex helper API, JWKS API
    • 0.1.0 (12 August 2021)

      • Initial Draft including APIs for pull and push data

    Releases and Compatibility

    Releases

    SGDex's RESTful API adopts Semantic Versioning 2.0.0 for releases with the following format:

    {MAJOR}.{MINOR}.{PATCH}

    The table below lists the possible changes to the release version numbers and what they imply.

    {MAJOR} increments {MINOR} increments {PATCH} increments
    Introduces incompatible API changes with the previous {MAJOR} version Introduces new functionalities or information that are backward compatible Introduces bug fixes and remains backward compatible
    e.g. v1.2.1 --> v2.0.0 e.g. v1.2.1 --> v1.3.0 e.g. v1.2.1 --> v1.2.2

    DATA FIELDS

    The following are the available scopes for SGDex Person & Entity APIs.

    Person Scopes

    Scope NameDescription
    uinfinNRIC/FIN
    partial_uinfinPartial NRIC/FIN
    namePrincipal Name
    alias_nameAlias Name
    hanyu_pinyin_nameHanyu Pinyin Name
    hanyu_pinyin_alias_nameHanyu Pinyin Alias Name
    married_nameMarried Name
    sexSex
    raceRace
    secondary_raceSecondary Race
    dialectDialect
    date_of_birthDate of Birth
    residential_statusResidential Status
    nationalityNationality/Citizenship
    country_of_birthCountry/Place of Birth
    passport_numberPassport Number
    passport_expiry_datePassport Expiry Date
    pass_typePass Type
    pass_statusPass Status
    pass_expiry_datePass Expiry Date
    employment_sectorEmployment Sector
    mobile_numberMobile Number
    emailEmail Address
    registered_addressRegistered Address
    hdb_typeType of HDB
    housing_typeType of Housing
    cpf_balances.ordinary_accountCPF Balances - Ordinary Account
    cpf_balances.medisave_accountCPF Balances - Medisave Account
    cpf_balances.retirement_accountCPF Balances - Retirement Account
    cpf_balances.special_accountCPF Balances - Special Account
    cpf_contributionsCPF Contribution History (up to 15 months)
    cpf_housing_withdrawalCPF Housing Withdrawal
    cpf_investment_scheme.accountCPF Investment Scheme - Account
    cpf_investment_scheme.number_of_discounted_singtel_sharesCPF Investment Scheme - Number of Discounted Singtel Shares
    cpf_investment_scheme.saq_participation_statusCPF Investment Scheme - Self-Awareness Questionnaire (SAQ) Participation Status
    notice_of_assessment_basicNotice of Assessment (Basic, Latest Year)
    notice_of_assessment_history_basicNotice of Assessment (Basic, Last 2 Years)
    notice_of_assessmentNotice of Assessment (Detailed, Latest Year)
    notice_of_assessment_historyNotice of Assessment (Detailed, Last 2 Years)
    ownership_of_private_property_indicatorOwnership of Private Residential Property
    driving_licence.com_statusDriving Licence - Certificate of Merit Status
    driving_licence.total_demerit_pointsDriving Licence - Total Demerit Points
    driving_licence.suspension.start_dateDriving Licence - Suspension Start Date
    driving_licence.suspension.end_dateDriving Licence - Suspension End Date
    driving_licence.disqualification.start_dateDriving Licence - Disqualification Start Date
    driving_licence.disqualification.end_dateDriving Licence - Disqualification End Date
    driving_licence.revocation.start_dateDriving Licence - Revocation Start Date
    driving_licence.revocation.end_dateDriving Licence - Revocation End Date
    driving_licence.provisional_driving_licence.validityDriving Licence - Provisional Driving Licence Validity
    driving_licence.provisional_driving_licence.expiry_dateDriving Licence - Provisional Driving Licence Expiry Date
    driving_licence.provisional_driving_licence.classesDriving Licence - Provisional Driving Licence Class
    driving_licence.qualified_driving_licence.validityDriving Licence - Qualified Driving Licence Validity
    driving_licence.qualified_driving_licence.expiry_dateDriving Licence - Qualified Driving Licence Expiry Date
    driving_licence.qualified_driving_licence.classesDriving Licence - Qualified Driving Licence Class
    driving_licence.photo_card_serial_numberDriving Licence - Photo Card Serial Number
    vehicles.vehicle_numberVehicles - Vehicle Number
    vehicles.typeVehicles - Vehicle Type
    vehicles.iu_label_numberVehicles - IU Label Number
    vehicles.makeVehicles - Vehicle Make
    vehicles.modelVehicles - Vehicle Model
    vehicles.chassis_numberVehicles - Chassis Number
    vehicles.engine_numberVehicles - Engine Number
    vehicles.motor_numberVehicles - Motor Number
    vehicles.year_of_manufactureVehicles - Year of Manufacture
    vehicles.first_registration_dateVehicles - First Registration Date
    vehicles.original_registration_dateVehicles - Original Registration Date
    vehicles.coe_categoryVehicles - COE Category
    vehicles.coe_expiry_dateVehicles - COE Expiry Date
    vehicles.road_tax_expiry_dateVehicles - Road Tax Expiry Date
    vehicles.quota_premiumVehicles - Quota Premium
    vehicles.open_market_valueVehicles - Open Market Value
    vehicles.co2_emissionVehicles - CO2 Emission Rate
    vehicles.statusVehicles - Vehicle Status
    vehicles.primary_colourVehicles - Primary Colour
    vehicles.secondary_colourVehicles - Secondary Colour
    vehicles.attachment_1Vehicles - Attachment 1
    vehicles.attachment_2Vehicles - Attachment 2
    vehicles.attachment_3Vehicles - Attachment 3
    vehicles.schemeVehicles - Vehicle Scheme
    vehicles.thc_emissionVehicles - THC Emission Rate
    vehicles.co_emissionVehicles - CO Emission Rate
    vehicles.nox_emissionVehicles - NOx Emission Rate
    vehicles.pm_emissionVehicles - PM Emission Rate
    vehicles.engine_capacityVehicles - Engine Capacity
    vehicles.power_rateVehicles - Power Rate
    vehicles.effective_ownershipVehicles - Effective Date/Time of Ownership
    vehicles.propellantVehicles - Propellant
    vehicles.maximum_unladen_weightVehicles - Max Unladen Weight
    vehicles.maximum_laden_weightVehicles - Max Laden Weight
    vehicles.minimum_parf_benefitVehicles - Minimum PARF Benefit
    vehicles.number_of_transfersVehicles - No. of Transfers
    vehicles.vpcVehicles - Vehicle Parking Certificate
    maritalMarital Status
    marriage_dateMarriage Date
    divorce_dateDivorce Date
    marriage_cert_numberMarriage Certificate Number
    country_of_marriageCountry/Place of Marriage
    children_birth_records.birth_certificate_numberChildren Birth Records - Birth Cert Number
    children_birth_records.nameChildren Birth Records - Name
    children_birth_records.alias_nameChildren Birth Records - Alias Name
    children_birth_records.hanyu_pinyin_nameChildren Birth Records - Hanyu Pinyin Name
    children_birth_records.hanyu_pinyin_alias_nameChildren Birth Records - Hanyu Pinyin Alias Name
    children_birth_records.married_nameChildren Birth Records - Married Name
    children_birth_records.sexChildren Birth Records - Sex
    children_birth_records.raceChildren Birth Records - Race
    children_birth_records.secondary_raceChildren Birth Records - Secondary Race
    children_birth_records.date_of_birthChildren Birth Records - Date of Birth
    children_birth_records.time_of_birthChildren Birth Records - Time of Birth
    children_birth_records.dialectChildren Birth Records - Dialect
    children_birth_records.life_statusChildren Birth Records - Life Status
    children_birth_records.vaccination_requirementsChildren Birth Records - Child Vaccination
    children_birth_records.singapore_citizen_at_birth_indicatorChildren Birth Records - Singapore Citizen at Birth Indicator
    sponsored_children_records.nricSponsored Children Records - NRIC / FIN
    sponsored_children_records.nameSponsored Children Records - Name
    sponsored_children_records.alias_nameSponsored Children Records - Alias Name
    sponsored_children_records.hanyu_pinyin_nameSponsored Children Records - Hanyu Pinyin Name
    sponsored_children_records.hanyu_pinyin_alias_nameSponsored Children Records - Hanyu Pinyin Alias Name
    sponsored_children_records.married_nameSponsored Children Records - Married Name
    sponsored_children_records.sexSponsored Children Records - Sex
    sponsored_children_records.raceSponsored Children Records - Race
    sponsored_children_records.secondary_raceSponsored Children Records - Secondary Race
    sponsored_children_records.dialectSponsored Children Records - Dialect
    sponsored_children_records.date_of_birthSponsored Children Records - Date of Birth
    sponsored_children_records.birth_countrySponsored Children Records - Country/Place of Birth
    sponsored_children_records.life_statusSponsored Children Records - Life Status
    sponsored_children_records.residential_statusSponsored Children Records - Residential Status
    sponsored_children_records.nationalitySponsored Children Records - Nationality/Citizenship
    sponsored_children_records.grant_dateSponsored Children Records - SC / PR / LTVP Grant Date
    sponsored_children_records.vaccination_requirementsSponsored Children Records - Child Vaccination
    employmentName of Employer
    occupationOccupation
    cpf_employersCPF Employers
    academic_qualifications.transcriptsSingapore-Cambridge Examination
    academic_qualifications.certificatesSingapore-Cambridge Examination (OpenCert)
    lta_vocational_licences.tdvl.licence_nameLTA Vocational Licences - TDVL Licence Name
    lta_vocational_licences.tdvl.vocational_licence_numberLTA Vocational Licences - TDVL Vocational Licence Number
    lta_vocational_licences.tdvl.expiry_dateLTA Vocational Licences - TDVL Expiry Date
    lta_vocational_licences.tdvl.statusLTA Vocational Licences - TDVL Status
    lta_vocational_licences.pdvl.licence_nameLTA Vocational Licences - PDVL Licence Name
    lta_vocational_licences.pdvl.vocational_licence_numberLTA Vocational Licences - PDVL Vocational Licence Number
    lta_vocational_licences.pdvl.expiry_dateLTA Vocational Licences - PDVL Expiry Date
    lta_vocational_licences.pdvl.statusLTA Vocational Licences - PDVL Status
    lta_vocational_licences.bavl.licence_nameLTA Vocational Licences - BAVL Licence Name
    lta_vocational_licences.bavl.vocational_licence_numberLTA Vocational Licences - BAVL Vocational Licence Number
    lta_vocational_licences.bavl.expiry_dateLTA Vocational Licences - BAVL Expiry Date
    lta_vocational_licences.bavl.statusLTA Vocational Licences - BAVL Status
    lta_vocational_licences.bdvl.licence_nameLTA Vocational Licences - BDVL Licence Name
    lta_vocational_licences.bdvl.vocational_licence_numberLTA Vocational Licences - BDVL Vocational Licence Number
    lta_vocational_licences.bdvl.expiry_dateLTA Vocational Licences - BDVL Expiry Date
    lta_vocational_licences.bdvl.statusLTA Vocational Licences - BDVL Status
    lta_vocational_licences.odvl.licence_nameLTA Vocational Licences - ODVL Licence Name
    lta_vocational_licences.odvl.vocational_licence_numberLTA Vocational Licences - ODVL Vocational Licence Number
    lta_vocational_licences.odvl.expiry_dateLTA Vocational Licences - ODVL Expiry Date
    lta_vocational_licences.odvl.statusLTA Vocational Licences - ODVL Status
    hdb_ownership.number_of_ownersHDB Ownership - Number of Owners
    hdb_ownership.addressHDB Ownership - Address
    hdb_ownership.hdb_typeHDB Ownership - Type of HDB Dwelling
    hdb_ownership.lease_commencement_dateHDB Ownership - Lease Commencement Date
    hdb_ownership.term_of_leaseHDB Ownership - Term of Lease
    hdb_ownership.date_of_purchaseHDB Ownership - Date of Purchase
    hdb_ownership.date_of_ownership_transferHDB Ownership - Date of Transfer of Ownership
    hdb_ownership.loan_grantedHDB Ownership - Loan Granted
    hdb_ownership.original_loan_repaymentHDB Ownership - Original Loan Repayment Period
    hdb_ownership.balance_loan_repaymentHDB Ownership - Balance Loan Repayment Period
    hdb_ownership.outstanding_loan_balanceHDB Ownership - Outstanding HDB Loan Balance
    hdb_ownership.monthly_loan_instalmentHDB Ownership - Monthly Loan Instalment
    hdb_ownership.purchase_priceHDB Ownership - Purchase Price
    hdb_ownership.outstanding_instalmentHDB Ownership - Outstanding Instalment
    pioneer_generation.eligibilityPioneer Generation Eligibility
    merdeka_generation.eligibilityMerdeka Generation Eligibility

    Entity Scopes

    Scope NameDescription
    entity_profileEntity Profile
    previous_namesPrevious Names
    previous_uensPrevious UENs
    addressAddresses
    financialsFinancials
    capitalCapitals
    appointmentsAppointments
    shareholdersShareholders
    grantsGrants
    buildersBuilders
    contractorsContractors
    gov_contractsGovernment contracts
    licencesLicences
    gas_consumptionGas Consumption
    electricity_consumptionElectricity Consumption
    water_consumptionWater Consumption

    SUPPORT

    Please contact the SGDex team at support@sgdex.gov.sg for support.

    Retrieving JSON Web Key Set (JWKS)

    Get Public Key

    This API will return the updated SGDex's public key information by default. With passing kid (the unique identifier for the key) in the path parameter, this API will return the specified public key information.

    path Parameters
    kid
    string

    The unique identifier for the key.

    NOTE: If this parameter is not provided, the result will show an array of keys that are available.

    Responses

    Response samples

    Content type
    application/json
    Example
    {
    • "keys": [
      ]
    }

    Usecase

    Create Usecase

    This API allows admin to create a Usecase.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    usecase_id
    required
    string

    Unique ID of the Usecase you want to create. The usecase_id is a case-sensitive alphanumeric string that does not allow for spaces or special characters with the exception of '-' and '_'.

    name
    required
    string

    The name of the Usecase you want to create.

    description
    required
    string

    The description of the Usecase you want to create

    Responses

    Request samples

    Content type
    application/json
    {
    • "usecase_id": "sample_usecase_id",
    • "name": "Sample Usecase",
    • "description": "This is a sample Usecase."
    }

    Response samples

    Content type
    application/json
    {
    • "usecase_id": "sample_usecase_id"
    }

    Get Usecase

    This API allows admin to get a Usecase or get a list of Usecases.

    • If usecase_id is specified, then this API will return a list with a single Usecase.
    • If usecase_id is not specified, then this API will return a list of all Usecases in the Dex.
    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_id
    string

    The unique id of the Usecase you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Usecase

    This API allows admin to update a Usecase.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_id
    required
    string

    The unique id of the Usecase you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    usecase_name
    required
    string

    The name of the Usecase.

    description
    required
    string

    The description of the Usecase.

    Responses

    Request samples

    Content type
    application/json
    {
    • "usecase_name": "Sample Usecase 2",
    • "description": "This is a sample Usecase."
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Usecase

    This API allows admin to delete a Usecase.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_id
    required
    string

    The unique id of the Usecase you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Usecase API

    Create Usecase API

    This API allows admin to create a Usecase API.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    name
    required
    string

    The name of the Usecase API you want to create.

    description
    required
    string

    The description of the Usecase API you want to create.

    version
    required
    integer

    The version number of the Usecase API you want to create. It has to be a positive integer.

    http_method
    required
    string

    The HTTP method that this Usecase API will use.

    api_type
    required
    string

    The type of this Usecase API. Value can only be SYNC or ASYNC

    object

    This object only needs to be defined for oauth2 Usecase APIs

    softlink
    Array of strings

    An array of strings that specify the Usecases that this Usecase API is related to.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "sample_api",
    • "version": 1,
    • "http_method": "GET",
    • "description": "This is a sample Usecase API.",
    • "api_type": "SYNC",
    • "oauth2": {
      },
    • "softlink": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "usecase_api_id": "f727a5a9-5d30-49f8-8dd7-5b315cab5f4b"
    }

    Get Usecase API

    This API allows admin to get a Usecase API or get a list of Usecase APIs that satisfy the attributes you specify.

    • If usecase_api_id is specified, then this API will return a list with a single Usecase API.
    • If usecase_api_id is not specified and other criteria are specified, then this API will return a list of all Usecase APIs that satisfy those criteria.
    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_api_id
    string

    The unique id of the Usecase API you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    name
    string
    Example: name=sample_name

    The name of the Usecase API you are interested in. If this is specified, usecase_api_id must not be specified. This field must be specified if usecase_api_id is not specified.

    http_method
    string
    Example: http_method=GET

    The HTTP method of the Usecase API you are interested in. This is an optional field when the name is specified.

    version
    integer
    Example: version=1

    The version of the Usecase API you are interested in. This is an optional field when the name is specified.

    published
    boolean
    Example: published=true

    The published status of the Usecase API you are interested in. This is an optional field when the name is specified.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Usecase API

    This API allows admin to update a Usecase API.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_api_id
    required
    string

    The unique id of the Usecase API you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    name
    required
    string

    The name of the Usecase API.

    description
    required
    string

    The description of the Usecase API.

    version
    required
    integer

    The version number of the Usecase API. It has to be a positive integer.

    http_method
    required
    string

    The HTTP method that this Usecase API will use.

    api_type
    required
    string

    The type of this Usecase API. Value can only be SYNC or ASYNC

    object

    This object only needs to be defined for oauth2 Usecase APIs

    softlink
    Array of strings

    An array of strings that specify the Usecases that this Usecase API is related to.

    published
    boolean

    Set this to true when you want to publish this Usecase API. You cannot unpublish a Usecase API once it is published.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "sample_api_changed",
    • "version": 1,
    • "http_method": "POST",
    • "description": "This is a changed sample Usecase API.",
    • "api_type": "SYNC",
    • "oauth2": {
      },
    • "softlink": [
      ],
    • "published": true
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Usecase API

    This API allows admin to delete a Usecase API.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_api_id
    required
    string

    The unique id of the Usecase API you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Usecase Topic

    Create Usecase Topic

    This API allows admin to create a Usecase Topic.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    name
    required
    string

    The name of the Usecase Topic you want to create.

    description
    required
    string

    The description of the Usecase Topic you want to create.

    softlink
    Array of strings

    An array of strings that specify the Usecases that this Usecase Topic is related to.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "sample_topic",
    • "description": "This is a sample Usecase Topic.",
    • "softlink": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "usecase_topic_id": "14fb72b6-325d-4174-9aaf-fafeef7ddd9e"
    }

    Get Usecase Topic

    This API allows admin to get a Usecase Topic or get a list of Usecase Topics with certain attributes you specify.

    • If usecase_topic_id is specified, then this API will only return a list with a single Usecase Topic.
    • If usecase_topic_id is not specified and name is specified, then this API will return a list of all Usecase Topics with that name.
    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_topic_id
    string

    The unique id of the Usecase Topic you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    name
    string
    Example: name=sample_topic

    The name of the Usecase Topic you are interested in. If this is specified, usecase_topic_id must not be specified. This field must be specified if usecase_topic_id is not specified.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Usecase Topic

    This API allows admin to update a Usecase Topic.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_topic_id
    required
    string

    The unique id of the Usecase Topic you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    name
    required
    string

    The name of the Usecase Topic.

    description
    required
    string

    The description of the Usecase Topic.

    softlink
    Array of strings

    An array of strings that specify the Usecases that this Usecase Topic is related to.

    published
    boolean

    Set this to true when you want to publish this Usecase Topic. You cannot unpublish a Usecase Topic once it is published.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "sample_topic_changed",
    • "description": "This is a changed sample Usecase Topic.",
    • "softlink": [
      ],
    • "published": true
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Usecase Topic

    This API allows admin to delete a Usecase Topic.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    usecase_topic_id
    required
    string

    The unique id of the Usecase Topic you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Participant

    Create Participant

    This API allows admin to create a Participant.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    entity_id
    required
    string

    The UEN that this participant would be part of.

    alias
    required
    string

    The alias of the participant.

    description
    required
    string

    The description of the participant.

    Responses

    Request samples

    Content type
    application/json
    {
    • "entity_id": "197900305Z",
    • "alias": "participant1",
    • "description": "This is a sample participant."
    }

    Response samples

    Content type
    application/json
    {
    • "participant_id": "28c60ead-9584-4998-a94d-2fae8ed61615"
    }

    Get Participant

    This API allows admin to get a Participant, get a list of Participants based on organisation_id or get all Participants in the Dex.

    • If participant_id is specified, then this API will only return a list wih a single Participant.
    • If participant_id is not specified and entity_id is specified, then this API will return a list of all Participants in the Dex part of this entity_id.
    • If both participant_id and entity_id are not specified, then this API will return a list of Participants in the Dex.
    path Parameters
    participant_id
    string

    The unique id of the Participant you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    entity_id
    string
    Example: entity_id=197900305Z

    The entity_id you are interested in. If this is specified, participant_id should not be specified.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Participant

    This API allows admin to update a Participant.

    path Parameters
    participant_id
    required
    string

    The unique id of the Participant you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    description
    required
    string

    The new description of the Participant.

    Responses

    Request samples

    Content type
    application/json
    {
    • "description": "This is the new sample description."
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Participant

    This API allows admin to delete a Participant.

    path Parameters
    participant_id
    required
    string

    The unique id of the Participant you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    JWKS Endpoint

    Create JWKS Endpoint

    This API allows admin to create a JWKS Endpoint.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    participant_id
    required
    string

    The unique ID of the participant that this JWKS endpoint belongs to.

    url
    required
    string

    The url of this JWKS Endpoint.

    Responses

    Request samples

    Content type
    application/json
    {}

    Response samples

    Content type
    application/json
    {
    • "jwks_endpoint_id": "5349afea-934d-47f1-9ff4-b55a33ef453b"
    }

    Get JWKS Endpoint

    This API allows admin to get a JWKS Endpoint or get a list of JWKS Endpoints based on participant_id.

    • If jwks_endpoint_id is specified, then this API will return a list with a single JWKS Endpoint.
    • If jwks_endpoint_id is not specified and participant_id is specified, then this API will return a list of all JWKS Endpoints belonging to this Participant.
    path Parameters
    jwks_endpoint_id
    string

    The unique id of the JWKS Endpoint you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    participant_id
    string
    Example: participant_id=28c60ead-9584-4998-a94d-2fae8ed61615

    The participant_id of the Participant you are interested in. If this is specified, jwks_endpoint_id should not be specified.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update JWKS Endpoint

    This API allows admin to update a JWKS Endpoint.

    path Parameters
    jwks_endpoint_id
    required
    string

    The unique id of the JWKS Endpoint you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    url
    required
    string

    The new url of this JWKS Endpoint.

    Responses

    Request samples

    Content type
    application/json
    {}

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete JWKS Endpoint

    This API allows admin to delete a JWKS Endpoint.

    path Parameters
    jwks_endpoint_id
    required
    string

    The unique id of the JWKS Endpoint you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Application

    Create Application

    This API allows admin to create an Application.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    application_id
    string

    The unique ID of this application. If not specified, your application will be assigned an application_id.

    name
    required
    string

    The name of the application.

    description
    required
    string

    The description of the application.

    participant_id
    required
    string

    The participant_id of the Participant this application belongs to.

    required
    object

    The security mechanism information of this application.

    webhook_id
    string

    The webhook_id of the Webhook that this application uses.

    Responses

    Request samples

    Content type
    application/json
    {
    • "application_id": "myApp_id",
    • "name": "myApp",
    • "participant_id": "28c60ead-9584-4998-a94d-2fae8ed61615",
    • "description": "This is a sample application.",
    • "security_mechanism": {
      },
    • "webhook_id": "d4e677a6-2866-4f93-bcbe-735814c38398"
    }

    Response samples

    Content type
    application/json
    {
    • "application_id": "myApp_id"
    }

    Get Application

    This API allows admin to get an Application or get a list of Applications based on participant_id.

    • If application_id is specified, then this API will return a list with a single Application.
    • If application_id is not specified and participant_id is specified, then this API will return a list of all Application belonging to this Participant.
    path Parameters
    application_id
    string

    The unique id of the Application you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    participant_id
    string
    Example: participant_id=28c60ead-9584-4998-a94d-2fae8ed61615

    The participant_id of the Participant you are interested in. If this is specified, application_id should not be specified.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Application

    This API allows admin to update an Application.

    path Parameters
    application_id
    required
    string

    The unique id of the application you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    participant_id
    required
    string

    The unique id of the participant that this application belongs to.

    name
    required
    string

    The name of this application.

    description
    required
    string

    The description of this application.

    required
    object

    The security mechanism of this application.

    webhook_id
    string

    The webhook_id of the Webhook that this application uses.

    Responses

    Request samples

    Content type
    application/json
    {
    • "participant_id": "28c60ead-9584-4998-a94d-2fae8ed61615",
    • "name": "myAppNew",
    • "description": "This is a new sample application description.",
    • "security_mechanism": {
      },
    • "webhook_id": "d4e677a6-2866-4f93-bcbe-735814c38398"
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Application

    This API allows admin to delete an Application.

    path Parameters
    application_id
    required
    string

    The unique id of the Application you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Endpoint

    Create Endpoint

    This API allows admin to create an Endpoint.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    participant_id
    required
    string

    The participant ID assigned to you.

    name
    required
    string

    The name of the endpoint you want to create.

    description
    required
    string

    The description of the endpoint you want to create.

    url
    required
    string

    The url of the endpoint you want to create.

    http_method
    required
    string

    The http method of the endpoint you want to create.

    required
    object

    The security mechanism details of the endpoint you want to create.

    timeout
    number

    The timeout value of the endpoint you want to create.

    Responses

    Request samples

    Content type
    application/json
    {
    • "participant_id": "STG-20230201M-TEST",
    • "name": "Sample endpoint",
    • "description": "This is a sample endpoint",
    • "http_method": "POST",
    • "security_mechanism": {
      },
    • "timeout": 8000
    }

    Response samples

    Content type
    application/json
    {
    • "endpoint_id": "3d8a3fe5-cbaa-4b70-8a6c-a70362ccb6e5"
    }

    Get Endpoint

    This API allows admin to get an Endpoint or get a list of Endpoints with certain attributes you specify.

    • If endpoint_id is specified, then this API will return a list with a single Endpoint.
    • If endpoint_id is not specified and other criteria are specified, then this API will return a list of all Endpoints that satisfy those criteria in the Dex.
    path Parameters
    endpoint_id
    required
    string

    The unique id of the Endpoint you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    participant_id
    required
    string
    Example: participant_id=STG-231696441I-PARTICIPANT

    The participant id of the Endpoint you are interested in. This field must be specified if webhook_id is not specified.

    name
    string
    Example: name=sample_name

    The name of the Endpoint you are interested in.

    http_method
    string
    Example: http_method=POST

    The http_method of the Endpoint you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Endpoint

    This API allows admin to update an Endpoint.

    path Parameters
    endpoint_id
    required
    string

    The unique id of the Endpoint you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    name
    required
    string

    The name of the endpoint you want to update.

    description
    required
    string

    The description of the endpoint you want to update.

    url
    required
    string

    The url of the endpoint you want to update.

    http_method
    required
    string

    The http method of the endpoint you want to update.

    required
    object

    The security mechanism details of the endpoint you want to create.

    timeout
    number

    The timeout value of the endpoint you want to update.

    Responses

    Request samples

    Content type
    application/json
    {
    • "name": "Sample updated endpoint",
    • "description": "This is a sample update endpoint request",
    • "http_method": "POST",
    • "security_mechanism": {
      },
    • "timeout": 5000
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Endpoint

    This API allows admin to delete an Endpoint.

    path Parameters
    endpoint_id
    required
    string

    The unique id of the Endpoint you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Webhook

    Create Webhook

    This API allows admin to create a Webhook.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    participant_id
    required
    string

    The participant ID assigned to you.

    description
    required
    string

    The description of the webhook you want to create.

    url
    required
    string

    The url of the webhook you want to create.

    required
    object

    The security mechanism details of the webhook you want to create.

    timeout
    number

    The timeout value of the webhook you want to create.

    Responses

    Request samples

    Content type
    application/json
    {
    • "participant_id": "STG-20230201M-TEST",
    • "description": "This is a sample webhook",
    • "security_mechanism": {
      },
    • "timeout": 8000
    }

    Response samples

    Content type
    application/json
    {
    • "webhook_id": "3d8a3fe5-cbaa-4b70-8a6c-a70362ccb6e5"
    }

    Get Webhook

    This API allows admin to get a Webhook or get a list of Webhooks with certain attributes you specify.

    • If webhook_id is specified, then this API will return a list with a single Webhook.
    • If webhook_id is not specified and other criteria are specified, then this API will return a list of all Webhooks that satisfy those criteria in the Dex.
    path Parameters
    webhook_id
    string

    The unique id of the Webhook you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    participant_id
    string
    Example: participant_id=STG-231696441I-PARTICIPANT

    The participant id of the Webhook you are interested in. This field must be specified if webhook_id is not specified.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Webhook

    This API allows admin to update a Webhook.

    path Parameters
    webhook_id
    required
    string

    The unique id of the Webhook you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    description
    required
    string

    The description of the webhook you want to update.

    url
    required
    string

    The url of the webhook you want to update.

    required
    object

    The security mechanism details of the webhook you want to update.

    timeout
    number

    The timeout value of the webhook you want to update.

    Responses

    Request samples

    Content type
    application/json
    {
    • "description": "This is a sample update webhook request",
    • "security_mechanism": {
      },
    • "timeout": 5000
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Webhook

    This API allows admin to delete a Webhook.

    path Parameters
    webhook_id
    required
    string

    The unique id of the Webhook you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Enrolment

    Create Enrolment

    This API allows admin to create an Enrolment.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    provider_id
    required
    string

    The participant ID assigned to you.

    enrolment_type
    required
    string

    The type of the enrolment you want to create. Value can only be api, asyncapi or topic

    description
    required
    string

    The description of the enrolment you want to create.

    usecase_api_id
    string

    The usecase api you want to enrol. **applicable when enrolment_type is api or asyncapi

    scope
    string

    The scope you want to enrol. **applicable when enrolment_type is api

    endpoint_id
    string

    The endpoint you want to use in this enrolment. **applicable when enrolment_type is api or asyncapi

    usecase_topic_id
    string

    The usecase topic you want to enrol. **applicable when enrolment_type is topic

    system_id
    string

    The system you want to use in this enrolment. **applicable when enrolment_type is topic

    status
    string

    The status of the enrolment you want to create.

    required
    Array of objects

    An array of object that contains the list of tasks required for this endpoint. The details required for each task vary depending on the configuration.

    Responses

    Request samples

    Content type
    application/json
    {
    • "provider_id": "STG-20230201M-TEST",
    • "enrolment_type": "api",
    • "description": "This is a sample enrolment",
    • "usecase_api_id": "19628b69-3fa4-4963-b387-48efff088753",
    • "endpoint_id": "238f92b4-6386-4e10-a391-08842b460797",
    • "processing_task": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "enrolment_id": "b0c97cc9-d458-4f14-b2c8-b348ba06f35a"
    }

    Get Enrolment

    This API allows admin to get an Enrolment or get a list of Enrolments with certain attributes you specify.

    • If enrolment_id is specified, then this API will return a list with a single Enrolment.
    • If enrolment_id is not specified and other criteria are specified, then this API will return a list of all Enrolments that satisfy those criteria in the Dex.
    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    enrolment_id
    string

    The unique id of the enrolment you are interested in.

    query Parameters
    provider_id
    string
    Example: provider_id=STG-231696441I-PROVIDER

    The participant id of the Webhook you are interested in. This field must be specified if enrolment_id is not specified.

    status
    string
    Example: status=APPROVED

    enrolment status. Value can be APPROVED, REJECTED, PENDING, WITHDRAWN_BY_CONSUMER, WITHDRAWN_BY_PROVIDER, WITHDRAWN_BY_ADMIN

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Enrolment

    This API allows admin to approve or reject an Enrolment.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    enrolment_id
    required
    string

    The unique id of the Enrolment you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    status
    required
    string

    The status you want to update for your enrolment. Current supported values are APPROVED or REJECTED

    comment
    string

    The comment you want to update for your enrolment. **mandatory when status is REJECTED

    Array of objects

    An array of object that contains the list of tasks required for this endpoint. The details required for each task vary depending on the configuration. **applicable only when status is APPROVED

    Responses

    Request samples

    Content type
    application/json
    {
    • "status": "APPROVED",
    • "comment": "I approved this enrolment",
    • "processing_task": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Enrolment

    This API allows admin to delete an Enrolment.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    enrolment_id
    required
    string

    The unique id of the Enrolment you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Subscription

    Create Subscription

    This API allows admin to create a Subscription.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    consumer_id
    required
    string

    The participant ID assigned to you.

    description
    required
    string

    The description of the subscription you want to create.

    Array of objects

    The list of usecase api you want to subscribe. **either api or topic must be presented

    Array of objects

    The list of usecase topic you want to subscribe. **either api or topic must be presented

    Responses

    Request samples

    Content type
    application/json
    {
    • "consumer_id": "STG-20230201M-TEST",
    • "description": "My subscription",
    • "api": [
      ],
    • "topic": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "subscription_id": [
      ]
    }

    Get Subscription

    This API allows admin to get a Subscription or get a list of Subscriptions with certain attributes you specify.

    • If subscription_id is specified, then this API will return a list with a single Subscription.
    • If subscription_id is not specified and other criteria are specified, then this API will return a list of all Subscriptions that satisfy those criteria in the Dex.
    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    subscription_id
    string

    The unique id of the subscription you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    consumer_id
    string
    Example: consumer_id=STG-231696441I-CONSUMER

    The participant id of the Webhook you are interested in. This field must be specified if subscription_id is not specified.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Update Subscription

    This API allows admin to update the scope of Subscription.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    subscription_id
    required
    string

    The unique id of the Subscription you want to update.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    scope
    required
    Array of arrays

    The new scope array to update in subscription.

    Responses

    Request samples

    Content type
    application/json
    {
    • "scope": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Delete Subscription

    This API allows admin to delete Subscription/Subscription(s).

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    subscription_id
    string

    The unique id of the Subscription you are interested in.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    subscriptions
    Array of arrays

    The list of subscriptions ids to delete.

    Responses

    Request samples

    Content type
    application/json
    {
    • "subscription": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Approve/Reject Subscription

    This API allows admin to approve or reject Subscription.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    subscription_id
    required
    string

    The unique id of the Subscription you want to approve/reject.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    status
    required
    string

    The given status for the subscription.

    comment
    string

    The comment of approving/rejecting the subscription. **mandatory when rejecting the subscription

    Responses

    Request samples

    Content type
    application/json
    {
    • "status": "REJECTED",
    • "comment": "Rejected subscription due to invalid scope requested"
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Create Authorisation Request

    This API allows data provider to grant permission to data consumer.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    request_type
    required
    string

    The type of this authorisation request.

    consumer_id
    required
    string

    The consumer you want to give permission to consume your data.

    client_id
    required
    string

    The consumer application you want to give permission to consume your data.

    provider_id
    required
    string

    The participant ID assigned to you.

    endpoint_id
    required
    string

    The endpoint you want to give permission to consumer.

    usecase_api_id
    required
    string

    The usecase api that your endpoint is enrolled.

    status
    string

    The status of the authorisation request you want to create.

    description
    string

    The description of the authorisation request you want to create.

    Responses

    Request samples

    Content type
    application/json
    {
    • "request_type": "api",
    • "consumer_id": "STG-20230201M-TEST",
    • "client_id": "STG-20230201M-TEST-APP",
    • "provider_id": "STG-20240516H-PROVIDER",
    • "endpoint_id": "8310efad-c183-46c6-85f4-874019997e64",
    • "usecase_api_id": "d34c1cf4-616e-460c-96d3-cfea06dd4fe2",
    • "status": "APPROVED",
    • "description": "My Authorisation Request"
    }

    Response samples

    Content type
    application/json
    {
    • "api_subscription_request_id": "9f654e70-24fb-4885-be6c-417760c4fcfa"
    }

    Get Subscription Request

    This API allows admin to get a Subscription Request or get a list of Subscription Request with certain attributes you specify.

    • If subscription_request_id is specified, then this API will return a list with a single Subscription Request.
    • If subscription_request_id is not specified and other criteria are specified, then this API will return a list of all Subscription Request that satisfy those criteria in the Dex.
    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    subscription_request_id
    string

    The unique id of the subscription request you are interested in. If this is specified, no query string parameters should be specified.

    query Parameters
    provider_id
    string
    Example: provider_id=STG-241696441L-PROVIDER

    The participant id of the subscription request you are interested in. This field must be specified if subscription_request_id is not specified.

    status
    string
    Example: status=APPROVED

    status of subscription request you are interested in. Value can be APPROVED, REJECTED, PENDING, WITHDRAWN_BY_CONSUMER, WITHDRAWN_BY_PROVIDER, WITHDRAWN_BY_ADMIN

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Approve/Reject Subscription Request

    This API allows admin to approve or reject Subscription Request.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    subscription_request_id
    required
    string

    The unique id of the Subscription Request you want to approve/reject.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    status
    required
    string

    The given status for the subscription request.

    comment
    string

    The comment of approving/rejecting the subscription request. **mandatory when rejecting the subscription request

    Responses

    Request samples

    Content type
    application/json
    {
    • "status": "REJECTED",
    • "comment": "Rejected subscription request"
    }

    Response samples

    Content type
    application/json
    {
    • "code": 0,
    • "message": "string"
    }

    Retrieving Data

    Get Data (SYNC)

    This API will federate the call to fetch from relevant providers based on pre-existing configuration and return the combined responses.
    This is a synchronous GET call to pull the data. Data will be in the response payload.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    apiname
    required
    string

    A unique api name within the specific data exchange.

    query Parameters
    client_id
    required
    string

    Unique ID for the data consuming service.

    provider
    Array of strings

    The id of providers to get the data from.

    query
    string
    Example: query=filter:my filter parameter

    An optional query parameter to filter the result based. This parameter will be passed to the provider end and can be intercepted by the data exchange layer to perform a filtered query to the provider API.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Responses

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get Data (SYNC)

    This API will federate the call to fetch from relevant providers based on pre-existing configuration and return the combined responses.
    This is a synchronous POST call to pull the data. Data will be in the response payload.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    apiname
    required
    string

    A unique api name within the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token. Refer to Data Exchange (Client) Authentication section on how this token should be generated.

    Request Body schema: application/json
    client_id
    required
    string

    Unique ID for the data consuming service.

    provider
    Array of strings

    The id of providers to get the data from.

    query
    string

    An optional query parameter to filter the result based. This parameter will be passed to the provider end and can be intercepted by the data exchange layer to perform a filtered query to the provider API.

    payload
    string

    An optional stringtify payload parameter. This payload will be passed to the provider end.

    Note - If both payload and query are given, query will be ignored.

    Responses

    Request samples

    Content type
    application/json
    {
    • "client_id": "client123",
    • "provider": [
      ],
    • "query": "filter=myfilter",
    • "payload": "{attribute1: xx, attribute2: xx}"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get Data via Resource ID

    This API returns user's data from data source(s) when presented with a valid access token obtained from the Token API.

    Prerequisite: Client application is required to call Authorise API to get user consent and Token API to get the access token before calling the Data API.

    path Parameters
    identifier
    required
    string

    A unique identifier of a user. You can get this identifier from the access token (JWT) sub parameter after calling token endpoint.

    header Parameters
    Authorization
    required
    string

    Access token JWT that was returned from token API. To prefix with 'DPoP '

    Request Body schema: application/json
    client_assertion
    required
    string

    The assertion being used to authenticate the client, please refer to Client Assertion for details. This JWT is signed with consumer private key and contains the following parameters:

    • sub: Subject - client_id issued by SGDex upon onboarding
    • jti: JWT ID - random unique number
    • aud: Audience - URL that partner application is calling
    • iss: Issuer - client_id issued by SGDex upon onboarding
    • iat: Issued At - current timestamp, maximum 300 seconds ago (5 minutes)
    • exp: Expiry - expiry timestamp, maximum 300 seconds (5 minutes)
    • htm: HTTP method
    client_assertion_type
    required
    string

    The format of the assertion as defined by the authorization server. The value will be an absolute URI. Example: urn:ietf:params:oauth:client-assertion-type:jwt-bearer

    encryptionKid
    string

    Consuming applications can specify Key ID in their registered JWKS to encrypt response payload with.

    Responses

    Request samples

    Content type
    application/json
    {
    • "client_assertion": "string",
    • "client_assertion_type": "string",
    • "encryptionKid": "string"
    }

    Response samples

    Content type
    application/json
    [
    • {
      }
    ]

    Get Person Data via Resource ID

    This API returns user's data from data source(s) in consolidated view.

    path Parameters
    identifier
    required
    string

    A unique identifier of the user.

    Request Body schema: application/json
    client_assertion
    required
    string

    The assertion being used to authenticate the client, please refer to Client Assertion for details.

    client_assertion_type
    required
    string

    The format of the assertion as defined by the authorization server. The value will be an absolute URI. Example: urn:ietf:params:oauth:client-assertion-type:jwt-bearer

    scope
    required
    string

    Space separated list of scopes requested. Possible scopes are listed in the table above.

    encryptionKid
    string

    Consuming applications can specify Key ID in their registered JWKS to encrypt response payload with.

    Responses

    Request samples

    Content type
    application/json
    {
    • "client_assertion": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6ImRkNDllNTU3LTIxMzgtNGU4NC1hMTVhLTYyNTRiZjIwM2RkMyJ9.eyJzdWIiOiJTVEcyLVVTRVJJTkZPLVNFTEYtVEVTVCIsImp0aSI6ImI0MWI1MDlkLTcyNmItNDM2YS04NTNhLWE5ZmY0ZDc3MDUzYyIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjMwMDAvdXNlcmluZm8vcGVyc29uLzQ5OWJiNGM0LTc0NjItMDcxNi00MWFjLTcxZmNiMDIxYTU0OCIsImlzcyI6IlNURzItVVNFUklORk8tU0VMRi1URVNUIiwiaWF0IjoxNzQ4ODUyOTM5LCJleHAiOjE3NDg4NTMyMzksImh0bSI6IlBPU1QifQ.GlKo5TH6XnrTI8j8b0HitpEyST5_FA5yvFWATbg31TM8Y_akM8A0eo9cyDsq9zaqq17BYJ2yMm_-TNkN0oN8fA",
    • "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
    • "scope": "scope=name hanyu_pinyin_name date_of_birth",
    • "encryptionKid": "f4a78bc8-9667-4b4c-929f-03e7086d84de"
    }

    Response samples

    Content type
    application/json
    {
    • "data": {
      },
    • "errors": {
      },
    • "request_id": "08486708-c243-400e-9dd5-ac8d3d1a7187",
    • "timestamp": "2025-06-01T11:49:40.317+08:00"
    }

    Get Entity Data via Resource ID

    This API returns entity's data from data source(s) in consolidated view.

    path Parameters
    identifier
    required
    string

    A unique identifier of the entity.

    Request Body schema: application/json
    client_assertion
    required
    string

    The assertion being used to authenticate the client, please refer to Client Assertion for details.

    client_assertion_type
    required
    string

    The format of the assertion as defined by the authorization server. The value will be an absolute URI. Example: urn:ietf:params:oauth:client-assertion-type:jwt-bearer

    scope
    required
    string

    Space separated list of scopes requested. Possible scopes are listed in the table above.

    encryptionKid
    string

    Consuming applications can specify Key ID in their registered JWKS to encrypt response payload with.

    Responses

    Request samples

    Content type
    application/json
    {
    • "client_assertion": "eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiIsImtpZCI6ImRkNDllNTU3LTIxMzgtNGU4NC1hMTVhLTYyNTRiZjIwM2RkMyJ9.eyJzdWIiOiJTVEcyLVVTRVJJTkZPLVNFTEYtVEVTVCIsImp0aSI6ImI0MWI1MDlkLTcyNmItNDM2YS04NTNhLWE5ZmY0ZDc3MDUzYyIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjMwMDAvdXNlcmluZm8vcGVyc29uLzQ5OWJiNGM0LTc0NjItMDcxNi00MWFjLTcxZmNiMDIxYTU0OCIsImlzcyI6IlNURzItVVNFUklORk8tU0VMRi1URVNUIiwiaWF0IjoxNzQ4ODUyOTM5LCJleHAiOjE3NDg4NTMyMzksImh0bSI6IlBPU1QifQ.GlKo5TH6XnrTI8j8b0HitpEyST5_FA5yvFWATbg31TM8Y_akM8A0eo9cyDsq9zaqq17BYJ2yMm_-TNkN0oN8fA",
    • "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer",
    • "scope": "scope=entity_profile addressess financials",
    • "encryptionKid": "f4a78bc8-9667-4b4c-929f-03e7086d84de"
    }

    Response samples

    Content type
    application/json
    {
    • "data": {
      },
    • "errors": {
      },
    • "request_id": "08486708-c243-400e-9dd5-ac8d3d1a7187",
    • "timestamp": "2025-06-01T11:49:40.317+08:00"
    }

    Request for Data (ASYNC)

    This API will federate the call to request data from relevant providers based on pre-existing configuration. Once the request is received on the provider side, provider will initiate a PUSH call if the request is valid.
    This is an asynchronous request for data. Response will only be ACK.

    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    apiname
    required
    string

    A unique api name within the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    client_id
    required
    string

    Unique ID for the data consuming service.

    provider
    Array of strings

    The id of providers to get the data from.

    query
    string

    An optional query parameter to filter the result based. This parameter will be passed to the provider end and can be intercepted by the data exchange layer to perform a filtered query to the provider API.

    payload
    string

    An optional stringtify payload parameter. This payload will be passed to the provider end.

    Note - If both payload and query are given, query will be ignored.

    Responses

    Request samples

    Content type
    application/json
    {
    • "client_id": "client123",
    • "provider": [
      ],
    • "query": "filter=myfilter",
    • "payload": "{attribute1: xx, attribute2: xx}"
    }

    Response samples

    Content type
    application/json
    {
    • "message": "Accepted"
    }

    Providing Data

    Push Data

    This API allows provider to push data to a use case topic.

    • If target consumer (list of consumers) is specified, then data will be sent to the specified consumers who are subscribers of the topic.
    • If target consumer (list of consumers) is not specified, then data will be broadcast to all subscribers of that use case topic.
    path Parameters
    dex
    required
    string

    A unique name tag for the specific data exchange.

    topicname
    required
    string

    A unique api name within the specific data exchange.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    consumer
    Array of strings

    The id of consumers to push the data to.

    system_id
    required
    string

    Unique ID of the provider system.

    payload
    required
    string

    The data payload to push to the topic

    Responses

    Request samples

    Content type
    application/json
    {
    • "consumer": [
      ],
    • "system_id": "my system id",
    • "payload": "<encrypted/encoded payload>"
    }

    Response samples

    Content type
    application/json
    {
    • "request_id": "string"
    }

    Routing and Notification

    Routing

    This API will federate the call to pull/push data from/to relevant pitstops

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    type
    required
    string
    Enum: "PROVIDE" "RECEIVE" "PULL_RESULT" "PUSH_RESULT" "TEST_PUSH" "TEST_PULL"

    Specifies the type of message e.g. PUSH, PULL, PROVIDE,

    dataElementId
    required
    string

    The data element ID for this transaction

    requestId
    required
    string

    UUID of the request ID

    required
    object (systemDetail)
    required
    Array of objects (systemDetail)
    required
    Array of objects (orgDetail)
    payload
    string

    Encrypted payload. Only required for type = RECEIVE | PULL_RESULT

    parameters
    object

    The pull parameters. Only required for type = PROVIDE

    Responses

    Request samples

    Content type
    application/json
    {
    • "type": "RECEIVE",
    • "dataElementId": "bill_of_lading",
    • "sender": {
      },
    • "recipients": [
      ],
    • "requestId": "1234567890",
    • "payload": "<HASHED>",
    • "parameters": {
      },
    • "onBehalfOf": [
      ]
    }

    Response samples

    Content type
    application/json
    {
    • "message": "Request received"
    }

    Notification

    This API allows SGTraDex to notify SGDex of pitstops configuration changes.

    header Parameters
    Authorization
    required
    string

    Example: Refer to Data Exchange (Client) Authentication
    JWT provided in the Authorization header as a bearer token.

    Request Body schema: application/json
    recipients
    required
    Array of strings

    List of System IDs of the recipients to send to

    type
    required
    string
    Value: "CONFIG_REFRESH"
    senderId
    required
    string

    Unique identifier of sender's system

    Responses

    Request samples

    Content type
    application/json
    {
    • "recipients": [
      ],
    • "type": "CONFIG_REFRESH"
    }

    Response samples

    Content type
    application/json
    {
    • "message": "Notification Sent"
    }

    Configuration

    Data Element

    Create Data Elements

    Request Body schema: application/json
    Array
    dataElementId
    required
    string^[a-zA-Z0-9-_]+$
    elementName
    string^[a-zA-Z0-9-_.,& ]+$

    Name of the data element. This field will be ignored by SGDex

    elementSchema
    string

    Schema of the data element (in JSON Schema Format). This field will be ignored by SGDex

    querySchema
    string

    Schema of how to query the data element (Also in JSON Schema format). This field will be ignored by SGDex

    csvTemplate
    string

    Template in csv. This field will be ignored by SGDex

    jsonTemplate
    string

    Template in JSON. This field will be ignored by SGDex

    type
    string
    Enum: "DOCUMENT" "EVENT"

    Indicates whether it is a document or event. This field will be ignored by SGDex

    additionalProperties
    object

    Any other addtional properties. This field will be ignored by SGDex

    Responses

    Request samples

    Content type
    application/json
    [
    • {
      }
    ]

    Data Element

    Delete a Data Element

    path Parameters
    dataElementId
    required
    string^[a-zA-Z0-9-_]+$

    Responses

    System

    Create new Systems

    Request Body schema: application/json
    Array
    systemId
    required
    string <uuid>

    The ID of the system

    systemName
    required
    string^[a-zA-Z0-9-_.,&()@:;?!'"‘’“”{}<>\\\/\[\] ]+$...

    The name of the system

    endPointUrl
    required
    string <uri>

    The full URL of the pitstop to send data exchange events to e.g. https://trafigura.test.sgtradex.io/api/v1/data/messageHandler

    orgId
    string <uuid>

    The Organization Id that this system belongs to. This field will be ignored by SGDex

    additionalProperties
    object

    Any other addtional properties. This field will be ignored by SGDex

    Responses

    Request samples

    Content type
    application/json
    [
    • {
      }
    ]

    System

    Update a System detail

    path Parameters
    systemId
    required
    string <uuid>

    The ID of the system to update

    Request Body schema: application/json
    systemName
    required
    string^[a-zA-Z0-9-_.,&()@:;?!'"‘’“”{}<>\\\/\[\] ]+$...

    The name of the system

    endPointUrl
    required
    string <uri>

    The full URL of the pitstop to send data exchange events to e.g. https://trafigura.test.sgtradex.io/api/v1/data/messageHandler

    orgId
    string <uuid>

    The Organization Id that this system belongs to. This field will be ignored by SGDex

    additionalProperties
    object

    Any other addtional properties. This field will be ignored by SGDex

    Responses

    Request samples

    Content type
    application/json
    {
    • "systemName": "string",
    • "endPointUrl": "http://example.com",
    • "orgId": "25b2c2d5-a7fc-47d0-89e4-8709a1560bfa",
    • "additionalProperties": { }
    }

    System

    Deletes new Systems

    path Parameters
    systemId
    required
    string <uuid>

    The ID of the sytem to delete

    Responses

    Subscription

    Create a new subscription between parties

    Request Body schema: application/json
    Array
    subscriptionId
    required
    string <uuid>

    The ID of the subscription created

    subscriberOrgId
    string <uuid>

    The ID of the organization consuming the data element. This field will be ignored by SGDex

    subscriberSystemId
    required
    string <uuid>

    The ID of the system the consuming organization is using to consume the data element

    subscriberEnrolmentId
    string <uuid>

    The Enrolment ID for the consumer. This field will be ignored by SGDex

    prosumerOrgId
    string <uuid>

    The ID of the organization producing the data element. This field will be ignored by SGDex

    prosumerSystemId
    required
    string <uuid>

    The ID of the system the producing organization is using to produce the data element

    providerEnrolmentId
    string <uuid>

    The Enrolment ID for the producer. This field will be ignored by SGDex

    useCaseId
    required
    string^[a-zA-Z0-9-_]+$

    The ID of the Use Case related to this subscription

    dataElementId
    required
    string^[a-zA-Z0-9-_]+$

    The Data Element Id related to this subscription

    prosumerType
    string

    This field will be ignored by SGDex

    status
    required
    string
    Enum: "APPROVED" "PENDING" "REVOKED" "REJECTED"
    requesterOrgId
    string <uuid>

    This field will be ignored by SGDex

    contributorOrgId
    string <uuid>

    The ID of the organization owning the data

    contributorSystemId
    string <uuid>

    The ID of the system the data contributor is using

    Responses

    Request samples

    Content type
    application/json
    [
    • {
      }
    ]

    Subscription

    Deletes a subscription between parties (either because rejected or revoked)

    path Parameters
    subscriptionId
    required
    string <uuid>

    Responses