- Created by user-e873e, last modified by Husain on Jun 27, 2019
Overview
Acropolis, a gen-next card payment issuing platform from Zeta that provides secure and easy to use APIs to manage complete card and card transactions. The platform provides best-in-class integration points to plug an external accounting system and also offers comprehensive support for authorization, clearing, settlement and reconciliation. As an issuer, you take an advantage of Acropolis capabilities to generate key reports such as settled, reversed, failed, aged, disputed and various others in most of the real-time scenarios.
openapi: 3.0.0
info:
description: Learn about Zeta Acropolis APIs in an interactive Zeta API console. To get started, contact Zeta to register and get access to the Zeta API endpoints.
version: 1.0.0
title: RESTful API Endpoints
termsOfService: ''
contact:
email:
name:
url:
host: acropolis.gw.zetapay.in
basePath: /v1
tags:
- name: cards-operations
description: Find out more about card operations
- name: cards-list
description: Get card details by pre-defined filters
- name: cards-order
description: Everything about placing card orders
schemes:
- https
paths:
'/tenants/{tenant}/cards/orders':
post:
tags:
- cards-order
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
description: This operation enables you to place a new card order.
operationId: createOrder
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/definitions/OrderRequest'
responses:
'201':
description: Order placed
content:
application/json:
schema:
$ref: '#/definitions/Order'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/definitions/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'409':
description: Already exists
content:
application/json:
schema:
$ref: '#/definitions/AlreadyExists'
'/tenants/{tenant}/cards/orders/{orderID}':
get:
tags:
- cards-order
description: This operation enables you to retrieve the order details.
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
- name: orderID
in: path
description: order ID
required: true
schema:
type: string
responses:
'200':
description: Returns order details
content:
application/json:
schema:
$ref: '#/definitions/Order'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'404':
description: Order does not exist
content:
application/json:
schema:
$ref: '#/definitions/NotFound'
'/tenants/{tenant}/cards/orders/{orderID}/cancel':
post:
tags:
- cards-order
description: This operation enables you to cancel an order.
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
- name: orderID
in: path
description: order ID
required: true
schema:
type: string
responses:
'200':
description: Returns order details
content:
application/json:
schema:
$ref: '#/definitions/Order'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'404':
description: Order does not exist
content:
application/json:
schema:
$ref: '#/definitions/NotFound'
'409':
description: Cannot cancel as order has already been processed
content:
application/json:
schema:
$ref: '#/definitions/OperationNotPermitted'
'/tenants/{tenant}/cards/create':
post:
tags:
- cards-operations
description: >-
This operation enables you to provision a new card and associate it with a given account and
account holder.
operationId: orderAndAssociate
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/definitions/OrderAndAssociateRequest'
responses:
'223':
description: |-
Successful operation.
This is the response when the view selected is BASIC
content:
application/json:
schema:
$ref: '#/definitions/basicCardView'
'233':
description: >-
Successful operation.
This is the response when the view selected is EXPANDED Detailed
View.
content:
application/json:
schema:
$ref: '#/definitions/expandedCardView'
'244':
description: |-
- Successful operation.
- This is the response when the view selected is EXPANDED_SENSITIVE.
content:
application/json:
schema:
$ref: '#/definitions/expandedSensitiveView'
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/definitions/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'409':
description: Order already exists
content:
application/json:
schema:
$ref: '#/definitions/AlreadyExists'
'500':
description: Unexpected error occoured.Please try agian after sometime.
content:
application/json:
schema:
$ref: '#/definitions/errorCode'
'/tenants/{tenant}/cards/{cardID}/associate':
post:
tags:
- cards-operations
description: This operation enables you to associate a card with a given account and
account holder.
operationId: associateCardsByIdentifier
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
- name: cardID
in: path
description: Card identifier
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/definitions/associateCardByIdentifierRequest'
responses:
'223':
description: |-
Successful operation.
This is the response when the view selected is BASIC
content:
application/json:
schema:
$ref: '#/definitions/basicCardView'
'233':
description: >-
Successful operation.
This is the response when the view selected is EXPANDED Detailed
View.
content:
application/json:
schema:
$ref: '#/definitions/expandedCardView'
'244':
description: |-
- Successful operation.
- This is the response when the view selected is EXPANDED_SENSITIVE.
content:
application/json:
schema:
$ref: '#/definitions/expandedSensitiveView'
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/definitions/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'403':
description: Operation not permitted.
content:
application/json:
schema:
$ref: '#/definitions/OperationNotPermitted'
'500':
description: Unexpected Error occoured.Please try agian after some time.
content:
application/json:
schema:
$ref: '#/definitions/errorCode'
'/tenants/{tenant}/cards/list':
post:
tags:
- cards-list
description: |2-
This operation enables you to pass one or multiple filters to fetch card details. Supported view types are
- BASIC
- EXPANDED
- EXPANDED_SENSITIVE
Note -
operationId: listCards
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/definitions/listCardsRequest'
responses:
'200':
description: |-
Successful operation.
This is the response when the view selected is BASIC
content:
application/json:
schema:
type: array
items:
$ref: '#/definitions/basicCardView'
'233':
description: >-
Successful operation.
This is the response when the view selected is EXPANDED Detailed
View.
content:
application/json:
schema:
type: array
items:
$ref: '#/definitions/expandedCardView'
'244':
description: |-
- Successful operation.
- This is the response when the view selected is EXPANDED_SENSITIVE.
content:
application/json:
schema:
type: array
items:
$ref: '#/definitions/expandedSensitiveView'
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/definitions/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'500':
description: Unexpected Error occoured.Please try agian after some time.
content:
application/json:
schema:
$ref: '#/definitions/errorCode'
'/tenants/{tenant}/cards/{cardID}/update':
post:
tags:
- cards-operations
description: This operation enables you to update card details such as account or account holder details.
operationId: updateCardByIdentifier
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
- name: cardID
in: path
description: Card identifier
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/definitions/updateCardByIdentifierRequest'
responses:
'223':
description: |-
Successful operation.
This is the response when the view selected is BASIC
content:
application/json:
schema:
$ref: '#/definitions/basicCardView'
'233':
description: >-
Successful operation.
This is the response when the view selected is EXPANDED Detailed
View.
content:
application/json:
schema:
$ref: '#/definitions/expandedCardView'
'244':
description: |-
- Successful operation.
- This is the response when the view selected is EXPANDED_SENSITIVE.
content:
application/json:
schema:
type: array
items:
$ref: '#/definitions/expandedSensitiveView'
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/definitions/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'500':
description: Unexpected Error occoured.Please try agian after some time.
content:
application/json:
schema:
$ref: '#/definitions/errorCode'
'/tenants/{tenant}/cards/{cardID}/changePin':
post:
tags:
- cards-operations
description: >-
This operation enables you to change card pin by using card identifying vectors such as
cardID, crn, full card and so on.
operationId: changePinByIdentifier
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
- name: cardID
in: path
description: Card identifier
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/definitions/changePinByIdentifierRequest'
responses:
'204':
description: New Pin set successfully.
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/definitions/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'403':
description: Operation not permitted
content:
application/json:
schema:
$ref: '#/definitions/OperationNotPermitted'
'500':
description: Unexpected Error occoured.Please try agian after some time.
content:
application/json:
schema:
$ref: '#/definitions/errorCode'
'/tenants/{tenant}/cards/{cardID}/setPin':
post:
tags:
- cards-operations
description: >-
This operation enables you to set card pin by using card identifying vectors such as
cardID, crn, full card and so on. Note that the old pin is not required to set up a new pin.
operationId: setPinByIdentifier
parameters:
- name: tenant
in: path
description: Tenant Identifier
required: true
schema:
type: string
- name: cardID
in: path
description: Card identifier
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/definitions/setPinByIdentifierRequest'
responses:
'204':
description: New Pin set successfully.
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/definitions/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/definitions/Unauthorized'
'403':
description: Operation not permitted
content:
application/json:
schema:
$ref: '#/definitions/OperationNotPermitted'
'500':
description: Unexpected Error occoured.Please try agian after some time.
content:
application/json:
schema:
$ref: '#/definitions/errorCode'
definitions:
cardView:
type: string
description: The view to be fetched
enum:
- BASIC
- EXPANDED
- EXPANDED_SENSITIVE
cardVector:
type: object
properties:
type:
type: string
enum:
- CARD
- CRN
- CARD_ID
value:
type: object
properties:
pan:
type: string
cvv:
type: string
expiry:
$ref: '#/definitions/yearMonth'
cardID:
type: string
example:
type: CARD
value:
pan: '1234567890123456'
expiry:
month: 2
year: 2020
cvv: '123'
yearMonth:
type: object
properties:
month:
type: 'number,'
example: 2
year:
type: 'number,'
example: 2020
orderStatus:
type: string
enum:
- ORDER_PLACED
- ORDER_FAILED
- ORDER_CANCELLED
- CARD_REQUEST_GENERATED
- EMBOSSING_FILE_GENERATED
- ORDER_COMPLETED
cardStatus:
type: string
enum:
- ACTIVE
- INACTIVE
- DISABLED
- BLOCKED
- HOTLISTED
errorCode:
type: object
required:
- code
- message
properties:
code:
type: number
message:
type: string
example:
code: INTERNAL_SERVER_ERROR
message: Unexpected error
dummy:
type: object
basicCardView:
type: object
properties:
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
cardID:
type: string
description: Card Identifier
crn:
type: string
description: Card Reference Number
cardType:
type: string
enum:
- PHYSICAL
- VIRTUAL
maskedPan:
type: string
cardStatus:
$ref: '#/definitions/cardStatus'
expandedCardView:
allOf:
- $ref: '#/definitions/basicCardView'
- type: object
properties:
associatedAt:
type: string
format: date-time
description: date in UTC when request was activated.
orderDetails:
type: object
properties:
orderID:
type: string
cardSkuID:
type: string
plasticCode:
type: string
thirdLineEmbossing:
type: string
fourthLineEmbossing:
type: string
expiry:
$ref: '#/definitions/yearMonth'
deliveryAddress:
type: object
properties:
name:
type: string
addressLine1:
type: string
addressLine2:
type: string
addressLine3:
type: string
addressLine4:
type: string
city:
type: string
state:
type: string
country:
type: string
postalCode:
type: string
contactNumber:
type: string
tenantAttrributes:
type: object
properties:
corporateName:
type: string
corporateID:
type: string
templateID:
type: string
vendorAttributes:
type: object
properties:
consignmentID:
type: string
orderStatus:
$ref: '#/definitions/orderStatus'
embossedAt:
type: string
format: date-time
description: date in UTC when card was Created/Embossed.
orderedAt:
type: string
format: date-time
description: date in UTC when card was requested/Order placed.
vendorDetails:
type: object
properties:
vendorName:
type: string
enum:
- DZ
- SESHAASAI
- FAO
- NA
- DEFAULT
accountInformation:
type: object
required:
- accountId
properties:
accountHolderID:
type: string
accountID:
type: string
accountAttributes:
type: object
properties:
- target: null
type: string
enum:
- WALLET
- ACCOUNT
account:
type: object
required:
- id
- target
description: Account Details
properties:
id:
type: string
description: Account identifier
attributes:
description: Additional account specific attributes
type: object
properties:
target:
type: string
enum:
- WALLET
- ACCOUNT
accountHolder:
type: object
required:
- id
description: Account Holder Details
properties:
id:
type: string
description: Account Holder identifier
attributes:
type: object
activateByCRNRequest:
type: object
required:
- account
- accountHolder
- crn
- nonce
properties:
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
cardStatus:
type: string
enum:
- INACTIVE
- ACTIVE
- DISABLED
- BLOCKED
- HOTLISTED
description: Current card status
view:
type: string
description: The view to be fetched
enum:
- EMBOSSED_BASIC
- CARD_ID
- EMBOSSED_ENHANCED
- CARD_ENHANCED_SENSITIVE
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
expandedSensitiveView:
type: object
allOf:
- $ref: '#/definitions/expandedCardView'
- type: object
properties:
sensitiveCard:
type: object
required:
- payload
- serverPublicKey
properties:
type:
type: string
enum:
- ENCRYPTED
value:
type: object
properties:
serverPublicKey:
type: string
encryptedData:
type: string
associateCardRequest:
type: object
required:
- account
- accountHolder
- cardVector
- nonce
properties:
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
cardVector:
$ref: '#/definitions/cardVector'
cardStatus:
$ref: '#/definitions/cardStatus'
view:
$ref: '#/definitions/cardView'
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
clientPublicKey:
type: string
example:
account:
id: string
attributes:
target: WALLET
accountHolder:
id: string
attributes: {}
cardVector:
type: CARD_ID
value:
cardID: Random GUID
cardStatus: ACTIVE
view: BASIC
nonce: '1537788874000'
clientPublicKey: string
associateCardByIdentifierRequest:
type: object
required:
- account
- accountHolder
- cardVector
- nonce
properties:
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
cardStatus:
$ref: '#/definitions/cardStatus'
view:
$ref: '#/definitions/cardView'
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
clientPublicKey:
type: string
example:
account:
id: string
attributes:
target: WALLET
accountHolder:
id: string
attributes: {}
cardStatus: ACTIVE
view: BASIC
nonce: '1537788874000'
clientPublicKey: string
updateCardsRequest:
type: object
required:
- cardVector
- nonce
- view
properties:
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
cardVector:
$ref: '#/definitions/cardVector'
cardStatus:
$ref: '#/definitions/cardStatus'
view:
$ref: '#/definitions/cardView'
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
clientPublicKey:
type: string
example:
account:
id: 1234566
attributes:
accountNo: 1234567890
accountHolder:
id: xyz@test.com
attributes:
name: xyz
cardVector:
type: CARD_ID
value:
cardID: random_guid
cardStatus: DISABLED
view: BASIC
nonce: '1537788874000'
updateCardByIdentifierRequest:
type: object
required:
- cardVector
- nonce
- view
properties:
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
cardStatus:
$ref: '#/definitions/cardStatus'
view:
$ref: '#/definitions/cardView'
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
clientPublicKey:
type: string
example:
account:
id: 1234566
attributes:
accountNo: 1234567890
accountHolder:
id: xyz@test.com
attributes:
name: xyz
cardStatus: DISABLED
view: BASIC
nonce: '1537788874000'
embossAndAssociateOrderRequest:
type: object
required:
- quantitiy
- orderID
- cardSkuID
properties:
orderID:
required: true
type: string
cardSkuID:
type: string
plasticCode:
type: string
expiry:
$ref: '#/definitions/yearMonth'
thirdLineEmbossing:
type: string
fourthLineEmbossing:
type: string
deliveryAddress:
type: object
properties:
name:
type: string
addressLine1:
type: string
addressLine2:
type: string
addressLine3:
type: string
addressLine4:
type: string
city:
type: string
state:
type: string
country:
type: string
postalCode:
type: string
contactNumber:
type: string
tenantAttrributes:
type: object
properties:
corporateName:
type: string
corporateID:
type: string
templateID:
type: string
vendorAttributes:
description: Free flowing attributes for vendor
type: object
properties:
consignmentID:
type: string
OrderAndAssociateRequest:
type: object
required:
- account
- accountHolder
- order
- nonce
properties:
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
order:
$ref: '#/definitions/embossAndAssociateOrderRequest'
view:
$ref: '#/definitions/cardView'
cardStatus:
$ref: '#/definitions/cardStatus'
clientPublicKey:
type: string
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
listCardsRequest:
type: object
required:
- nonce
- filters
properties:
view:
$ref: '#/definitions/cardView'
filters:
type: object
allOf:
- type: object
properties:
cardID:
type: string
pan:
type: string
crn:
type: string
orderID:
type: string
account:
$ref: '#/definitions/account'
accountHolder:
$ref: '#/definitions/accountHolder'
clientPublicKey:
type: string
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
example:
view: BASIC
filters:
cardID: guid
crn: '123456789012'
orderID: string
account:
id: string
attributes:
target: WALLET
accountHolder:
id: string
attributes: {}
nonce: '1537788874000'
changePinRequest:
type: object
required:
- cardVector
- newPin
- oldPin
- nonce
properties:
cardVector:
$ref: '#/definitions/cardVector'
oldPin:
type: string
newPin:
type: string
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
example:
cardVector:
type: CARD_ID
value:
cardID: random guid
oldPin: '1234'
newPin: '1111'
nonce: '1537788874000'
changePinByIdentifierRequest:
type: object
required:
- newPin
- oldPin
- nonce
properties:
oldPin:
type: string
newPin:
type: string
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
example:
oldPin: '1234'
newPin: '1111'
nonce: '1537788874000'
setPinRequest:
type: object
required:
- cardVector
- newPin
- nonce
properties:
cardVector:
$ref: '#/definitions/cardVector'
newPin:
type: string
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
example:
cardVector:
type: CARD
value:
pan: '1234567890123456'
cvv: '123'
expiry:
month: 2
year: 2020
newPin: '1111'
nonce: '1537788874000'
setPinByIdentifierRequest:
type: object
required:
- newPin
- nonce
properties:
newPin:
type: string
nonce:
type: string
format: number
example: '1537788874000'
description: current epoch time in milis.
example:
newPin: '1111'
nonce: '1537788874000'
sensitiveCard:
type: object
properties:
pan:
type: string
cvv:
type: string
expiry:
type: string
OrderRequest:
type: object
required:
- quantity
- orderID
- cardSkuID
- plasticCode
- deliveryAddress
- tenantAttributes
- vendorAttributes
properties:
quantity:
type: number
format: int32
description: Number of cards to be generated
orderID:
type: string
description: Order identifier
cardSkuID:
type: string
description: Identifier of Card SKU which represent product configuration
plasticCode:
type: string
description: Card design code
expiry:
$ref: '#/definitions/yearMonth'
thirdLineEmbossing:
type: string
fourthLineEmbossing:
type: string
deliveryAddress:
type: object
description: Address of the consignment recipient
properties:
name:
type: string
addressLine1:
type: string
addressLine2:
type: string
addressLine3:
type: string
addressLine4:
type: string
city:
type: string
state:
type: string
country:
type: string
postalCode:
type: string
contactNumber:
type: string
tenantAttributes:
description: Attributes added by tenant for tagging
type: object
properties:
corporateName:
type: string
corporateID:
type: string
templateID:
type: string
vendorAttributes:
description: Free flowing attributes for vendor
type: object
properties:
consignmentID:
type: string
Order:
type: object
properties:
quantity:
type: number
format: int32
description: Number of cards to be generated
orderID:
type: string
description: Order identifier
cardSkuID:
type: string
description: Identifier of Card SKU which represent product configuration
plasticCode:
type: string
description: Card design code
thirdLineEmbossing:
type: string
fourthLineEmbossing:
type: string
expiry:
$ref: '#/definitions/yearMonth'
deliveryAddress:
type: object
description: Address of the consignment recipient
properties:
name:
type: string
addressLine1:
type: string
addressLine2:
type: string
addressLine3:
type: string
addressLine4:
type: string
city:
type: string
state:
type: string
country:
type: string
postalCode:
type: string
contactNumber:
type: string
tenantAttributes:
type: object
description: Attributes added by tenant for tagging
properties:
corporateName:
type: string
corporateID:
type: string
templateID:
type: string
vendorAttributes:
type: object
description: Free flowing attributes for vendor
properties:
consignmentID:
type: string
orderStatus:
$ref: '#/definitions/orderStatus'
orderedAt:
type: string
format: date-time
description: date in UTC when card was requested/Order placed.
ErrorResponse:
type: object
properties:
code:
type: string
message:
type: string
BadRequest:
type: object
properties:
message:
type: string
example: Bad Request
code:
type: string
example: BAD_REQUEST
Unauthorized:
type: object
properties:
code:
type: string
example: UNAUTHORIZED
message:
type: string
example: Unauthorized
AlreadyExists:
type: object
properties:
code:
type: string
example: ALREADY_EXISTS
message:
type: string
example: Already exists
NotFound:
type: object
properties:
code:
type: string
example: NOT_FOUND
message:
type: string
example: Not found
OperationNotPermitted:
type: object
properties:
code:
type: string
example: OPERATION_NOT_PERMITTED
message:
type: string
example: Operation not permitted at current state
AuthHeaderSignature:
name: X-Zeta-Signature
in: header
schema:
type: string
description: Signature
AuthHeaderSignatory:
name: X-Zeta-Signatory
in: header
schema:
type: string
description: Authorized Entity
AuthHeaderNonce:
name: X-Zeta-Nonce
in: header
description: Timestamp of Request
schema:
type: number
format: int64
externalDocs:
description: Request for Developer Access
url: 'https://docs.google.com/forms/d/e/1FAIpQLSeZPc4Povr-2CPJH99vTa0TG3_aoiAqzwiwmCaboVhx1UOpJw/viewform'
- No labels