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" + } + } + ```