API reference / Auth

Exchange authorization code for access + refresh tokens

POST/open/v1/auth/tokenScope: No data scope

Service Endpoint Seller token not required

EnvironmentBase URL + Path
Productionhttps://open.mallplus.ph/open/v1/auth/token
Sandboxhttps://sandbox.open.mallplus.ph/open/v1/auth/token
Common Signing and Seller Headers
HeaderTypeRequiredRulesDescription
X-MallPlus-Partner-IdstringYesIssued client ID for the calling app.Identifies the partner app whose secret signs the request.
X-MallPlus-TimestampintegerYesUnix timestamp in seconds; default acceptance window is 90 seconds.Prevents replay outside the allowed signing window.
X-MallPlus-Signature-VersionstringYesUse 3 for HMAC v3.Selects the request signing algorithm.
X-MallPlus-NoncestringYes32-64 lowercase hexadecimal characters, unique per request.Replay-protection nonce included in the v3 signing base string.
X-MallPlus-SignaturestringYesHMAC-SHA256 over timestamp, client ID, method, path, canonical query, body hash, and nonce.Cryptographic proof that the request was signed with the app secret.
X-MallPlus-Access-TokenstringConditionalRequired when the operation says seller token required.Seller OAuth access token returned by the authorization flow.
X-MallPlus-Seller-IdstringConditionalRequired when X-MallPlus-Access-Token is required.Seller ID bound to the seller OAuth token.

Parameters

This operation does not define path or query parameters in OpenAPI.

Request Body required

FieldTypeRequiredRulesDescription
codestringYesMin length: 1One-time authorization code taken from the code query parameter of the consent redirect to your redirect_uri. Single-use and valid for 10 minutes.
client_idstringYesMin length: 1Partner application client ID.
seller_idstringYesMin length: 1Seller whose grant this code belongs to. Use the seller_id query parameter that the consent redirect delivered to your redirect_uri - do not send a sandbox Shop ID or a value of your own.

Response Parameters

Success status: HTTP 200

FieldTypeRulesDescription
successboolean-Whether the request completed successfully.
dataTokenDataNo additional propertiesResponse or event payload for this schema.
data.access_tokenstring-Seller-scoped access token.
data.refresh_tokenstring-Single-use refresh token. Rotated on every refresh.
data.expires_ininteger-Access-token TTL in seconds.
data.expires_atstring<date-time>Format: date-timeAbsolute access-token expiry timestamp in ISO-8601 UTC.
data.seller_idstring-Seller the token acts on.
data.seller_namestringNullableDisplay name of the seller.
data.scopesarray<string>-OAuth scopes requested or granted.
data.scopes[]string--
metaPaginationMeta-Response metadata, including pagination when the endpoint returns a list.
meta.pageinteger-1-based page number represented by this response page. Offset paging only — omitted during a cursor walk.
meta.limitinteger-Maximum number of records returned in this response page.
meta.totalinteger-Total number of records matching the request filters. Offset paging only — omitted during a cursor walk, where no total is computed.
meta.nextCursorstring-Opaque cursor for the next page of a keyset walk. Present only while walking by cursor and only while more rows may remain; its absence ends the walk. Pass it back unchanged as cursor.

Error Codes

HTTP StatusSchemaDescription
400PlatformError400ResponseValidation error, or a missing/malformed required signing header (BAD_REQUEST)
401PlatformError401ResponseUnauthorized — invalid credentials, invalid signature, or expired timestamp (TIMESTAMP_EXPIRED)
403PlatformError403ResponseForbidden — insufficient scope
413PlatformError413ResponseThe request body exceeds the endpoint payload limit
429PlatformError429ResponseThe partner or endpoint rate limit has been exceeded
503PlatformError503ResponseA required platform or upstream dependency is temporarily unavailable

This operation does not declare its own error.code list. Any operation can return the authentication, signing, scope, rate-limit and system codes listed in the Error code reference.

Request Example

# Sandbox: https://sandbox.open.mallplus.ph/open/v1/auth/token
curl -X POST "https://open.mallplus.ph/open/v1/auth/token" \
  -H "X-MallPlus-Partner-Id: mp_partner_123" \
  -H "X-MallPlus-Timestamp: 1786924800" \
  -H "X-MallPlus-Signature-Version: 3" \
  -H "X-MallPlus-Nonce: 4f8b9a0c4d5e6f708192a3b4c5d6e7f8" \
  -H "X-MallPlus-Signature: <hex_hmac_sha256>" \
  -H "Content-Type: application/json" \
  --data '{
  "code": "example_code",
  "client_id": "client_id_123",
  "seller_id": "seller_id_123"
}'

Response Example

{
  "success": true,
  "data": {
    "access_token": "example_access_token",
    "refresh_token": "example_refresh_token",
    "expires_in": 14400,
    "expires_at": "2026-07-16T10:30:00.000Z",
    "seller_id": "seller_id_123",
    "seller_name": "example_seller_name",
    "scopes": [
      "example_scopes"
    ]
  },
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 150,
    "nextCursor": "eyJ0cyI6IjIwMjYtMDgtMTVUMDk6MzA6MDAuMDAwWiIsImlkIjoicGNhdF8xIn0"
  }
}