diff --git a/src/assets/apis/three-d-s-server/en.yaml b/src/assets/apis/three-d-s-server/en.yaml
index efec45f6..d7898259 100644
--- a/src/assets/apis/three-d-s-server/en.yaml
+++ b/src/assets/apis/three-d-s-server/en.yaml
@@ -572,7 +572,7 @@ paths:
summary: Create a merchant
operationId: post-user
responses:
- '200':
+ '200 (V1)':
description: OK
content:
application/json:
@@ -716,7 +716,92 @@ paths:
code: 1000
data:
token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
- '401':
+ '200 (V2)':
+ description: OK
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - OK
+ reason:
+ type: string
+ enum:
+ - '00'
+ message:
+ type: string
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ merchant:
+ type: object
+ required:
+ - id
+ - name
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ token:
+ type: object
+ required:
+ - accessToken
+ - expiresAt
+ properties:
+ accessToken:
+ type: string
+ expiresAt:
+ type: string
+ format: date-time
+ branches:
+ type: array
+ items:
+ type: object
+ required:
+ - id
+ - name
+ - token
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ token:
+ type: object
+ required:
+ - accessToken
+ - expiresAt
+ properties:
+ accessToken:
+ type: string
+ expiresAt:
+ type: string
+ format: date-time
+ required:
+ - status
+ - merchant
+ examples:
+ Comercio creado con éxito:
+ value:
+ status:
+ code: 1000
+ data:
+ token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
+ '401 (V1)':
description: Unauthenticated
content:
application/json:
@@ -733,7 +818,48 @@ paths:
Unauthenticated:
value:
message: Unauthenticated.
- '422':
+ '401 (V2)':
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ enum:
+ - Unauthenticated
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
+ - reason
+ - message
+ - date
+ examples:
+ No autenticado:
+ value:
+ message: Unauthenticated.
+ '422 (V1)':
description: Data validation messages
content:
application/json:
@@ -800,6 +926,39 @@ paths:
status:
code: 1009
error: The selected subscriptions.0.acquirerBIN is invalid.
+ '422 (V2)':
+ description: Data validation messages
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ example: 'The branches.0.name has already been taken.'
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
requestBody:
content:
application/json:
@@ -854,13 +1013,13 @@ paths:
mcc:
type: number
description: 'Merchant category code'
- enrollment:
- type: boolean
- description: 'Indicator that specifies whether to enroll the merchant in the brand'
isicClass:
type: number
description: ISIC class code
- branch:
+ createToken:
+ type: boolean
+ description: 'Indicator for token creation per merchant. If this field is not sent, it will default to false and the token will not be created (this field is only available in API version V2).'
+ branches:
type: object
description: Branch information
required:
@@ -904,6 +1063,9 @@ paths:
* The URL must not include fragments. (hash or anchors, https://example.com`#section`).
* The URL must have a defined host. (https://`path`)
* The host cannot be an IP address. (https://`192.168.1.1`)
+ createToken:
+ type: boolean
+ description: 'Indicator for token creation per branch. If this field is not sent, it will default to false and the token will not be created (this field is only available in API version V2).'
subscriptions:
type: array
uniqueItems: true
@@ -1046,6 +1208,9 @@ paths:
* The URL must not include fragments. (hash or anchors, https://example.com`#section`).
* The URL must have a defined host. (https://`path`)
* The host cannot be an IP address. (https://`192.168.1.1`)
+ createToken:
+ type: boolean
+ description: 'Indicator for token creation per branch. If this field is not sent, it will default to false and the token will not be created (this field is only available in API version V2).'
enrollment:
type: boolean
description: 'Indicator that specifies whether to enroll the branch in the brand @deprecated'
@@ -1101,7 +1266,7 @@ paths:
properties: { }
description: Send the required fields for the API to add branches to a merchant.
responses:
- '200':
+ '200 (V1)':
description: OK
content:
application/json:
@@ -1125,6 +1290,8 @@ paths:
- name
- brand
- url
+ - token
+ - expires_at
properties:
id:
type: integer
@@ -1194,7 +1361,69 @@ paths:
name: City B Office
brand: Company City B
url: 'https://company-b.com'
- '401':
+ '200 (V2)':
+ description: OK
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - OK
+ reason:
+ type: string
+ enum:
+ - '00'
+ message:
+ type: string
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ branches:
+ type: array
+ items:
+ type: object
+ required:
+ - id
+ - name
+ - token
+ - url
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ brand:
+ type: string
+ url:
+ type: string
+ token:
+ type: array
+ required:
+ - accessToken
+ - expiresAt
+ properties:
+ accessToken:
+ type: string
+ expiresAt:
+ type: string
+ format: date-time
+ required:
+ - status
+ - branches
+ '401 (V1)':
description: Unauthenticated
content:
application/json:
@@ -1211,7 +1440,44 @@ paths:
Unauthenticated:
value:
message: Unauthenticated.
- '404':
+ '401 (V2)':
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ enum:
+ - Unauthenticated
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
+ - reason
+ - message
+ - date
+ '404 (V1)':
description: Merchant does not exist
content:
application/json:
@@ -1238,7 +1504,40 @@ paths:
status:
code: 1010
error: The merchant does not exist
- '422':
+ '404 (V2)':
+ description: Merchant does not exist
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ example: 'The merchant does not exist'
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
+ '422 (V1)':
description: Data validation messages
content:
application/json:
@@ -1285,6 +1584,39 @@ paths:
status:
code: 1004
error: The branches.0.url must be a valid URL.
+ '422 (V2)':
+ description: Data validation messages
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ example: 'The branches.0.name has already been taken.'
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
description: Add branches to a merchant
parameters:
- schema:
diff --git a/src/assets/apis/three-d-s-server/es.yaml b/src/assets/apis/three-d-s-server/es.yaml
index d52e1606..cea82981 100644
--- a/src/assets/apis/three-d-s-server/es.yaml
+++ b/src/assets/apis/three-d-s-server/es.yaml
@@ -572,7 +572,7 @@ paths:
summary: Crear un comercio
operationId: post-user
responses:
- '200':
+ '200 (V1)':
description: OK
content:
application/json:
@@ -716,7 +716,92 @@ paths:
code: 1000
data:
token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
- '401':
+ '200 (V2)':
+ description: OK
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - OK
+ reason:
+ type: string
+ enum:
+ - '00'
+ message:
+ type: string
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ merchant:
+ type: object
+ required:
+ - id
+ - name
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ token:
+ type: object
+ required:
+ - accessToken
+ - expiresAt
+ properties:
+ accessToken:
+ type: string
+ expiresAt:
+ type: string
+ format: date-time
+ branches:
+ type: array
+ items:
+ type: object
+ required:
+ - id
+ - name
+ - token
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ token:
+ type: object
+ required:
+ - accessToken
+ - expiresAt
+ properties:
+ accessToken:
+ type: string
+ expiresAt:
+ type: string
+ format: date-time
+ required:
+ - status
+ - merchant
+ examples:
+ Comercio creado con éxito:
+ value:
+ status:
+ code: 1000
+ data:
+ token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...
+ '401 (V1)':
description: No autenticado
content:
application/json:
@@ -733,7 +818,48 @@ paths:
No autenticado:
value:
message: Unauthenticated.
- '422':
+ '401 (V2)':
+ description: No autenticado
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ enum:
+ - Unauthenticated
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
+ - reason
+ - message
+ - date
+ examples:
+ No autenticado:
+ value:
+ message: Unauthenticated.
+ '422 (V1)':
description: Mensajes de validación de datos
content:
application/json:
@@ -800,6 +926,43 @@ paths:
status:
code: 1009
error: The selected subscriptions.0.acquirerBIN is invalid.
+ '422 (V2)':
+ description: Mensajes de validación de datos
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ example: 'The branches.0.name has already been taken.'
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ examples:
+ No autenticado:
+ value:
+ message: Unauthenticated.
+ required:
+ - status
requestBody:
content:
application/json:
@@ -854,13 +1017,13 @@ paths:
mcc:
type: number
description: 'código de categoría de comercial '
- enrollment:
- type: boolean
- description: 'Indicador que indica si desea enrolar el comercio en la marca'
isicClass:
type: number
description: Código clase CIIU
- branch:
+ createToken:
+ type: boolean
+ description: 'Indicador para la creación del token por comercio. Si este campo no se envía, por defecto se tomará como false y no se creará el token (este campo está disponible únicamente en la versión V2 del API).'
+ branches:
type: object
description: Información de la sucursal
required:
@@ -904,6 +1067,9 @@ paths:
* La URL no debe incluir fragmentos (hash o anclas, https://example.com`#section`).
* La URL debe tener un host definido. (https://`path`)
* El host no puede ser una dirección IP. (https://`192.168.1.1`)
+ createToken:
+ type: boolean
+ description: 'Indicador para la creación del token por sucursal. Si este campo no se envía, por defecto se tomará como false y no se creará el token (este campo está disponible únicamente en la versión V2 del API).'
subscriptions:
type: array
uniqueItems: true
@@ -1046,6 +1212,9 @@ paths:
* La URL no debe incluir fragmentos (hash o anclas, https://example.com`#section`).
* La URL debe tener un host definido. (https://`path`)
* El host no puede ser una dirección IP. (https://`192.168.1.1`)
+ createToken:
+ type: boolean
+ description: 'Indicador para la creación del token por sucursal. Si este campo no se envía, por defecto se tomará como false y no se creará el token (este campo está disponible únicamente en la versión V2 del API).'
enrollment:
type: boolean
description: 'Indicador que indica si desea enrolar el comercio en la marca @deprecated'
@@ -1101,7 +1270,7 @@ paths:
properties: { }
description: Envíe los campos necesarios para que la API agregue las sucursales a un comercio.
responses:
- '200':
+ '200 (V1)':
description: OK
content:
application/json:
@@ -1125,6 +1294,8 @@ paths:
- name
- brand
- url
+ - token
+ - expires_at
properties:
id:
type: integer
@@ -1140,43 +1311,6 @@ paths:
expires_at:
type: string
format: date-time
- enrollment:
- type: object
- properties:
- mastercard:
- type: object
- required:
- - uuid
- - messageType
- - data
- - subscriptionId
- properties:
- uuid:
- type: string
- format: uuid
- messageType:
- type: string
- data:
- type: object
- properties:
- acquirerBIN:
- type: string
- acquirerICA:
- type: string
- acquirerName:
- type: string
- acquirerCID:
- type: string
- status:
- type: string
- reason:
- type: string
- modelId:
- type: string
- modelName:
- type: string
- subscriptionId:
- type: integer
required:
- status
- data
@@ -1194,7 +1328,69 @@ paths:
name: Oficina Ciudad B
brand: Compañía Ciudad B
url: 'https://company-b.com'
- '401':
+ '200 (V2)':
+ description: OK
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - OK
+ reason:
+ type: string
+ enum:
+ - '00'
+ message:
+ type: string
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ branches:
+ type: array
+ items:
+ type: object
+ required:
+ - id
+ - name
+ - token
+ - url
+ properties:
+ id:
+ type: integer
+ name:
+ type: string
+ brand:
+ type: string
+ url:
+ type: string
+ token:
+ type: array
+ required:
+ - accessToken
+ - expiresAt
+ properties:
+ accessToken:
+ type: string
+ expiresAt:
+ type: string
+ format: date-time
+ required:
+ - status
+ - branches
+ '401 (V1)':
description: No autenticado
content:
application/json:
@@ -1211,7 +1407,48 @@ paths:
No autenticado:
value:
message: Unauthenticated.
- '404':
+ '401 (V2)':
+ description: No autenticado
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ enum:
+ - Unauthenticated
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
+ - reason
+ - message
+ - date
+ examples:
+ No autenticado:
+ value:
+ message: Unauthenticated.
+ '404 (V1)':
description: El comercio no existe
content:
application/json:
@@ -1238,7 +1475,40 @@ paths:
status:
code: 1010
error: The merchant does not exist
- '422':
+ '404 (V2)':
+ description: El comercio no existe
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ example: 'The merchant does not exist'
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ required:
+ - status
+ '422 (V1)':
description: Mensajes de validación de datos
content:
application/json:
@@ -1285,6 +1555,43 @@ paths:
status:
code: 1004
error: The branches.0.url must be a valid URL.
+ '422 (V2)':
+ description: Mensajes de validación de datos
+ content:
+ application/json:
+ schema:
+ description: ''
+ type: object
+ properties:
+ status:
+ type: object
+ required:
+ - status
+ - reason
+ - message
+ - date
+ properties:
+ status:
+ type: string
+ enum:
+ - FAILED
+ reason:
+ type: string
+ enum:
+ - BR
+ message:
+ type: string
+ example: 'The branches.0.name has already been taken.'
+ date:
+ type: string
+ format: date-time
+ example: '2025-12-09T12:00:00Z'
+ examples:
+ No autenticado:
+ value:
+ message: Unauthenticated.
+ required:
+ - status
description: Agregar sucursales a un comercio
parameters:
- schema:
diff --git a/src/pages/en/three-d-s-server/api/merchants/branch.mdx b/src/pages/en/three-d-s-server/api/merchants/branch.mdx
index d5f6ec46..9aa1249a 100644
--- a/src/pages/en/three-d-s-server/api/merchants/branch.mdx
+++ b/src/pages/en/three-d-s-server/api/merchants/branch.mdx
@@ -4,7 +4,6 @@ export const description =
export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
# Branches API
----
## Add branches to a merchant {{ id: 'add-branches', tag: 'POST', label: '/api/v1/merchants/merchantID/branches' }}
@@ -21,7 +20,7 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
- ```bash {{ title: 'cURL' }}
+ ```bash {{ title: 'V1' }}
curl -X "POST" https://3dss-test.placetopay.com/api/v1/merchants/{merchantID}/branches \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
@@ -42,7 +41,6 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
"currency": "COP",
"url": "https://example-dos.com"
"enabled": true,
- "enrollment": true,
"subscriptions": [
{
"franchise": "visa",
@@ -61,6 +59,47 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
]
}'
```
+ ```bash {{ title: 'V2' }}
+ curl -X "POST" https://3dss-test.placetopay.com/api/v2/merchants/{merchantID}/branches \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -H "Authorization: Bearer ACCESS_TOKEN" \
+ -d '{
+ "branches": [
+ {
+ "name": "Medellin Office",
+ "brand": "Evertec Medellin",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://example-uno.com",
+ "createToken": true,
+ },
+ {
+ "name": "Bogotá Office",
+ "brand": "Evertec Bogotá",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://example-dos.com"
+ "enabled": true,
+ "createToken": true,
+ "subscriptions": [
+ {
+ "franchise": "visa",
+ "acquirerBIN": "454819",
+ "version": 2,
+ "merchantCode": "1234"
+ },
+ {
+ "franchise": "mastercard",
+ "acquirerBIN": "510510",
+ "version": 2,
+ "merchantCode": "3064"
+ }
+ ]
+ }
+ ]
+ }'
+ ```
@@ -78,7 +117,7 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
- ```json {{ title: '200' }}
+ ```json {{ title: '200 (V1)' }}
{
"status": {
"code": 1000
@@ -118,57 +157,95 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
]
}
```
- ```json {{ title: '401' }}
+ ```json {{ title: '200 (V2)' }}
+ {
+ "status": {
+ "status": "OK",
+ "reason": "00",
+ "message": "The request has been successfully processed",
+ "date": "2025-12-10T22:36:18+00:00"
+ },
+ "branches": [
+ {
+ "id": 1,
+ "name": "City A Office",
+ "brand": "Company City A",
+ "url": "https://company-a.com"
+ "token": {
+ "accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ },
+ {
+ "id": 2,
+ "name": "City B Office",
+ "brand": "Company City B",
+ "url": "https://company-b.com"
+ "token": {
+ "accessToken":"eV19eyJhdWQiOiIxIiwianRpIjoiMWIyNjgk867nh...",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ }
+ ]
+ }
+ ```
+ ```json {{ title: '401 (V1)' }}
{
"message": "Unauthenticated."
}
```
- ```json {{ title: '404' }}
+ ```json {{ title: '401 (V2)' }}
{
- "status": {
- "code": 1010,
- "error": "The merchant does not exist"
- }
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "Unauthenticated.",
+ "date": "2025-12-09T20:58:15+00:00"
+ }
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '404 (V1)' }}
{
"status": {
- "code": 1001,
- "error": "The branches field is required."
+ "code": 1010,
+ "error": "The merchant does not exist"
}
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '404 (V2)' }}
{
- "status": {
- "code": 1002,
- "error": "The branches.0.country must be 3 characters."
- }
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "The merchant does not exist",
+ "date": "2025-12-09T21:00:42+00:00"
+ }
}
```
```json {{ title: '422' }}
{
"status": {
- "code": 1002,
- "error": "The selected branches.0.currency is invalid."
+ "code": 1001,
+ "error": "The branches field is required."
}
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '422 (V1)' }}
{
"status": {
- "code": 1004,
- "error": "The branches.0.name has already been taken."
+ "code": 1002,
+ "error": "The branches.0.country is required."
}
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '422 (V2)' }}
{
- "status": {
- "code": 1004,
- "error": "The branches.0.url must be a valid URL."
- }
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "The branches.0.name field is required.",
+ "date": "2025-12-09T21:00:42+00:00"
+ }
}
```
diff --git a/src/pages/en/three-d-s-server/api/merchants/create.mdx b/src/pages/en/three-d-s-server/api/merchants/create.mdx
index 17866da5..59884e46 100644
--- a/src/pages/en/three-d-s-server/api/merchants/create.mdx
+++ b/src/pages/en/three-d-s-server/api/merchants/create.mdx
@@ -5,9 +5,8 @@ export const description = 'This page explores the various 3DSS endpoints you ca
export const apiRefs = ['/api/v1/merchants'];
# Merchants API
----
-## Create a Merchant {{ id: 'create-a-merchant', tag: 'POST', label: '/api/v1/merchants' }}
+## Create a Merchant {{ id: 'create-a-merchant', tag: 'POST', label: '/api/{version}/merchants' }}
@@ -20,8 +19,8 @@ export const apiRefs = ['/api/v1/merchants'];
-
- ```bash {{ title: 'cURL' }}
+
+ ```bash {{ title: 'V1' }}
curl -X "POST" https://3dss-test.placetopay.com/api/v1/merchants \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
@@ -97,6 +96,83 @@ export const apiRefs = ['/api/v1/merchants'];
"invitations": []
}'
```
+
+ ```bash {{ title: 'V2' }}
+ curl -X "POST" https://3dss-test.placetopay.com/api/v2/merchants \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -H "Authorization: Bearer ACCESS_TOKEN" \
+ -d '{
+ "name": "Merchant one",
+ "brand": "Brand merchant one",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://www.merchant.com",
+ "mcc": 742,
+ "isicClass": 111,
+ "document": {
+ "type": "NIT",
+ "number": "1234567895"
+ },
+ "subscriptions": [
+ {
+ "franchise": "visa",
+ "acquirerBIN": "411111",
+ "version": 2,
+ "merchantCode": "1234"
+ },
+ {
+ "franchise": "mastercard",
+ "acquirerBIN": "510510",
+ "version": 2,
+ "merchantCode": "1234"
+ }
+ ],
+ "branches": [
+ {
+ "name": "Branch one",
+ "brand": "Branch one brand",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://www.branch1.merchant.com",
+ "enabled": true,
+ "createToken": true,
+ "subscriptions": [
+ {
+ "franchise": "visa",
+ "acquirerBIN": "411111",
+ "version": 2,
+ "merchantCode": "1234"
+ },
+ {
+ "franchise": "mastercard",
+ "acquirerBIN": "510510",
+ "version": 2,
+ "merchantCode": "1234"
+ }
+ ]
+ },
+ {
+ "name": "Branch two",
+ "brand": "Branch two brand",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://www.branch2.merchant.com",
+ "enabled": true,
+ "createToken": true,
+ "subscriptions": [
+ {
+ "franchise": "1",
+ "acquirerBIN": "411111",
+ "version": 2,
+ "merchantCode": "1234"
+ }
+ ]
+ }
+ ],
+ "invitations": []
+ }'
+ ```
@@ -114,7 +190,7 @@ export const apiRefs = ['/api/v1/merchants'];
- ```json {{ title: '200' }}
+ ```json {{ title: '200 (V1)' }}
{
"status": {
"code":1000
@@ -177,12 +253,58 @@ export const apiRefs = ['/api/v1/merchants'];
}
}
```
- ```json {{ title: '401' }}
+
+ ```json {{ title: '200 (V2)' }}
+ {
+ "status": {
+ "status": "OK",
+ "reason": "00",
+ "message": "The request has been successfully processed",
+ "date": "2025-12-09T20:46:20+00:00"
+ },
+ "merchant": {
+ "id":1,
+ "name":"Merchant one",
+ },
+ "branches":[
+ {
+ "id":1,
+ "name":"Branch one",
+ "token": {
+ "accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ },
+ {
+ "id":2,
+ "name":"Branch two",
+ "token": {
+ "accessToken":"eyJ0eXAiOiJKV19.eyJhdWQiOiIxIiwianRpIjoiMWIyNjgk867nh...",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ }
+ ]
+ }
+ ```
+
+ ```json {{ title: '401 (V1)' }}
{
"message": "Unauthenticated."
}
```
- ```json {{ title: '422' }}
+
+ ```json {{ title: '401 (V2)' }}
+ {
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "Unauthenticated.",
+ "date": "2025-12-09T20:58:15+00:00"
+ }
+ }
+ ```
+
+ ```json {{ title: '422 (V1)' }}
{
"status": {
"code": 1003,
@@ -190,6 +312,17 @@ export const apiRefs = ['/api/v1/merchants'];
}
}
```
+
+ ```json {{ title: '422 (V2)' }}
+ {
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "The branches.0.name has already been taken.",
+ "date": "2025-12-09T21:00:42+00:00"
+ }
+ }
+ ```
diff --git a/src/pages/three-d-s-server/api/merchants/branch.mdx b/src/pages/three-d-s-server/api/merchants/branch.mdx
index b324b816..2e8e983e 100644
--- a/src/pages/three-d-s-server/api/merchants/branch.mdx
+++ b/src/pages/three-d-s-server/api/merchants/branch.mdx
@@ -4,9 +4,8 @@ export const description =
export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
# API Sucursales
----
-## Agregar sucursales a un comercio {{ id: 'add-branches', tag: 'POST', label: '/api/v1/merchants/merchantID/branches' }}
+## Agregar sucursales a un comercio {{ id: 'add-branches', tag: 'POST', label: '/api/{version}/merchants/merchantID/branches' }}
@@ -20,8 +19,8 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
/>
-
- ```bash {{ title: 'cURL' }}
+
+ ```bash {{ title: 'V1' }}
curl -X "POST" https://3dss-test.placetopay.com/api/v1/merchants/{merchantID}/branches \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
@@ -61,6 +60,48 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
]
}'
```
+
+ ```bash {{ title: 'V2' }}
+ curl -X "POST" https://3dss-test.placetopay.com/api/v2/merchants/{merchantID}/branches \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -H "Authorization: Bearer ACCESS_TOKEN" \
+ -d '{
+ "branches": [
+ {
+ "name": "Oficina Medellin",
+ "brand": "Evertec Medellin",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://example-uno.com",
+ "createToken": true,
+ },
+ {
+ "name": "Oficina Bogotá",
+ "brand": "Evertec Bogotá",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://example-dos.com"
+ "enabled": true,
+ "createToken": true,
+ "subscriptions": [
+ {
+ "franchise": "visa",
+ "acquirerBIN": "454819",
+ "version": 2,
+ "merchantCode": "1234"
+ },
+ {
+ "franchise": "mastercard",
+ "acquirerBIN": "510510",
+ "version": 2,
+ "merchantCode": "3064"
+ }
+ ]
+ }
+ ]
+ }'
+ ```
@@ -78,7 +119,7 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
- ```json {{ title: '200' }}
+ ```json {{ title: '200 (V1)' }}
{
"status": {
"code": 1000
@@ -118,57 +159,87 @@ export const apiRefs = ['/api/v1/merchants/{merchantID}/branches'];
]
}
```
- ```json {{ title: '401' }}
+ ```json {{ title: '200 (V2)' }}
{
- "message": "Unauthenticated."
+ "status": {
+ "status": "OK",
+ "reason": "00",
+ "message": "The request has been successfully processed",
+ "date": "2025-12-10T22:36:18+00:00"
+ },
+ "branches": [
+ {
+ "id": 1,
+ "name": "Oficina Ciudad A",
+ "brand": "Compañía Ciudad A",
+ "url": "https://company-a.com",
+ "token": {
+ "accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ },
+ {
+ "id": 2,
+ "name": "Oficina Ciudad B",
+ "brand": "Compañía Ciudad B",
+ "url": "https://company-b.com",
+ "token": {
+ "accessToken":"eV19eyJhdWQiOiIxIiwianRpIjoiMWIyNjgk867nh...",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ }
+ ]
}
```
- ```json {{ title: '404' }}
+ ```json {{ title: '401 (V1)' }}
{
- "status": {
- "code": 1010,
- "error": "The merchant does not exist"
- }
+ "message": "Unauthenticated."
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '401 (V2)' }}
{
- "status": {
- "code": 1001,
- "error": "The branches field is required."
- }
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "Unauthenticated.",
+ "date": "2025-12-09T20:58:15+00:00"
+ }
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '404 (V1)' }}
{
"status": {
- "code": 1002,
- "error": "The branches.0.country must be 3 characters."
+ "code": 1010,
+ "error": "The merchant does not exist"
}
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '404 (V2)' }}
{
- "status": {
- "code": 1002,
- "error": "The selected branches.0.currency is invalid."
- }
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "The merchant does not exist",
+ "date": "2025-12-09T21:00:42+00:00"
+ }
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '422 (V1)' }}
{
"status": {
- "code": 1004,
- "error": "The branches.0.name has already been taken."
+ "code": 1001,
+ "error": "The branches.0.name field is required."
}
}
```
- ```json {{ title: '422' }}
+ ```json {{ title: '422 (V2)' }}
{
- "status": {
- "code": 1004,
- "error": "The branches.0.url must be a valid URL."
- }
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "The branches.0.name field is required.",
+ "date": "2025-12-09T21:00:42+00:00"
+ }
}
```
diff --git a/src/pages/three-d-s-server/api/merchants/create.mdx b/src/pages/three-d-s-server/api/merchants/create.mdx
index 7355d491..a2f35fe4 100644
--- a/src/pages/three-d-s-server/api/merchants/create.mdx
+++ b/src/pages/three-d-s-server/api/merchants/create.mdx
@@ -5,9 +5,9 @@ export const description = 'En esta página, nos sumergiremos en los diferentes
export const apiRefs = ['/api/v1/merchants'];
# API Comercios
----
-## Crear un comercio {{ id: 'create-a-merchant', tag: 'POST', label: '/api/v1/merchants' }}
+
+## Crear un comercio {{ id: 'create-a-merchant', tag: 'POST', label: '/api/{version}/merchants' }}
@@ -17,51 +17,27 @@ export const apiRefs = ['/api/v1/merchants'];
api={props.refs}
/>
-
-
-
- ```bash {{ title: 'cURL' }}
- curl -X "POST" https://3dss-test.placetopay.com/api/v1/merchants \
- -H "Content-Type: application/json" \
- -H "Accept: application/json" \
- -H "Authorization: Bearer ACCESS_TOKEN" \
- -d '{
- "name": "Comercio uno",
- "brand": "Marca comercio uno",
- "country": "COL",
- "currency": "COP",
- "url": "https://www.comercio.com",
- "mcc": 742,
- "isicClass": 111,
- "enrollment": true,
- "document": {
- "type": "NIT",
- "number": "1234567895"
- },
- "subscriptions": [
- {
- "franchise": "visa",
- "acquirerBIN": "411111",
- "version": 2,
- "merchantCode": "1234"
- },
- {
- "franchise": "mastercard",
- "acquirerBIN": "510510",
- "version": 2,
- "merchantCode": "1234"
- }
- ],
- "branches": [
- {
- "name": "Sucursal uno",
- "brand": "Marca de la sucursal uno",
+
+
+ ```bash {{ title: 'V1' }}
+ curl -X "POST" https://3dss-test.placetopay.com/api/v1/merchants \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -H "Authorization: Bearer ACCESS_TOKEN" \
+ -d '{
+ "name": "Comercio uno",
+ "brand": "Marca comercio uno",
"country": "COL",
"currency": "COP",
- "url": "https://www.sucursal1.comercio.com",
- "enabled": true,
+ "url": "https://www.comercio.com",
+ "mcc": 742,
+ "isicClass": 111,
"enrollment": true,
+ "document": {
+ "type": "NIT",
+ "number": "1234567895"
+ },
"subscriptions": [
{
"franchise": "visa",
@@ -75,29 +51,128 @@ export const apiRefs = ['/api/v1/merchants'];
"version": 2,
"merchantCode": "1234"
}
- ]
- },
- {
- "name": "Sucursal dos",
- "brand": "Marca de la sucursal dos",
+ ],
+ "branches": [
+ {
+ "name": "Sucursal uno",
+ "brand": "Marca de la sucursal uno",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://www.sucursal1.comercio.com",
+ "enabled": true,
+ "enrollment": true,
+ "subscriptions": [
+ {
+ "franchise": "visa",
+ "acquirerBIN": "411111",
+ "version": 2,
+ "merchantCode": "1234"
+ },
+ {
+ "franchise": "mastercard",
+ "acquirerBIN": "510510",
+ "version": 2,
+ "merchantCode": "1234"
+ }
+ ]
+ },
+ {
+ "name": "Sucursal dos",
+ "brand": "Marca de la sucursal dos",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://www.sucursal2.comercio.com",
+ "enabled": true,
+ "subscriptions": [
+ {
+ "franchise": "1",
+ "acquirerBIN": "411111",
+ "version": 2,
+ "merchantCode": "1234"
+ }
+ ]
+ }
+ ],
+ "invitations": []
+ }'
+ ```
+ ```bash {{ title: 'V2' }}
+ curl -X "POST" https://3dss-test.placetopay.com/api/v2/merchants \
+ -H "Content-Type: application/json" \
+ -H "Accept: application/json" \
+ -H "Authorization: Bearer ACCESS_TOKEN" \
+ -d '{
+ "name": "Comercio uno",
+ "brand": "Marca comercio uno",
"country": "COL",
"currency": "COP",
- "url": "https://www.sucursal2.comercio.com",
- "enabled": true,
+ "url": "https://www.comercio.com",
+ "mcc": 742,
+ "isicClass": 111,
+ "document": {
+ "type": "NIT",
+ "number": "1234567895"
+ },
"subscriptions": [
{
- "franchise": "1",
+ "franchise": "visa",
"acquirerBIN": "411111",
"version": 2,
"merchantCode": "1234"
+ },
+ {
+ "franchise": "mastercard",
+ "acquirerBIN": "510510",
+ "version": 2,
+ "merchantCode": "1234"
}
- ]
- }
- ],
- "invitations": []
- }'
- ```
-
+ ],
+ "branches": [
+ {
+ "name": "Sucursal uno",
+ "brand": "Marca de la sucursal uno",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://www.sucursal1.comercio.com",
+ "enabled": true,
+ "createToken": true,
+ "subscriptions": [
+ {
+ "franchise": "visa",
+ "acquirerBIN": "411111",
+ "version": 2,
+ "merchantCode": "1234"
+ },
+ {
+ "franchise": "mastercard",
+ "acquirerBIN": "510510",
+ "version": 2,
+ "merchantCode": "1234"
+ }
+ ]
+ },
+ {
+ "name": "Sucursal dos",
+ "brand": "Marca de la sucursal dos",
+ "country": "COL",
+ "currency": "COP",
+ "url": "https://www.sucursal2.comercio.com",
+ "enabled": true,
+ "createToken": true,
+ "subscriptions": [
+ {
+ "franchise": "1",
+ "acquirerBIN": "411111",
+ "version": 2,
+ "merchantCode": "1234"
+ }
+ ]
+ }
+ ],
+ "invitations": []
+ }'
+ ```
+
@@ -111,10 +186,10 @@ export const apiRefs = ['/api/v1/merchants'];
/>
-
+
- ```json {{ title: '200' }}
+ ```json {{ title: '200 (V1)' }}
{
"status": {
"code":1000
@@ -177,12 +252,59 @@ export const apiRefs = ['/api/v1/merchants'];
}
}
```
- ```json {{ title: '401' }}
+
+ ```json {{ title: '200 (V2)' }}
+ {
+ "status": {
+ "status": "OK",
+ "reason": "00",
+ "message": "The request has been successfully processed",
+ "date": "2025-12-09T20:46:20+00:00"
+ },
+ "merchant": {
+ "id":1,
+ "name":"Comercio uno"
+ },
+ "branches":[
+ {
+ "id":1,
+ "name":"Sucursal uno",
+ "token": {
+ "accessToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ },
+ {
+ "id":2,
+ "name":"Sucursal dos",
+ "token": {
+ "accessToken":"eyJ0eXAiOiJKV19.eyJhdWQiOiIxIiwianRpIjoiMWIyNjgk867nh...............",
+ "expiresAt": "2028-12-09T20:46:20+00:00",
+ }
+ }
+ ]
+
+ }
+ ```
+
+ ```json {{ title: '401 (V1)' }}
{
"message": "Unauthenticated."
}
```
- ```json {{ title: '422' }}
+
+ ```json {{ title: '401 (V2)' }}
+ {
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "Unauthenticated.",
+ "date": "2025-12-09T20:58:15+00:00"
+ }
+ }
+ ```
+
+ ```json {{ title: '422 (V1)' }}
{
"status": {
"code": 1003,
@@ -190,6 +312,17 @@ export const apiRefs = ['/api/v1/merchants'];
}
}
```
+
+ ```json {{ title: '422 (V2)' }}
+ {
+ "status": {
+ "status": "FAILED",
+ "reason": "BR",
+ "message": "The branches.0.name has already been taken.",
+ "date": "2025-12-09T21:00:42+00:00"
+ }
+ }
+ ```