openapi: 3.0.0
info:
  title: Verifone Order Internal API
  description: >-
    # Introduction


    The Order Service API provides the ability to:


    * Order Hardware and Services

    * Provision and Board Devices


    # Definitions


    ## Order


    An order is a collection of instructions of provisioning and ordering
    applications and hardware.


    ## Hardware


    Refers to the physical device.


    ## Service


    A software subscribed application/service, e.g. APM, Payment Contract,
    or a feature, e.g. CNP. Or hardware ownership

    related services: Swap, Repair, Warranties etc.


    ## Acquirer


    An acquiring bank (also known simply as an acquirer) is a bank or financial
    institution that processes credit or

    debit card payments on behalf of a merchant.


    The acquirer allows merchants to accept credit card payments from the
    card-issuing banks within an association. In

    usual scenario, an acquirer is a customer of Verifone. Acquirer has then
    its own customers who are not Verifone

    customers directly.


    ## Merchant


    A merchant is a person who trades in commodities produced by other people.
    Essentially to person or persons in a

    store taking the payments for the goods they sell and who has the contact
    with the Acquirer for processing of funds.


    ## Customer


    An acquirer or merchant or other entity we are charging for hardware or
    services from Verifone.


    ## POI


    The Point of Interaction. This may refer to a number of different entities,
    but is primarily considered to be the

    logical Terminal.
  termsOfService: https://www.verifone.com/en/us/legal
  contact:
    url: https://developer.verifone.com
    email: developers@verifone.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 2.63.1-SNAPSHOT
  x-generatedOn: 2026-06-17T12:55:57.467154+05:30[Asia/Kolkata]
servers:
- url: https://api.verifone.com
tags:
- name: Common
  description: Operations common to all orders.
- name: Merchant Orders
  description: Operations to manage merchant orders.
- name: POI Orders
  description: >-
    Operations to manage POI (Point of interaction/terminal) Orders for existing
    merchants.
- name: Hardware Orders
  description: Operations to manage hardware orders.
- name: POI Maintenance
  description: Operations to manage POI (Point of interaction/terminal) records.
- name: Merchant Maintenance
  description: Operations to manage exiting merchants.
- name: Batch
  description: Verifone internal batch operations; used for merchant & POI
    maintenance.
- name: Merchant Orders Documentation
  description: >-
    Operations to manage documents for merchant orders that require them for
    AML/KYC.
- name: Reseller Event Data
  description: >-
    Operations to manage reseller event data records. Scoped per reseller
    program; Corego is the first consumer.
- name: Internal
  description: Verifone internal operations
- name: Accounts
  description: Operations to manage Oracle account records.
- name: Additional Services
  description: Operations to manage additional services for merchant orders.
- name: MID/TID Generation
  description: Operations to generate merchant and terminal IDs.
- name: Maintenance Orders
  description: Operations to manage maintenance orders.
- name: Multi Merchant
  description: Operations to manage multi-merchant configurations.
- name: Purchased TIDs
  description: Operations to manage purchased TID allocations for entities.
- name: User
  description: Operations to manage unapproved users for an entity.
- name: Webhooks
  description: Webhook callback operations.
x-tagGroups:
- name: Order Management
  tags:
  - Merchant Orders
  - Additional Services
  - POI Orders
  - Hardware Orders
  - Merchant Orders Documentation
  - Common
  - Webhooks
- name: Maintenance
  tags:
  - Merchant Maintenance
  - POI Maintenance
  - Maintenance Orders
  - Multi Merchant
- name: Reseller
  tags:
  - Reseller Event Data
- name: Internal
  tags:
  - Internal
  - User
  - MID/TID Generation
  - Purchased TIDs
  - Accounts
  - Batch
  - Webhooks
paths:
  /orders:
    get:
      tags:
      - Common
      summary: Get the list of all orders
      description: >-
        By passing in the appropriate options, you can search for available
        orders in the system.
      operationId: searchOrders
      parameters:
      - $ref: '#/components/parameters/orderReferenceQueryParam'
      - $ref: '#/components/parameters/orderStatusQueryParam'
      - name: detailedStatus
        in: query
        description: Pass an optional search string for looking up order by
          detailed status.
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/DetailedStatusEnum'
      - $ref: '#/components/parameters/orderTypeQueryParam'
      - $ref: '#/components/parameters/filterDateTypeQueryParam'
      - $ref: '#/components/parameters/userUidsQueryParam'
      - $ref: '#/components/parameters/startTimeQueryParam'
      - $ref: '#/components/parameters/endTimeQueryParam'
      - name: lastChangeTime
        in: query
        description: Orders last changed before this time (used to find order
          not moved)
        required: false
        style: form
        explode: false
        schema:
          $ref: '#/components/schemas/LastChangeTime'
      - $ref: '#/components/parameters/merchantNameQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidsQueryParam'
      - $ref: '#/components/parameters/customerEntityUidsQueryParam'
      - $ref: '#/components/parameters/customerEntityUidQueryParam'
      - $ref: '#/components/parameters/pageNumberQueryParam'
      - $ref: '#/components/parameters/pageSizeQueryParam'
      - $ref: '#/components/parameters/orderQueryParam'
      - name: orderBy
        in: query
        description: >-
          The field to order by. Valid fields are: createdBy, createdDate,
          modifiedDate, merchantName, status
        required: false
        style: form
        explode: false
        schema:
          type: string
      - $ref: '#/components/parameters/merchantTypeQueryParam'
      - $ref: '#/components/parameters/signingProviderQueryParam'
      - $ref: '#/components/parameters/portfolioTypeQueryParam'
      - $ref: '#/components/parameters/groupNameQueryParam'
      - $ref: '#/components/parameters/statusesQueryParam'
      - $ref: '#/components/parameters/checkPresenceInEntityQueryParam'
      responses:
        '200':
          description: search results matching criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderSearchResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/creators:
    get:
      tags:
      - Common
      summary: Get the list of the creators for the orders
      description: >-
        By passing in the appropriate options, you can search for creators
        based upon the search criteria.
      operationId: searchCreators
      deprecated: true
      parameters:
      - $ref: '#/components/parameters/orderReferenceQueryParam'
      - $ref: '#/components/parameters/orderStatusQueryParam'
      - $ref: '#/components/parameters/orderTypeQueryParam'
      - $ref: '#/components/parameters/filterDateTypeQueryParam'
      - $ref: '#/components/parameters/userUidsQueryParam'
      - $ref: '#/components/parameters/startTimeQueryParam'
      - $ref: '#/components/parameters/endTimeQueryParam'
      - $ref: '#/components/parameters/merchantNameQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidsQueryParam'
      - $ref: '#/components/parameters/customerEntityUidsQueryParam'
      - $ref: '#/components/parameters/customerEntityUidQueryParam'
      responses:
        '200':
          description: Search results matching criteria.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatorsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/metadata:
    get:
      tags:
      - Common
      summary: Get the list of the searchable metadata for querying orders
      description: >-
        By passing in the appropriate options, you can search for metadata
        based upon the search criteria.
      operationId: searchMetadata
      parameters:
      - $ref: '#/components/parameters/orderReferenceQueryParam'
      - $ref: '#/components/parameters/orderStatusQueryParam'
      - $ref: '#/components/parameters/orderTypeQueryParam'
      - $ref: '#/components/parameters/filterDateTypeQueryParam'
      - $ref: '#/components/parameters/userUidsQueryParam'
      - $ref: '#/components/parameters/startTimeQueryParam'
      - $ref: '#/components/parameters/endTimeQueryParam'
      - $ref: '#/components/parameters/merchantNameQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidsQueryParam'
      - $ref: '#/components/parameters/customerEntityUidsQueryParam'
      - $ref: '#/components/parameters/customerEntityUidQueryParam'
      responses:
        '200':
          description: Search results matching criteria.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /entities/{customerEntityUid}/orders/{merchantCompanyEntityUid}/first:
    get:
      tags:
      - Common
      summary: Get a First Company order
      description: Get the first order which was boarded for a company
      operationId: getFirstCompanyOrder
      parameters:
      - name: customerEntityUid
        in: path
        description: 'The Verifone assigned ID corresponding to the entity. '
        required: true
        schema:
          $ref: '#/components/schemas/EntityUid'
      - name: merchantCompanyEntityUid
        in: path
        description: Verifone Merchant Company EntityUid
        required: true
        schema:
          $ref: '#/components/schemas/MerchantCompanyEntityUid'
      - $ref: '#/components/parameters/portfolioTypeQueryParam'
      responses:
        '200':
          description: Search results matching criteria.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OneOfOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}:
    get:
      tags:
      - Common
      summary: Get a single order
      description: Get a single order by Order Id
      operationId: getOrder
      parameters:
      - name: orderId
        in: path
        description: Verifone allocated ID for the Order
        required: true
        schema:
          $ref: '#/components/schemas/OrderId'
      responses:
        '200':
          description: search results matching criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OneOfOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/cancel:
    post:
      tags:
      - Common
      summary: Request Order to be cancelled
      description: >-
        Request an Order to be cancelled, note depending on status of the
        order this may not be allowed.
      operationId: cancelOrder
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      requestBody:
        description: Status update request.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderCancellation'
      responses:
        '204':
          description: Order Cancellation Requested
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '406':
          $ref: '#/components/responses/406'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/drafts/{orderId}:
    post:
      tags:
      - Common
      summary: Submit Draft Order for processing
      description: Submit Draft Order for processing
      operationId: submitOrder
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      - $ref: '#/components/parameters/validateAcquirerHeaderParam'
      - $ref: '#/components/parameters/validateACHHeaderParam'
      - $ref: '#/components/parameters/validateCompanyIdentityHeaderParam'
      responses:
        '204':
          description: Order submitted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    delete:
      tags:
      - Common
      summary: Delete a Draft Order
      description: Delete a Draft Order (only if in draft state)
      operationId: deleteOrder
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      responses:
        '204':
          description: Order Deleted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/econtracts/sendReminder:
    post:
      tags:
      - Common
      summary: Send Econtract reminder
      description: Triggers the econtract provider to send a reminder for
        pending signature.
      operationId: postResendEcontract
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      responses:
        '202':
          description: Resend request accepted.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/econtracts/download:
    get:
      tags:
      - Common
      summary: Download Econtract
      description: Download econtract PDF
      operationId: getEcontract
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      - name: signed
        in: query
        required: true
        schema:
          type: boolean
          default: true
      responses:
        '200':
          description: Contract file
          content:
            'application/pdf:':
              schema:
                type: string
                format: binary
          headers:
            Content-Disposition:
              schema:
                type: string
                example: attachment; filename="contract.pdf"
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/resendWelcomeLetter:
    post:
      tags:
      - Common
      summary: Resend welcome letter
      description: Triggers to resend the welcome letter to customer.
      operationId: postResendWelcomeLetter
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      responses:
        '202':
          description: Resend welcome letter
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/required-documents:
    get:
      tags:
      - Merchant Orders Documentation
      summary: Documents required for merchant order
      description: Docs required for merchant order
      operationId: requiredDocuments
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      responses:
        '202':
          description: Required Document list
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RequiredDocument'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/upload-urls:
    post:
      tags:
      - Merchant Orders Documentation
      summary: Generate URLs for document upload
      description: >-
        Generate URLs for document upload. These will expire after a short
        period to which you will need to request new URLs.
      operationId: generateDocumentURLs
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/AdditionalDocument'
      responses:
        '202':
          description: URLs to upload the required documents.
          content:
            application/json:
              schema:
                type: array
                items:
                  allOf:
                  - $ref: '#/components/schemas/AdditionalDocument'
                  - properties:
                      uploadUrl:
                        type: string
                        description: Upload URL for this document.
                    required:
                    - uploadUrl
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/documents/{documentId}:
    delete:
      tags:
      - Merchant Orders Documentation
      summary: Delete document by id
      description: Delete document by id
      operationId: deleteDocumentById
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      - name: documentId
        in: path
        required: true
        description: Id of the document to be deleted.
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Document Deleted
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/merchant:
    post:
      tags:
      - Merchant Orders
      summary: Create Merchant Order
      description: >-
        Adds a new merchant to the system and optionally allows for ordering
        hardware and services.
      operationId: addMerchantDraft
      parameters:
      - $ref: '#/components/parameters/saveDraftHeaderParam'
      - $ref: '#/components/parameters/validateAcquirerHeaderParam'
      - $ref: '#/components/parameters/validateACHHeaderParam'
      - $ref: '#/components/parameters/validateCompanyIdentityHeaderParam'
      - $ref: '#/components/parameters/SimplifiedFlowHeaderParam'
      requestBody:
        description: Merchant to add
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MerchantOrder'
      responses:
        '200':
          description: Create Merchant Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MerchantOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/merchant/{orderId}:
    put:
      tags:
      - Merchant Orders
      summary: Update/Replace Merchant Order.
      description: >-
        Update merchant order. This can only be done if the order has not
        been submitted.
      operationId: updateMerchant
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      - $ref: '#/components/parameters/validateAcquirerHeaderParam'
      - $ref: '#/components/parameters/validateACHHeaderParam'
      - $ref: '#/components/parameters/validateCompanyIdentityHeaderParam'
      requestBody:
        description: Order details to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MerchantOrder'
      responses:
        '200':
          description: Replace Merchant Order Response
          content:
            application/json:
              schema:
                type: array
                maxItems: 1
                items:
                  $ref: '#/components/schemas/MerchantOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/merchant/additionalServices:
    post:
      tags:
      - Additional Services
      summary: Create Additional Services Order
      description: >-
        Creates an order for add-on services (e.g. APM integration). A new
        PPC is created if no contract ID is specified.
      operationId: addOnServicesOrderRequest
      parameters:
      - $ref: '#/components/parameters/saveDraftHeaderParam'
      requestBody:
        description: Additional Services Order Request Body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdditionalServicesOrder'
      responses:
        '201':
          description: Create Additional Services Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdditionalServicesOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/merchant/additionalServices/{orderId}:
    put:
      tags:
      - Additional Services
      summary: Update Additional Services Order
      description: >-
        Updates an existing add-on services order, provided the order has
        not yet been submitted.
      operationId: updateAddOnServicesOrderRequest
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      requestBody:
        description: Additional Services Order Request Body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdditionalServicesOrder'
      responses:
        '201':
          description: Update Additional Services Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdditionalServicesOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/bulk/upload-url:
    post:
      tags:
      - Common
      summary: Initiate bulk order upload
      description: >
        Starts the bulk order upload process. Provide the customer, file type
        and file name — the service will respond with a secure upload link
        and a reference ID. Use the upload link to upload your file, then
        use the reference ID to submit it for processing.
      operationId: initiateBulkUpload
      requestBody:
        description: Bulk upload initiation request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUploadInitRequest'
      responses:
        '200':
          description: Bulk upload initiated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUploadInitResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/bulk/submit:
    post:
      tags:
      - Common
      summary: Submit bulk order upload for processing
      description: >
        Submits the uploaded file for processing. Provide the reference ID
        received from POST /orders/bulk/upload-url — the service will scan
        the file and, if clean, move it to the target location for processing.
        If the file is found to be infected it will be rejected.
      operationId: submitBulkUpload
      requestBody:
        description: Bulk upload submission request body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUploadSubmitRequest'
      responses:
        '200':
          description: File is clean and has been successfully submitted for
            processing.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Conflict — virus scan still pending after retries exhausted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - SCAN_PENDING
                  message:
                    type: string
                required:
                - code
                - message
        '422':
          description: Unprocessable Entity — file is infected and has been
            rejected.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - INFECTED_FILE
                  message:
                    type: string
                required:
                - code
                - message
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/hardware:
    post:
      tags:
      - Hardware Orders
      summary: Create Hardware Order
      description: Adds a new hardware order to the system.
      operationId: addHardwareOrder
      parameters:
      - $ref: '#/components/parameters/saveDraftHeaderParam'
      - $ref: '#/components/parameters/SimplifiedFlowHeaderParam'
      requestBody:
        description: Hardware to add
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HardwareOrder'
      responses:
        '200':
          description: Create Hardware Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HardwareOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/hardware/{orderId}:
    put:
      tags:
      - Hardware Orders
      summary: Update/Replace Hardware Order.
      description: >-
        Update Hardware order. This can only be done if the order has not
        been submitted.
      operationId: updateHardwareOrder
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      requestBody:
        description: Order details to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HardwareOrder'
      responses:
        '200':
          description: Replace Hardware Order Response
          content:
            application/json:
              schema:
                type: array
                maxItems: 1
                items:
                  $ref: '#/components/schemas/HardwareOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/pois:
    post:
      tags:
      - POI Orders
      summary: Create POI Order
      description: >-
        Adds new Point Of Interactions (terminals) to an existing merchant/store
        and optionally order hardware and services.
      operationId: addPoiOrder
      parameters:
      - $ref: '#/components/parameters/saveDraftHeaderParam'
      - $ref: '#/components/parameters/validateAcquirerHeaderParam'
      - $ref: '#/components/parameters/SimplifiedFlowHeaderParam'
      requestBody:
        description: Terminals to add
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiOrder'
      responses:
        '200':
          description: Create POI Order Response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/pois/{orderId}:
    put:
      tags:
      - POI Orders
      summary: Update/Replace POI order.
      description: >-
        Update/Replace POI order. This can only be done if the order has not
        been submitted.
      operationId: updatePoiOrder
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      - $ref: '#/components/parameters/validateAcquirerHeaderParam'
      requestBody:
        description: Order details to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiOrder'
      responses:
        '200':
          description: Replace POI Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /pois/orders/maintenance/{poiUid}:
    post:
      tags:
      - Maintenance Orders
      summary: POI Maintenance Order Request
      description: Submits a POI Maintenance Order Request
      operationId: poiMaintenanceOrderRequest
      requestBody:
        description: Maintenance Order details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiMaintenanceOrder'
      responses:
        '201':
          description: Create POI Maintenance Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiMaintenanceOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
      parameters:
      - name: poiUid
        in: path
        description: The assigned ID corresponding for the POI.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/PoiUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
  /pois/orders/accessories/{poiUid}:
    post:
      tags:
      - POI Orders
      summary: Create POI Accessory Order
      description: >-
        Creates an order for add-on accessories & consumables (e.g. stationery)
        which are typically used with a POI.
      operationId: accessoryOrderRequest
      parameters:
      - $ref: '#/components/parameters/poiUidPathParam'
      requestBody:
        description: Accessory Order Request Body
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiAccessoryOrder'
      responses:
        '201':
          description: POI Accessory Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiAccessoryOrderResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /entities/{entityUid}/tradingAddress:
    patch:
      tags:
      - Merchant Maintenance
      summary: Partial Update of a Trading address
      description: >-
        A partial update of an existing Merchant Entity Address. Only replaces
        the provided parameters.
      operationId: updateEntityAddress
      parameters:
      - $ref: '#/components/parameters/entityUidPathParam'
      requestBody:
        description: Address details to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseAddress'
      responses:
        '200':
          description: Patch Trading Address Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseAddressWithoutType'
          headers:
            orderId:
              schema:
                $ref: '#/components/schemas/OrderId'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /entities/{entityUid}:
    patch:
      tags:
      - Merchant Maintenance
      summary: Partial Update of a Merchant Entity
      description: >-
        A partial update of an existing Merchant Entity. Only replaces the

        provided parameters.


        This can be used to activate/deactivate a merchant entity and change
        the trading name.
      operationId: patchEntity
      requestBody:
        description: Entity details to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntityPatch'
      responses:
        '204':
          description: Patch Entity Success.
          headers:
            orderId:
              schema:
                $ref: '#/components/schemas/OrderId'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
      parameters:
      - name: entityUid
        in: path
        description: The Verifone assigned ID corresponding to the entity.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/EntityUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    delete:
      tags:
      - Merchant Maintenance
      summary: Delete a Single Merchant Entity
      description: Deletes an Entity.
      operationId: deleteEntity
      responses:
        '204':
          description: The Entity was successfully deleted.
          headers:
            orderId:
              schema:
                $ref: '#/components/schemas/OrderId'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
      parameters:
      - name: entityUid
        in: path
        description: The Verifone assigned ID corresponding to the entity.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/EntityUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
  /pois/{poiUid}/parentPoi:
    get:
      tags:
      - Multi Merchant
      summary: Get multi merchant parent record.
      description: Get the parent multi merchant POI record associated with
        this POI.
      operationId: getParentPoi
      responses:
        '200':
          description: Multi Merchant Parent (owner) POI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiTypeSimplifiedResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
      parameters:
      - name: poiUid
        in: path
        description: The assigned ID corresponding for the POI.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/PoiUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
  /pois/{poiUid}/childPois/move:
    post:
      tags:
      - Multi Merchant
      summary: Move child POIs to a new parent.
      description: Move existing child POI records to a new multi merchant
        parent POI.
      operationId: childPoisMove
      requestBody:
        description: Destination POI details.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChildPoiMoveRequest'
      responses:
        '200':
          description: Multi Merchant Parent POI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiTypeSimplifiedResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
      parameters:
      - name: poiUid
        in: path
        description: The assigned ID corresponding for the POI.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/PoiUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
  /pois/lookup:
    get:
      tags:
      - Common
      - POI Maintenance
      summary: Lookup POIs by merchant identifiers
      description: >
        Resolves POI UIDs from one or more merchant identifiers. At least
        one query parameter must be provided. Parameters are grouped into
        three resolution paths: Path 1 (merchantId), Path 2 (entity identifiers
        — AND-combinable), Path 3 (estateManagementId). merchantId + altVfiEntityId
        is also supported.
      operationId: lookupPoi
      parameters:
      - name: merchantId
        in: query
        description: Acquirer MID stored on Payment Provider Contract (Path
          1).
        schema:
          type: string
      - name: altVfiEntityId
        in: query
        description: Verifone gateway MID (ISO8583 DE42) (Path 2).
        schema:
          type: string
      - name: siteReferenceId
        in: query
        description: Site reference ID (Path 2).
        schema:
          type: string
      - name: storeNumber
        in: query
        description: Alias for siteReferenceId — same Entity Service param
          (Path 2).
        schema:
          type: string
      - name: merchantName
        in: query
        description: Merchant name (Path 2).
        schema:
          type: string
      - name: siteName
        in: query
        description: Site name (Path 2).
        schema:
          type: string
      - name: estateManagementId
        in: query
        description: Estate management ID — resolves POI and parent entity
          directly (Path 3).
        schema:
          type: string
      responses:
        '200':
          description: POI lookup result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiLookupResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '422':
          description: Unprocessable Entity — conflicting or ambiguous identifiers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - AMBIGUOUS_IDENTIFIER
                    - CONFLICTING_IDENTIFIERS
                  message:
                    type: string
                required:
                - code
                - message
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /pois/{poiUid}:
    patch:
      tags:
      - POI Maintenance
      summary: Partial Update of a POI
      description: >-
        A partial update of an existing POI record. Only replaces the provided

        parameters.


        This can be used to activate/deactivate a POI record. When deactivated
        the terminal will be blocked from transacting.
      operationId: patchPoi
      requestBody:
        description: POI details to update
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiPatch'
      responses:
        '204':
          description: Patch POI Success.
          headers:
            orderId:
              schema:
                $ref: '#/components/schemas/OrderId'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
      parameters:
      - name: poiUid
        in: path
        description: The assigned ID corresponding for the POI.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/PoiUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    delete:
      tags:
      - POI Maintenance
      summary: Delete a Single POI
      description: >-
        Deletes a POI.


        **forceDelete=false (default)**

        Deletion fails with 400 if the POI is ACTIVE. The POI must be

        INACTIVE before calling this endpoint.


        **forceDelete=true**

        An ACTIVE POI is automatically inactivated before deletion. If already

        INACTIVE, deletion proceeds directly.

        Returns 400 if the inactivation step fails; the POI is not deleted.
      operationId: deletePoi
      parameters:
      - name: poiUid
        in: path
        description: The assigned ID corresponding for the POI.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/PoiUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
      - $ref: '#/components/parameters/forceDeleteQueryParam'
      responses:
        '204':
          description: The Poi was successfully deleted.
          headers:
            orderId:
              schema:
                $ref: '#/components/schemas/OrderId'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /entities/{entityUid}/users:
    post:
      tags:
      - User
      summary: Create a new unapproved user
      description: >-
        Create an unapproved merchant user associated to the target customer
        entity. The target entity needs to have a customer profile in the
        portfolio service and an entity configured to add unapproved users
        to in the customer profile.
      operationId: createUnapprovedUser
      parameters:
      - $ref: '#/components/parameters/entityUidPathParam'
      requestBody:
        description: Contact Details of the user to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactType'
      responses:
        '201':
          description: User Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddUserResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /v2/entities/{entityUid}/users:
    post:
      tags:
      - User
      summary: Create a new unapproved user, version 2
      description: >-
        Create an unapproved merchant user associated to the target customer
        entity. The target entity needs to have a customer profile in the
        portfolio service and an entity configured to add unapproved users
        to in the customer profile.
      operationId: createUnapprovedUserV2
      parameters:
      - $ref: '#/components/parameters/entityUidPathParam'
      requestBody:
        description: Contact Details of the user to create
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserContactType'
      responses:
        '201':
          description: User Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddUserResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /entities/{entityUid}/purchasedTid:
    put:
      tags:
      - Purchased TIDs
      operationId: insertPurchasedTIDs
      summary: Insert TIDs into pool
      description: >-
        Insert an array of purchased TIDs into the TID pool. Its assumed that
        purchased TIDs are checked for uniqueness in the system.

        Used by sales/operations.
      parameters:
      - name: entityUid
        in: path
        description: The Verifone assigned ID corresponding to the entity.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/EntityUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
      - description: Optional reference
        $ref: '#/components/parameters/orderReferenceQueryParam'
      - $ref: '#/components/parameters/purchasedRangeQueryParam'
      requestBody:
        description: Array of TIDs to insert. By default allocated flag is
          set to false.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UniqueTIDs'
      responses:
        '200':
          description: TIDs inserted into pool
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    get:
      tags:
      - Purchased TIDs
      operationId: listPurchasedTIDs
      summary: List TIDs in the pool
      description: Get list of TIDs from the TID pool.
      parameters:
      - name: entityUid
        in: path
        description: The Verifone assigned ID corresponding to the entity.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/EntityUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
      - name: status
        in: query
        required: false
        explode: true
        style: form
        schema:
          $ref: '#/components/schemas/TidPoolStatusEnum'
      - $ref: '#/components/parameters/pageNumberQueryParam'
      - $ref: '#/components/parameters/pageSizeQueryParam'
      - $ref: '#/components/parameters/purchasedRangeQueryParam'
      - name: orderBy
        in: query
        description: 'The field to order by. Valid fields are: createdDate,
          modifiedDate, status'
        required: false
        style: form
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Purchased TIDs results matching criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TidPoolFetchResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    patch:
      tags:
      - Purchased TIDs
      operationId: changePurchasedTIDAllocation
      summary: Patch status of TIDs in the pool
      description: Change allocation status of purchased TID to required status
      parameters:
      - name: entityUid
        in: path
        description: The Verifone assigned ID corresponding to the entity.
        required: true
        style: simple
        explode: false
        schema:
          $ref: '#/components/schemas/EntityUid'
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
      - name: status
        in: query
        required: true
        explode: false
        style: form
        schema:
          $ref: '#/components/schemas/TidPoolStatusEnum'
      - $ref: '#/components/parameters/orderReferenceQueryParam'
        description: Optional reference
      - $ref: '#/components/parameters/purchasedRangeQueryParam'
      requestBody:
        description: Array of TIDs whose allocation status needs to be updated
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UniqueTIDs'
      responses:
        '204':
          description: TID status changed
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /entities/{entityUid}/purchasedTid/reserve:
    get:
      tags:
      - Purchased TIDs
      operationId: reservePurchasedTIDs
      summary: Reserve TIDs from the pool
      description: >-
        Reserve 'çount' number of TIDs from the TID pool. If 'count' is not
        available 400 is returned.
      parameters:
      - $ref: '#/components/parameters/entityUidPathParam'
      - $ref: '#/components/parameters/countQueryParam'
      - $ref: '#/components/parameters/purchasedRangeQueryParam'
      - name: duration
        in: query
        description: 'Duration in hours to reserve the TID '
        explode: false
        required: false
        schema:
          type: integer
          default: 1
          minimum: 1
          maximum: 12
      - description: Optional reference
        $ref: '#/components/parameters/orderReferenceQueryParam'
      responses:
        '200':
          description: Purchased TIDs results matching criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UniqueTIDs'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /entities/mid/{rangeId}:
    post:
      tags:
      - MID/TID Generation
      parameters:
      - $ref: '#/components/parameters/rangeIdPathParam'
      summary: Generate a new Verifone Merchant ID based on Range
      description: >-
        Generate a new Verifone Merchant ID based on range, which is configured
        in the Order Service configuration database.
      operationId: generateMerchantId
      responses:
        '201':
          description: MID Generated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MidAllocation'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /pois/tid/{rangeId}:
    post:
      tags:
      - MID/TID Generation
      parameters:
      - $ref: '#/components/parameters/rangeIdPathParam'
      summary: Generate a new Verifone Terminal ID based on Range
      description: >-
        Generate a new Verifone Terminal ID based on range which is configured
        in the Order Service configuration database.
      operationId: generationTerminalId
      responses:
        '201':
          description: TID Generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TidAllocation'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /accounts/oracle:
    get:
      tags:
      - Accounts
      summary: Get the list of all oracle accounts
      description: >-
        By passing in the appropriate options, you can search for available
        Oracle accounts in the system.
      operationId: searchAccounts
      parameters:
      - $ref: '#/components/parameters/oracleAccountIdQueryParam'
      - $ref: '#/components/parameters/userUidQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidQueryParam'
      responses:
        '200':
          description: search results matching criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OracleAccountDetailsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    post:
      tags:
      - Accounts
      summary: Add Oracle account
      description: Add Oracle account with MOP users and/or merchant company
      operationId: addOracleAccount
      requestBody:
        description: Oracle Account details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OracleAccountDetails'
      responses:
        '201':
          description: Add Oracle Account Success.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /accounts/oracle/{oracleAccountId}:
    patch:
      tags:
      - Accounts
      summary: Update Oracle account
      description: Update Oracle account with MOP users and/or merchant company.
      operationId: updateOracleAccount
      parameters:
      - $ref: '#/components/parameters/oracleAccountIdPathParam'
      requestBody:
        description: Oracle Account details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OracleAccountDetails'
      responses:
        '204':
          description: Patch Oracle Account Success.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    delete:
      tags:
      - Accounts
      summary: Delete Oracle account
      description: Delete Oracle account with MOP users and/or merchant company.
      operationId: deleteOracleAccount
      parameters:
      - $ref: '#/components/parameters/oracleAccountIdPathParam'
      responses:
        '204':
          description: The Oracle accounts for user was successfully deleted.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/batch/{batchId}:
    get:
      tags:
      - Batch
      operationId: getBatchDetails
      summary: Get single batch details
      responses:
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
        '200':
          description: Details of a batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchDetails'
      parameters:
      - name: batchId
        in: path
        description: Batch ID for this request.
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/BatchId'
    post:
      tags:
      - Batch
      operationId: postBatchDetails
      summary: Trigger batch operations
      parameters:
      - name: batchId
        in: path
        description: Batch ID for this request.
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/BatchId'
      - name: notes
        in: query
        description: Additional information
        required: false
        style: form
        explode: false
        schema:
          type: string
          maxLength: 100
      responses:
        '201':
          description: Batch triggered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    patch:
      tags:
      - Batch
      operationId: patchBatchDetails
      summary: Update batch details
      parameters:
      - name: batchId
        in: path
        description: Batch ID for this request.
        required: true
        explode: false
        schema:
          $ref: '#/components/schemas/BatchId'
      - name: notes
        in: query
        description: Additional information
        required: false
        style: form
        explode: false
        schema:
          type: string
          maxLength: 100
      requestBody:
        description: Batch updated
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchDetailsUpdatable'
      responses:
        '201':
          description: Batch details updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchDetails'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/batch:
    get:
      tags:
      - Batch
      summary: List batches
      parameters:
      - $ref: '#/components/parameters/customerEntityUidQueryParam'
      - name: orderId
        description: Verifone allocated ID for the Order
        in: query
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/OrderId'
      - name: status
        in: query
        description: Batch status for this request
        required: false
        explode: true
        schema:
          $ref: '#/components/schemas/BatchStatus'
      - $ref: '#/components/parameters/pageNumberQueryParam'
      - $ref: '#/components/parameters/pageSizeQueryParam'
      - $ref: '#/components/parameters/startTimeQueryParam'
      - $ref: '#/components/parameters/endTimeQueryParam'
      - name: populateTransactions
        in: query
        description: Whether to include transactions
        required: false
        style: form
        explode: false
        schema:
          type: boolean
          default: false
      - name: orderBy
        in: query
        description: The field to order by.Supports startTime,endTime,status,customerEntityUid
        required: false
        style: form
        explode: false
        schema:
          type: string
      operationId: listBatches
      responses:
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
        '200':
          description: Batch search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchSearchResponse'
  /webhook/callback/dokobit:
    post:
      operationId: webhookDokobit
      summary: Dokobit Callback
      tags:
      - Webhooks
      responses:
        '200':
          description: Callback Ok
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /webhook/callback/adobe:
    get:
      summary: Adobe Webhook Verification
      description: >
        This GET method is used by Adobe eSign to verify the webhook configuration.
      operationId: getWebhookVerification
      tags:
      - Webhooks
      parameters:
      - $ref: '#/components/parameters/XAdobeSignClientId'
      responses:
        '200':
          description: Adobe Webhook verification response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdobeWebhookResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    post:
      summary: Adobe Webhook Event Listener
      description: >
        This POST method receives webhook event payloads from Adobe eSign.
      operationId: postWebhookEventListener
      tags:
      - Webhooks
      parameters:
      - $ref: '#/components/parameters/XAdobeSignClientId'
      requestBody:
        description: Webhook event payload from Adobe eSign.
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
      responses:
        '200':
          description: Adobe Webhook event received successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdobeWebhookResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /webhook/callback/signicat:
    get:
      summary: Signicat Webhook
      description: This GET method is used by Signicat to notify about signed
        document events.
      operationId: getSignicatWebhook
      tags:
      - Webhooks
      parameters:
      - $ref: '#/components/parameters/XMerchantAppId'
      - $ref: '#/components/parameters/XRequestId'
      responses:
        '200':
          description: Webhook processed successfully.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
  /webhook/callback/bankaxept:
    post:
      summary: BankAxept Agreement Order Webhook
      description: >
        Webhook endpoint invoked by BankAxept whenever there is a change to
        a merchant agreement order.
      operationId: handleBankAxeptAgreementWebhook
      tags:
      - Webhooks
      requestBody:
        description: BankAxept agreement order status notification.
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - orderId
              - orderStatus
              properties:
                orderId:
                  type: string
                  format: uuid
                  description: BankAxept agreement order identifier
                orderStatus:
                  type: string
                  description: >
                    Current status of the agreement order in BankAxept systems.

                    Possible values: - BAX_NOT_CREATED - NOT_SIGNED - PENDING_BANK_RESPONSE
                    - BAX_ACTIVE - REJECTED_RECREATE_SIGNING - ACCEPTED -
                    REJECTED_CREATE_NEW_ORDER
      responses:
        '202':
          description: Webhook accepted for asynchronous processing.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/sendCustomerOrderLink:
    post:
      tags:
      - Common
      summary: Send Customer Order Link
      description: Triggers to send the order link to customer.
      operationId: postSendCustomerOrderLink
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendCustomerOrderLink'
      responses:
        '202':
          description: Sent Customer Order Link
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/validateCustomerOrderLink:
    post:
      tags:
      - Common
      summary: Validate Customer Order Link Expiry
      description: >
        Validates whether the customer order link is still active or has expired   after
        the customer clicks on it. This API checks the validity of the   order
        link and determines if the customer can proceed with their order.
      operationId: validateCustomerOrderLinkExpiry
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateCustomerOrderLink'
      responses:
        '200':
          description: The order link is valid and can be used.
        '410':
          description: The order link has expired and is no longer usable.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /reseller-event-data:
    post:
      tags:
      - Reseller Event Data
      summary: Upsert reseller event data record
      description: >-
        Creates or updates a single reseller event data record. Uniqueness
        is determined by merchantRegistrationNumber + eventId.
      operationId: upsertResellerEventData
      requestBody:
        required: true
        description: Reseller event data record to create or update.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResellerEventData'
      responses:
        '200':
          description: Record upserted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResellerEventData'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    get:
      tags:
      - Reseller Event Data
      summary: List reseller event data records
      description: >-
        Returns a paginated list of all reseller event data records, optionally
        filtered by resellerId.
      operationId: listResellerEventData
      parameters:
      - name: resellerId
        in: query
        description: Filter records by reseller program identifier (e.g. COREGO).
        required: false
        schema:
          type: string
      - $ref: '#/components/parameters/pageNumberQueryParam'
      - $ref: '#/components/parameters/pageSizeQueryParam'
      responses:
        '200':
          description: Paginated list of reseller event data records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResellerEventDataPageResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /reseller-event-data/bulk:
    post:
      tags:
      - Reseller Event Data
      summary: Bulk upsert reseller event data records
      description: >-
        Creates or updates an array of reseller event data records. Uniqueness
        per record is determined by merchantRegistrationNumber + eventId.
        Response includes per-record success/failure status.
      operationId: bulkUpsertResellerEventData
      requestBody:
        required: true
        description: Array of reseller event data records to create or update.
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ResellerEventData'
      responses:
        '200':
          description: Bulk upsert completed. Inspect per-record results for
            individual failures.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ResellerEventDataBulkOperationResult'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    put:
      tags:
      - Reseller Event Data
      summary: Bulk update eventRevenueSharePercentage
      description: >-
        Updates eventRevenueSharePercentage for an array of records identified
        by merchantRegistrationNumber + eventId. Response includes per-record
        success/failure status.
      operationId: bulkUpdateResellerEventData
      requestBody:
        required: true
        description: >-
          Array of records identifying which records to update and the new
          revenue share percentage.
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ResellerEventDataBulkUpdateItem'
      responses:
        '200':
          description: Bulk update completed. Inspect per-record results for
            individual failures.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ResellerEventDataBulkOperationResult'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    delete:
      tags:
      - Reseller Event Data
      summary: Bulk delete reseller event data records
      description: >
        Deletes an array of records identified by merchantRegistrationNumber
        + eventId. Missing individual records are non-fatal — reported per-record
        in the response with success=false, but the overall response is still
        200.
      operationId: bulkDeleteResellerEventData
      requestBody:
        required: true
        description: Array of record identifiers to delete.
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ResellerEventDataBulkDeleteItem'
      responses:
        '200':
          description: >-
            Bulk delete completed. Inspect per-record results for individual
            failures. Missing records are non-fatal.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ResellerEventDataBulkOperationResult'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /reseller-event-data/{merchantRegistrationNumber}:
    get:
      tags:
      - Reseller Event Data
      summary: Get all event records for a merchant
      description: >-
        Returns a paginated list of all reseller event data records for the
        given merchant registration number.
      operationId: getResellerEventDataByMerchant
      parameters:
      - name: merchantRegistrationNumber
        in: path
        description: Merchant registration/organisation number.
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/pageNumberQueryParam'
      - $ref: '#/components/parameters/pageSizeQueryParam'
      responses:
        '200':
          description: Paginated list of event records for the merchant.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResellerEventDataPageResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /reseller-event-data/{merchantRegistrationNumber}/event/{eventId}:
    get:
      tags:
      - Reseller Event Data
      summary: Get a single reseller event data record
      description: >-
        Returns a single reseller event data record identified by merchantRegistrationNumber
        and eventId. Called by order-service at order submission time.
      operationId: getResellerEventDataByMerchantAndEvent
      parameters:
      - name: merchantRegistrationNumber
        in: path
        description: Merchant registration/organisation number.
        required: true
        schema:
          type: string
      - name: eventId
        in: path
        description: TCS-generated event identifier.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Reseller event data record found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResellerEventData'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    put:
      tags:
      - Reseller Event Data
      summary: Update eventRevenueSharePercentage for a single record
      description: >-
        Updates the eventRevenueSharePercentage field of the record identified
        by merchantRegistrationNumber and eventId.
      operationId: updateResellerEventDataRevenueShare
      parameters:
      - name: merchantRegistrationNumber
        in: path
        description: Merchant registration/organisation number.
        required: true
        schema:
          type: string
      - name: eventId
        in: path
        description: TCS-generated event identifier.
        required: true
        schema:
          type: string
      requestBody:
        required: true
        description: Updated revenue share percentage.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ResellerEventDataUpdateRequest'
      responses:
        '200':
          description: Record updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResellerEventData'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    delete:
      tags:
      - Reseller Event Data
      summary: Delete a single reseller event data record
      description: >-
        Deletes the reseller event data record identified by merchantRegistrationNumber
        and eventId.
      operationId: deleteResellerEventData
      parameters:
      - name: merchantRegistrationNumber
        in: path
        description: Merchant registration/organisation number.
        required: true
        schema:
          type: string
      - name: eventId
        in: path
        description: TCS-generated event identifier.
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Record deleted successfully.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /devices/exchange:
    post:
      tags:
      - Maintenance Orders
      summary: Device Exchange
      description: >
        Submits a device exchange request, recording the old device being
        sent for repair and the replacement device being exchanged in. Returns
        the DID associated with the replacement device.
      operationId: deviceExchange
      requestBody:
        description: Device exchange request details
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceExchangeRequest'
      responses:
        '200':
          description: Device exchange processed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceExchangeResponse'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '409':
          description: Conflict — serial number / DID cross-validation mismatch.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - SN_DID_MISMATCH
                  message:
                    type: string
                required:
                - code
                - message
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
  /devices/repair/{deviceSerialNumber}:
    delete:
      tags:
      - Maintenance Orders
      summary: Delete Repair Device
      description: >
        Deletes the POI associated with the given device serial number from
        Entity-Service and removes the device record from VHQ. Both operations
        are attempted independently. Pre-condition failures (missing VHQ config,
        unknown customer) return 4xx before either operation is attempted.
        Operational results are embedded in the 200 response body.
      operationId: deleteRepairDevice
      parameters:
      - name: deviceSerialNumber
        in: path
        required: true
        schema:
          type: string
          minLength: 1
          pattern: ^[a-zA-Z0-9\-_]+$
        description: Serial number of the device to delete.
      responses:
        '200':
          description: >
            Both operations were attempted. Check entityServiceStatus and
            vhqStatus for outcomes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeleteRepairDeviceResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          description: Customer entity or estate owner not found.
          $ref: '#/components/responses/404'
        '422':
          description: VHQ boarding configuration incomplete.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                - code
                - message
        '500':
          $ref: '#/components/responses/500'
        '503':
          description: VHQ service unreachable.
          $ref: '#/components/responses/503'
  /accounts/sites:
    get:
      tags:
      - Internal
      summary: Get the list of all Verifone Sites in Billing Engine
      description: >-
        Using the UUID of the user or the merchantCompanyUid in the query
        (ROLE) Dependent.
      operationId: searchAccountSites
      parameters:
      - $ref: '#/components/parameters/customerEntityUidRequiredQueryParam'
      - $ref: '#/components/parameters/merchantCompanyEntityUidQueryParam'
      - $ref: '#/components/parameters/billingSitesOnlyQueryParam'
      - $ref: '#/components/parameters/billingSiteIdQueryParam'
      - $ref: '#/components/parameters/locateCustomerQueryParam'
      - $ref: '#/components/parameters/merchantNameQueryParam'
      - $ref: '#/components/parameters/addressLineQueryParam'
      - $ref: '#/components/parameters/postCodeQueryParam'
      - $ref: '#/components/parameters/activeBankQueryParam'
      - $ref: '#/components/parameters/customerIdQueryParam'
      - $ref: '#/components/parameters/siteIdQueryParam'
      responses:
        '200':
          description: Search results matching criteria.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountSitesResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/{orderId}/status:
    get:
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      tags:
      - Internal
      summary: Get extended status
      description: Get more details about the order status, worfklows, etc.
      operationId: getExtendedOrderStatus
      responses:
        '200':
          description: search results matching criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExtendedStatusResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    patch:
      parameters:
      - $ref: '#/components/parameters/orderIdPathParam'
      tags:
      - Internal
      summary: Update order status
      description: Update order status. This can only be done by internal
        Verifone systems.
      operationId: updateOrderState
      requestBody:
        description: Status update request.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StatusUpdate'
      responses:
        '200':
          description: Order status updated
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/merchantMaintenance:
    post:
      tags:
      - Internal
      summary: Internal Merchant Maintenance Order Request
      description: >-
        Create an internal merchant maintenance order to track the workflow
        related to a merchant maintenance request such as updating a trading
        address. This should only be used by the order service consumer after
        a change has been done to entity service and additional workflow steps
        are required to orchestrate this data to other systems.
      operationId: internalMerchantMaintenanceOrderRequest
      requestBody:
        description: Maintenance Order details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MerchantMaintenanceOrder'
      responses:
        '201':
          description: Create Merchant Maintenance Order Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MerchantMaintenanceOrder'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
  /orders/internal/trigger-draft-upsells:
    post:
      tags:
      - Internal
      summary: Trigger re-submission of draft upsell wait orders
      description: >-
        Internal endpoint called by order-service-consumer after OBS or entity
        wallet creation completes, to asynchronously re-submit DRAFT upsell
        wait orders for the given merchant. Restricted to ROLE_SYSTEM_ONBOARDING_BACKEND
        and ROLE_VERIFONE_ADMIN. Must not be exposed via the public API gateway.
      operationId: triggerDraftUpsells
      requestBody:
        required: true
        description: Merchant identifiers used to look up draft upsell orders.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TriggerDraftUpsellsRequest'
      responses:
        '202':
          description: Async submission task dispatched successfully.
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
components:
  parameters:
    merchantNameQueryParam:
      name: merchantCompany
      in: query
      description: The merchant company.
      schema:
        $ref: '#/components/schemas/MerchantName'
    endTimeQueryParam:
      name: endTime
      in: query
      description: The record date/time to search to.
      schema:
        type: string
        format: date-time
        example: '2020-01-06T18:16:14.243Z'
    startTimeQueryParam:
      name: startTime
      in: query
      description: The record date/time to search from.
      schema:
        type: string
        format: date-time
        example: '2020-01-06T18:16:14.243Z'
    userUidsQueryParam:
      name: userUids
      in: query
      description: List of the User ID corresponding to the User who created
        or modified the order.
      required: false
      explode: false
      schema:
        type: array
        items:
          type: string
          format: uuid
          example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    SimplifiedFlowHeaderParam:
      name: X-Use-Simplified-Order-Flow
      in: header
      description: >-
        An optional header indicating to the client, the new approach delegates
        more logic to the backend, requiring the API/UI client to supply only
        the essential data when possible. Our backend now intelligently derives
        missing fields by leveraging defaults and configurations from the
        Portfolio Service
      required: false
      schema:
        type: boolean
    filterDateTypeQueryParam:
      name: filterDateType
      in: query
      description: >-
        Pass an optional search string for filtering based on date type. Otherwise
        this will default to `createdDate`.
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/FilterDateType'
    validateCompanyIdentityHeaderParam:
      name: validateCompanyIdentity
      in: header
      description: >-
        An optional header indicating to the client to validate the merchant
        details stored in the order against Verifone Identity Service.
      required: false
      schema:
        type: boolean
    orderTypeQueryParam:
      name: orderType
      in: query
      description: >-
        pass an optional search string for looking up order by type. Defaults
        to `MerchantOrder.`
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/OrderType'
    checkPresenceInEntityQueryParam:
      name: checkPresenceInEntity
      in: query
      description: >-
        An optional boolean flag. When set to true, validates the presence
        of groupName, merchantCompanyName, and siteName against the Entity
        Service. Orders failing validation are removed from the response.
      required: false
      style: form
      explode: false
      schema:
        type: boolean
    statusesQueryParam:
      name: statuses
      in: query
      description: Pass an optional list of statuses to filter orders.
      required: false
      style: form
      explode: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/OrderStatusEnum'
    groupNameQueryParam:
      name: groupName
      in: query
      description: Pass an optional group name to filter orders by group.
      required: false
      style: form
      explode: false
      schema:
        type: string
        minLength: 1
    portfolioTypeQueryParam:
      name: portfolioType
      in: query
      description: >-
        Used in combination with merchant-company-entity to find the first
        instore order.
      required: false
      style: form
      explode: false
      schema:
        type: string
        enum:
        - INSTORE
        - ONLINE
        - INSTORE_AND_ONLINE
    validateACHHeaderParam:
      name: validateACH
      in: header
      description: An optional header indicating whether to validate account
        details against GIACT.
      required: false
      schema:
        type: boolean
    signingProviderQueryParam:
      name: signingProvider
      in: query
      description: The signing provider for the order.
      required: false
      style: form
      explode: false
      schema:
        $ref: '#/components/schemas/SigningProviderEnum'
    merchantTypeQueryParam:
      name: merchantType
      in: query
      description: Merchant type for the orders
      required: false
      style: form
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/MerchantTypeEnum'
    orderQueryParam:
      name: order
      in: query
      description: The order direction.
      style: form
      explode: false
      schema:
        $ref: '#/components/schemas/ListingOrderEnum'
    pageSizeQueryParam:
      in: query
      name: pageSize
      description: Page size for returned records.
      schema:
        $ref: '#/components/schemas/PagingPageSize'
    pageNumberQueryParam:
      name: pageNumber
      in: query
      description: Page number for records.
      schema:
        $ref: '#/components/schemas/PagingPageNumber'
    customerEntityUidQueryParam:
      name: customerEntityUid
      in: query
      description: The estate customer entity UUID for the portfolio.
      explode: true
      schema:
        $ref: '#/components/schemas/EntityUid'
    customerEntityUidsQueryParam:
      name: customerEntityUids
      in: query
      description: The estate customer entity UUIDs for the portfolio.
      explode: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/EntityUid'
    merchantCompanyEntityUidsQueryParam:
      name: merchantCompanyEntityUids
      in: query
      description: The Verifone assigned IDs corresponding to the Merchant
        Company.
      explode: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/MerchantCompanyEntityUid'
    merchantCompanyEntityUidQueryParam:
      name: merchantCompanyEntityUid
      in: query
      description: The Verifone assigned ID corresponding to the Merchant
        Company.
      explode: false
      schema:
        $ref: '#/components/schemas/MerchantCompanyEntityUid'
    purchasedRangeQueryParam:
      name: range
      in: query
      description: Range name to allocate the TID against PURCHASED scheme.
      required: false
      explode: false
      style: form
      schema:
        type: string
        minLength: 1
        maxLength: 100
    validateAcquirerHeaderParam:
      name: validateAcquirer
      in: header
      description: An optional header indicating whether to validate the acquirer.
      required: false
      schema:
        type: boolean
    XRequestId:
      name: requestId
      in: query
      schema:
        type: string
      required: true
      description: Unique identifier for the request.
    orderStatusQueryParam:
      name: status
      in: query
      description: Pass an optional search string for looking up order by
        status.
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/OrderStatusEnum'
    countQueryParam:
      name: count
      in: query
      description: Count of TIDs required from pool.
      required: true
      explode: false
      style: form
      schema:
        type: integer
        minimum: 1
    userUidQueryParam:
      name: userUid
      in: query
      description: The User ID corresponding to the User who created or modified
        the order.
      explode: false
      schema:
        type: string
        format: uuid
        example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    orderIdPathParam:
      name: orderId
      in: path
      description: Verifone allocated ID for the Order.
      required: true
      schema:
        $ref: '#/components/schemas/OrderId'
    saveDraftHeaderParam:
      name: saveDraft
      in: header
      description: >-
        An optional header indicating whether to save the order into a DRAFT
        status. If this value is not specified or set to false then the order
        will be SUBMITTED immediately.
      required: false
      schema:
        type: boolean
    rangeIdPathParam:
      name: rangeId
      in: path
      description: Range allocation to be performed from.
      required: true
      style: simple
      explode: true
      schema:
        type: string
        example: verifone
    entityUidPathParam:
      name: entityUid
      in: path
      description: The Verifone assigned ID corresponding to the entity.
      required: true
      style: simple
      explode: false
      schema:
        $ref: '#/components/schemas/EntityUid'
      example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    oracleAccountIdPathParam:
      name: oracleAccountId
      in: path
      description: The Oracle Account Id.
      required: true
      style: simple
      explode: false
      schema:
        $ref: '#/components/schemas/OracleAccountId'
    XMerchantAppId:
      name: merchantAppId
      in: query
      schema:
        type: string
      required: true
      description: Unique identifier for the merchant.
    XAdobeSignClientId:
      name: X-AdobeSign-ClientId
      in: header
      schema:
        type: string
      required: true
      description: Unique Client ID sent by Adobe eSign for verification.
    orderReferenceQueryParam:
      name: orderReference
      in: query
      description: Optional search string for looking up order by ID.
      style: form
      explode: true
      schema:
        type: string
    oracleAccountIdQueryParam:
      name: oracleAccountId
      in: query
      description: The Oracle Account Id.
      required: false
      style: form
      explode: false
      schema:
        $ref: '#/components/schemas/OracleAccountId'
    forceDeleteQueryParam:
      name: forceDelete
      in: query
      required: false
      description: >
        When `false` (default), deletion fails with 400 if the POI is ACTIVE;
        the POI must be INACTIVE before calling this endpoint. When `true`,
        an ACTIVE POI is automatically inactivated before deletion; if already
        INACTIVE, deletion proceeds directly.
      schema:
        type: boolean
        default: false
        example: true
    poiUidPathParam:
      name: poiUid
      in: path
      description: The assigned ID corresponding for the POI.
      required: true
      style: simple
      explode: false
      schema:
        $ref: '#/components/schemas/PoiUid'
      example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    customerIdQueryParam:
      name: customerId
      in: query
      description: Customer ID of existing unapproved user.
      schema:
        $ref: '#/components/schemas/CustomerId'
    activeBankQueryParam:
      name: activeBank
      in: query
      description: Last 4 digits of active bank account.
      schema:
        $ref: '#/components/schemas/ActiveBank'
    postCodeQueryParam:
      name: postCode
      in: query
      description: The postal code of the address.
      explode: false
      schema:
        $ref: '#/components/schemas/PostCode'
    addressLineQueryParam:
      name: addressLine
      in: query
      description: The first line of the address.
      explode: false
      schema:
        $ref: '#/components/schemas/AddressLine'
    locateCustomerQueryParam:
      name: locateCustomer
      in: query
      description: >-
        A flag to indicate if when creating the user to verify them by locating
        the customer in the Verifone billing systems.
      explode: false
      schema:
        type: boolean
    billingSiteIdQueryParam:
      name: billingSiteId
      in: query
      description: The billing site id to query.
      explode: false
      schema:
        type: string
      example: '13232331'
    billingSitesOnlyQueryParam:
      name: billingSitesOnly
      in: query
      description: Only return the billing sites.
      required: false
      explode: false
      schema:
        type: boolean
        default: true
    siteIdQueryParam:
      name: siteId
      in: query
      description: Site ID of existing unapproved user.
      schema:
        $ref: '#/components/schemas/SiteId'
    customerEntityUidRequiredQueryParam:
      name: customerEntityUid
      in: query
      description: The estate customer entity UUID for the portfolio.
      required: true
      explode: false
      schema:
        $ref: '#/components/schemas/EntityUid'
  responses:
    '504':
      description: Service Timeout
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError504'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '503':
      description: Service Not Available
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError503'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '500':
      description: Internal Error
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError500'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '429':
      description: Too Many Requests
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError429'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '406':
      description: Request Not Acceptable
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError406'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '405':
      description: Operation Not Allowed
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError405'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '404':
      description: Not Found Request
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError404'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '403':
      description: Forbidden Request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/httpError403'
    '401':
      description: Unauthorised Request
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError401'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            allOf:
            - $ref: '#/components/schemas/httpError400'
            - properties:
                param:
                  description: >-
                    The parameter the error relates to if the error is parameter-specific.
                    You can use this to display a message near the correct
                    form field, for example.
                  type: string
                additionalProperties:
                  type: object
                  additionalProperties:
                    type: object
            required:
            - code
            - title
            - message
            - type
  schemas:
    ProcessorParametersWpayAU:
      title: Payment Processor Parameters - WPAY_AU
      description: Payment Processor Parameters - WPAY_AU
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          visaMVV:
            $ref: '#/components/schemas/VisaMVV'
          mastercardMAID:
            $ref: '#/components/schemas/MastercardMAID'
          eftposMTC:
            $ref: '#/components/schemas/EftposMTC'
    VirtualPoiType:
      title: Virtual Point of Interaction
      type: object
      allOf:
      - $ref: '#/components/schemas/BasePoiType'
    ProcessorParametersVerifoneAU:
      title: Payment Processor Parameters - VERIFONE_AU
      description: Payment Processor Parameters - VERIFONE_AU
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          visaMVV:
            $ref: '#/components/schemas/VisaMVV'
          mastercardMAID:
            $ref: '#/components/schemas/MastercardMAID'
          eftposMTC:
            $ref: '#/components/schemas/EftposMTC'
    ProcessorParametersUSVANTIV:
      title: Payment Processor Parameters - VANTIV_US
      description: Payment Processor Parameters - VANTIV_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          debitEncryptionKey:
            $ref: '#/components/schemas/DebitEncryptionKey'
          BankID:
            $ref: '#/components/schemas/BankID'
          FNSNumber:
            $ref: '#/components/schemas/FNSNumber'
      required:
      - BankID
    ProcessorParametersValutecUS:
      title: Payment Processor Parameters - ValutecUS
      description: Payment Processor Parameters - ValutecUS
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          merchantId:
            type: string
            pattern: ^\d{1,10}$
            description: Unique Merchant ID consisting of 1 to 10 numeric
              digits.
          merchantClientkey:
            type: string
            minLength: 1
            maxLength: 36
            description: Merchant Client Key, a string with a length between
              1 and 36 characters.
          terminalId:
            type: string
            pattern: ^\d{1,15}$
            description: Terminal ID consisting of 1 to 15 numeric digits.
          industryCode:
            type: string
            minLength: 1
            maxLength: 1
            description: Industry Code represented by a single character.
    ProcessorParametersValuelink:
      title: Payment Processor Parameters - Valuelink
      description: Payment Processor Parameters - Valuelink
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          merchantId:
            $ref: '#/components/schemas/GiftMerchantId'
          storeNo:
            $ref: '#/components/schemas/GiftStoreNo'
          division:
            $ref: '#/components/schemas/GiftDivision'
    ProcessorParametersUnifyGivex:
      title: Payment Processor Parameters - Unify Givex
      description: Payment Processor Parameters - Unify Givex
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          merchantId:
            type: string
            pattern: ^\d{1,32}$
            description: GIVEX-assigned merchant/user ID. Numeric string,
              1–32 digits.
            example: '12345678'
          password:
            type: string
            minLength: 1
            writeOnly: true
            description: Unify Givex password.
          industryCode:
            type: string
            enum:
            - D
            - R
            - F
            description: Industry code. D=Direct, R=Retail, F=Food/Restaurant.
            example: R
    ProcessorParametersUSTSYS:
      title: Payment Processor Parameters - TSYS_US
      description: Payment Processor Parameters - TSYS_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          debitEncryptionKey:
            $ref: '#/components/schemas/DebitEncryptionKey'
          StoreNum:
            $ref: '#/components/schemas/StoreNum'
          AgentBank:
            $ref: '#/components/schemas/AgentBank'
          AgentChain:
            $ref: '#/components/schemas/AgentChain'
          BankBIN:
            $ref: '#/components/schemas/BankBIN'
      required:
      - StoreNum
      - AgentBank
      - AgentChain
      - BankBIN
    ProcessorParametersUSTelecheck:
      title: Payment Processor Parameters - TELECHECK_US
      description: Payment Processor Parameters - TELECHECK_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          applicationType:
            $ref: '#/components/schemas/ApplicationType'
          versionControl:
            $ref: '#/components/schemas/VersionControl'
      required:
      - applicationType
      - versionControl
    SiteAndPoisForService:
      description: >-
        Site & its POIs for  the service.All POIs within site are selected
        if no POI is mentioned.
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseServiceTarget'
      - properties:
          siteEntityUid:
            type: string
            format: uuid
            description: Internal id used for the site
          pois:
            type: array
            description: If not specified implies all POIs belonging to the
              site
            items:
              $ref: '#/components/schemas/PoiUidWithAcquirerIds'
      required:
      - siteEntityUid
    ProcessorParametersSVS:
      title: Payment Processor Parameters - SVS
      description: Payment Processor Parameters - SVS
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          merchantId:
            $ref: '#/components/schemas/SvsMerchantId'
          storeNo:
            $ref: '#/components/schemas/SvsStoreNo'
          division:
            $ref: '#/components/schemas/SvsDivision'
    ProcessorParametersSC:
      title: Payment Processor Parameters - Sales Connector
      description: Payment Processor Parameters - Sales Connector
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          settlementProcess:
            $ref: '#/components/schemas/ScSettlementProcessType'
      required:
      - settlementProcess
    Polygon:
      title: Polygon
      description: An array of linear rings
      externalDocs:
        url: http://geojson.org/geojson-spec.html#id4
      allOf:
      - $ref: '#/components/schemas/Geometry'
      - properties:
          coordinates:
            type: array
            items:
              type: array
              items:
                $ref: '#/components/schemas/Point3D'
    Point:
      title: Area Size
      description: Represents a size, used to define a container or area.
      type: object
      allOf:
      - $ref: '#/components/schemas/Geometry'
      - properties:
          coordinates:
            $ref: '#/components/schemas/Point3D'
    ParametersUk:
      title: Payment Parameters - Uk
      description: Payment Parameters - Uk
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseRegionalParameters'
      - properties:
          PostCommsFloorLimit:
            example: '40.1'
            description: Floor limit for offline approval after comms issue.
            type: string
            minLength: 0
            maxLength: 15
            pattern: ^[0-9]+(\.[0-9]{2})?$
    ParametersNordicsCobra:
      title: Payment Parameters - Nordics Cobra
      description: Payment Parameters - Nordics Cobra
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseRegionalParameters'
      - properties:
          IsPayAtTable:
            example: '1'
            description: Enable Pay At Table
            type: string
            minLength: 1
            maxLength: 1
            pattern: '[0-1]'
          IsPrintAndGo:
            example: '1'
            description: Enable Print And Go
            type: string
            minLength: 1
            maxLength: 1
            pattern: '[0-1]'
          EcrServerMode:
            example: '1'
            description: Enable Terminal Client Server Mode
            type: string
            minLength: 1
            maxLength: 1
            pattern: '[0-1]'
    ParametersMaverick:
      title: Payment Parameters - Maverick
      description: Payment Parameters - Maverick
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseRegionalParameters'
      - properties:
          PrintBusinessRegistrationNumberOnReceipt:
            example: '1'
            description: Flag for controlling presence of Business Registration
              number on receipt.
            type: string
            minLength: 1
            maxLength: 1
            pattern: '[0-1]'
          BusinessRegistrationNumber:
            example: ''
            description: Business registration number
            type: string
            maxLength: 15
            minLength: 0
            pattern: ^[0-9\\-]{0,15}$
    ParametersAu:
      title: Payment Parameters - AU
      description: Payment Parameters - AU
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseRegionalParameters'
      - properties:
          EfbEnabled:
            example: '1'
            description: Efb Enabled
            type: string
            minLength: 1
            maxLength: 1
            pattern: '[0-1]'
          EfbCtlsEnabled:
            example: '1'
            description: Efb Ctls Enabled
            type: string
            minLength: 1
            maxLength: 1
            pattern: '[0-1]'
          MerchantChoiceRoutingEnabled:
            example: '1'
            description: Merchant Choice Routing Enabled
            type: string
            minLength: 1
            maxLength: 1
            pattern: '[0-1]'
          CdoMaxTransactionCount:
            example: '5'
            type: string
            maxLength: 8
            minLength: 1
            pattern: ^(\+|-)?\d+$
          CdoMaxAccumulativeAmount:
            example: '1000'
            type: string
            maxLength: 99999999
            minLength: 0
            pattern: ^\d*\.?\d*$
          CdoMaxPurchaseCreditAmount:
            example: '100'
            type: string
            maxLength: 9
            minLength: 0
            pattern: ^[0-9]{1,6}(\.[0-9]{2})?$
          CdoMaxPurchaseDebitAmount:
            example: '100'
            type: string
            maxLength: 9
            minLength: 0
            pattern: ^[0-9]{1,6}(\.[0-9]{2})?$
          EfbMaxTransactionCount:
            example: '5'
            type: string
            maxLength: 8
            minLength: 1
            pattern: ^(\+|-)?\d+$
          EfbMaxAccumulativeAmount:
            example: '500'
            type: string
            maxLength: 15
            minLength: 0
            pattern: ^\d*\.?\d*$
          EfbMaxPurchaseCreditAmount:
            example: '200'
            type: string
            maxLength: 9
            minLength: 0
            pattern: ^[0-9]{1,6}(\.[0-9]{2})?$
          EfbMaxPurchaseDebitAmount:
            example: '100'
            type: string
            maxLength: 9
            minLength: 0
            pattern: ^[0-9]{1,6}(\.[0-9]{2})?$
          EfbMaxRefundCreditAmount:
            example: '100'
            type: string
            maxLength: 9
            minLength: 0
            pattern: ^[0-9]{1,6}(\.[0-9]{2})?$
          EfbMaxRefundDebitAmount:
            example: '100'
            type: string
            maxLength: 9
            minLength: 0
            pattern: ^[0-9]{1,6}(\.[0-9]{2})?$
    PoiType:
      title: Point of Interaction
      description: >-
        The Point of Interaction. This may refer to a number of different
        entities, but is primarily considered to be the Terminal. This object
        contains the POI details as they pertain to an individual payment,
        an instance of POI. This does not attempt to define all the settings
        or attributes that may be associated to a POI. Also, for a specific
        Acquirer/Contract combination there may be a different instance of
        the POI(TID). These different relationships are not part of this object.
      type: object
      allOf:
      - $ref: '#/components/schemas/BasePoiType'
      - properties:
          parameters:
            $ref: '#/components/schemas/TerminalParameters'
          paymentAppParameters:
            $ref: '#/components/schemas/PaymentAppParameters'
          devicePackage:
            $ref: '#/components/schemas/BundleAndPriceAndDataQuantity'
          additionalDevicePackages:
            type: array
            maxItems: 100
            items:
              $ref: '#/components/schemas/BundleAndPriceAndDataQuantity'
          deliveryPackage:
            $ref: '#/components/schemas/BundleAndPriceAndData'
    ProcessorParametersOTHER:
      title: Payment Processor Parameters - OTHER
      description: Payment Processor Parameters - OTHER
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
    PoiCutoverConfigurationOneBatch:
      type: object
      title: POI Cutover Configuration - One batch per trading day
      description: >-
        POI Cutover Configuration - One batch per trading day. Only allows
        closing the terminal batch once per trading/settlement day. This settlement
        day is aligned to a particular processor/acquirer.
      allOf:
      - $ref: '#/components/schemas/PoiCutoverConfigurationBase'
      required:
      - processor
    NewCustomerContactType:
      description: The details of a Contact.
      type: object
      required:
      - contactType
      - name
      - email
      allOf:
      - $ref: '#/components/schemas/UserContactType'
      - $ref: '#/components/schemas/ContactType'
    SmallMerchant:
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseMerchant'
      - properties:
          parentCompanyName:
            maxLength: 100
            type: string
            description: Group Name of the parent grouping all the legal entity
              merchant companies.
          companyAltVfiEntityId:
            maxLength: 30
            pattern: ^[a-zA-Z0-9]+$
            type: string
            description: >-
              A friendly ID associated with the merchant company. This will
              be visible/searchable in Verifone central. If this is not set
              then this will be set to the same value as the site altVfiEntityId
              (if specified) or merchantId.
            example: '1003933752'
          companyAddress:
            $ref: '#/components/schemas/AddressWithoutType'
          companyIdentityCheck:
            $ref: '#/components/schemas/VfiIdentityCheck'
          businessIdentifiers:
            type: array
            description: >-
              Many countries have unique identifiers for all companies that
              are legally registered to trade. The actual business identifier
              changes by country and locale.
            items:
              $ref: '#/components/schemas/BusinessIdentifier'
          siteReferenceId:
            $ref: '#/components/schemas/SiteReferenceId'
          siteName:
            $ref: '#/components/schemas/SiteName'
          openingHours:
            type: array
            description: The list of opening periods per week day.
            items:
              $ref: '#/components/schemas/EntityOpeningHours'
            minItems: 1
          userLogins:
            type: array
            maxItems: 10
            description: >-
              Additional user login accounts can be specified here if Verifone
              portal service are being offered as part of the service packages.
              Generally Verifone will create a merchant user for the primary
              contact but if user logins are specified here they will be used
              instead.
            items:
              $ref: '#/components/schemas/UserLoginType'
          pois:
            type: array
            maxItems: 1000
            items:
              $ref: '#/components/schemas/BasePoiType'
    PaymentDetailsNET:
      allOf:
      - $ref: '#/components/schemas/PaymentDetails'
    MultiPolygon:
      title: Polygon
      description: An array of linear rings
      externalDocs:
        url: http://geojson.org/geojson-spec.html#id4
      allOf:
      - $ref: '#/components/schemas/Geometry'
      - properties:
          coordinates:
            type: array
            items:
              type: array
              items:
                type: array
                items:
                  $ref: '#/components/schemas/Point3D'
    MultiPoint:
      title: Multi Point
      description: Multi-point GeoJson Geometry.
      externalDocs:
        url: http://geojson.org/geojson-spec.html#id5
      allOf:
      - $ref: '#/components/schemas/Geometry'
      - properties:
          coordinates:
            type: array
            items:
              $ref: '#/components/schemas/Point3D'
    MultiLineString:
      title: Multi-Line String
      description: >-
        A multi-line string must have coordinates with an array of two positions
        or more.
      externalDocs:
        url: http://geojson.org/geojson-spec.html#id36
      allOf:
      - $ref: '#/components/schemas/Geometry'
      - properties:
          coordinates:
            type: array
            items:
              type: array
              items:
                $ref: '#/components/schemas/Point3D'
    MultiMerchantChildPoiType:
      title: Multi Merchant Child Point of Interaction
      type: object
      allOf:
      - $ref: '#/components/schemas/BasePoiType'
      - properties:
          parentPoiUid:
            description: >-
              The Verifone allocated unique id for the parent POI. This can
              either be the multi merchant parent POI or the current primary
              merchant POI.
            type: string
            format: uuid
            example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          paymentAppParameters:
            $ref: '#/components/schemas/PaymentAppParameters'
      required:
      - parentPoiUid
    LineString:
      title: Line String
      description: A line string must have coordinates with an array of two
        positions or more.
      externalDocs:
        url: http://geojson.org/geojson-spec.html#id3
      allOf:
      - $ref: '#/components/schemas/Geometry'
      - properties:
          coordinates:
            type: array
            items:
              $ref: '#/components/schemas/Point3D'
    CrossBorderIncludedCountries:
      type: object
      additionalProperties: false
      title: Included Countries
      description: Specifies the country codes for which a cross border fee
        is charged.
      allOf:
      - $ref: '#/components/schemas/CrossBorder'
      - properties:
          countryCodes:
            description: >-
              This fee is applied if the country where the transaction takes
              place (the merchant entity country) is different to the payer's
              country and matches the list of the country codes specified
              here.
            type: array
            items:
              $ref: '#/components/schemas/CountryCode3Enum'
      required:
      - countryCodes
    ProcessorParametersUSHeartland:
      title: Payment Processor Parameters - HEARTLAND_US
      description: Payment Processor Parameters - HEARTLAND_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          debitEncryptionKey:
            $ref: '#/components/schemas/DebitEncryptionKey'
          StoreNum:
            $ref: '#/components/schemas/StoreNum'
          AgentBank:
            $ref: '#/components/schemas/AgentBank'
          AgentChain:
            $ref: '#/components/schemas/AgentChain'
          BankBIN:
            $ref: '#/components/schemas/BankBIN'
      required:
      - StoreNum
      - AgentBank
      - AgentChain
      - BankBIN
    ProcessorParametersUSGPEAST:
      title: Payment Processor Parameters - GLOBALPAYMENTS_US
      description: Payment Processor Parameters - GLOBALPAYMENTS_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          debitEncryptionKey:
            $ref: '#/components/schemas/DebitEncryptionKey'
          BankID:
            $ref: '#/components/schemas/BankID'
      required:
      - BankID
    ProcessorParametersGivex:
      title: Payment Processor Parameters - Givex
      description: Payment Processor Parameters - Givex
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          userid:
            type: string
            minLength: 1
            maxLength: 50
            description: User ID, a string with a maximum length of 50 characters.
          password:
            type: string
            minLength: 1
            maxLength: 20
            description: Password, a string with a maximum length of 20 characters.
          merchantId:
            type: string
            pattern: ^\d{1,32}$
            description: Merchant ID, a numeric value consisting of 1 to 32
              digits.
          industryCode:
            type: string
            minLength: 1
            maxLength: 1
            description: Industry Code, a single-character string.
    PoiCutoverConfigurationFlexible:
      type: object
      title: POI Cutover Configuration - Flexible Batch
      description: >-
        POI Cutover Configuration - Flexible Batch. Allowed closing terminal
        batches multiple times per day. This configuration should be attached
        directly to poi `poiCutoverConfigurationId`
      allOf:
      - $ref: '#/components/schemas/PoiCutoverConfigurationBase'
      - properties:
          forcedCutoverTimeZone:
            $ref: '#/components/schemas/TimeZone'
          batchNumberStrategy:
            type: string
            description: >-
              The strategy for generating the batch number:

              `DATETIME`: Create a batch number based on date + time of the
              batch open. This is the default and will be used if no strategy
              specified.

              `INCREMENTAL`: Create a batch number starting from 000001 and
              incrementing by 1 for each batch. The batch number will roll
              back to 000001 after 999999.
            enum:
            - DATETIME
            - INCREMENTAL
            default: DATETIME
    ProcessorParametersUSFIRSTDATA:
      title: Payment Processor Parameters - FISERV_US
      description: Payment Processor Parameters - FISERV_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          debitEncryptionKey:
            $ref: '#/components/schemas/DebitEncryptionKey'
          groupID:
            $ref: '#/components/schemas/GroupId'
          GroupNumber:
            $ref: '#/components/schemas/GroupNumber'
          FNSNumber:
            $ref: '#/components/schemas/FNSNumber'
          tokenTypeId:
            $ref: '#/components/schemas/TokenTypeId'
    ProcessorParametersFiservAU:
      title: Payment Processor Parameters - FISERV_AU
      description: Payment Processor Parameters - FISERV_AU
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          visaMVV:
            $ref: '#/components/schemas/VisaMVV'
          mastercardMAID:
            $ref: '#/components/schemas/MastercardMAID'
          eftposMTC:
            $ref: '#/components/schemas/EftposMTC'
    ExistingCustomerContactType:
      type: object
      allOf:
      - $ref: '#/components/schemas/UserContactType'
      - $ref: '#/components/schemas/ContactType'
      properties:
        merchantName:
          $ref: '#/components/schemas/MerchantName'
        addressLine1:
          minLength: 1
          maxLength: 40
          type: string
          description: Address Line 1. Should include street and apartment
            number if required.
          example: 213 Miller Street
        postCode:
          $ref: '#/components/schemas/PostCode'
        activeBank:
          $ref: '#/components/schemas/ActiveBank'
        customerId:
          $ref: '#/components/schemas/CustomerId'
        siteId:
          $ref: '#/components/schemas/SiteId'
        oracleAccountId:
          $ref: '#/components/schemas/OracleAccountId'
      required:
      - contactType
      - name
      - email
      - merchantName
    ExistingCompanyNewSite:
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseMerchant'
      - properties:
          siteReferenceId:
            $ref: '#/components/schemas/SiteReferenceId'
          relatedOrderId:
            description: >-
              Used to relate to a previous order which can help supplement
              information to the current order
            $ref: '#/components/schemas/OrderId'
          siteName:
            $ref: '#/components/schemas/SiteName'
          openingHours:
            type: array
            description: The list of opening periods per week day.
            items:
              $ref: '#/components/schemas/EntityOpeningHours'
            minItems: 1
          pois:
            type: array
            maxItems: 1000
            items:
              $ref: '#/components/schemas/BasePoiType'
      required:
      - parentEntityUid
    CrossBorderExcludedCountries:
      type: object
      additionalProperties: false
      title: Excluded Countries
      description: >-
        Specifies the country codes for which a cross border fee is <bold>NOT</bold>
        charged.
      allOf:
      - $ref: '#/components/schemas/CrossBorder'
      - properties:
          countryCodes:
            description: >-
              This fee is applied if the country where the transaction takes
              place (the merchant entity country) is different to the payer's
              country. The list of countries codes here is to be understood
              as excluded from charging that fee.
            type: array
            items:
              $ref: '#/components/schemas/CountryCode3Enum'
      required:
      - countryCodes
    ProcessorParametersUSELAVON:
      title: Payment Processor Parameters - ELAVON_US
      description: Payment Processor Parameters - ELAVON_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          debitEncryptionKey:
            $ref: '#/components/schemas/DebitEncryptionKey'
    PaymentDetailsEInvoice:
      allOf:
      - $ref: '#/components/schemas/PaymentDetails'
      - properties:
          bankPartnerName:
            type: string
            description: >-
              The banking partner used in conjunction with the billing details
              to perform e-invoicing.
          gln:
            type: string
            description: >-
              The Global Location Number (GLN) to be captured when E-Invoice
              payment method is used for the Sweden Portfolio.
            pattern: ^[0-9]{13}$
            example: '1234567890123'
          eAddress:
            type: string
            description: >-
              This is required for Finnish customers who have opted to receive
              invoices electronically.
    ProcessorParametersCuscalAU:
      title: Payment Processor Parameters - CUSCAL_AU
      description: Payment Processor Parameters - CUSCAL_AU
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          visaMVV:
            $ref: '#/components/schemas/VisaMVV'
          mastercardMAID:
            $ref: '#/components/schemas/MastercardMAID'
          eftposMTC:
            $ref: '#/components/schemas/EftposMTC'
    PaymentDetailsCredit:
      allOf:
      - $ref: '#/components/schemas/PaymentDetails'
      - properties:
          accountType:
            $ref: '#/components/schemas/PaymentAccountType'
          accountCurrency:
            $ref: '#/components/schemas/CurrencyCodeEnum'
          creditAmountRequested:
            description: Amount of credit to be requested.
            type: number
            format: float
            example: 1500
          purchaseOrderReference:
            type: string
            description: Purchase Order Reference.
            example: PO12345678
          existingCustomerLegalName:
            type: string
            description: Existing Customer Legal Name.
            example: Coffee Co. Ltd
          references:
            type: array
            description: List of references.
            maxItems: 50
            items:
              $ref: '#/components/schemas/ReferenceContactType'
      required:
      - accountType
      - accountCurrency
    PoiConsumablesOrder:
      type: object
      allOf:
      - $ref: '#/components/schemas/PoiAccessory'
      - properties:
          additionalDevicePackages:
            type: array
            maxItems: 100
            minItems: 1
            items:
              $ref: '#/components/schemas/BundleAndPriceAndDataQuantity'
      required:
      - additionalDevicePackages
    ProcessorParametersUSCHASE:
      title: Payment Processor Parameters - CHASE_US
      description: Payment Processor Parameters - CHASE_US
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseProcessorParameters'
      - properties:
          debitEncryptionKey:
            $ref: '#/components/schemas/DebitEncryptionKey'
          ClientNum:
            $ref: '#/components/schemas/ClientNum'
          FNSNumber:
            $ref: '#/components/schemas/FNSNumber'
      required:
      - ClientNum
    BankAxeptExternalOnboarding:
      title: Bank Axept External Onboarding
      description: Bank Axept specific external merchant onboarding details
      type: object
      allOf:
      - $ref: '#/components/schemas/ExternalOnboarding'
      - properties:
          merchantId:
            type: string
            description: Merchant ID / Bax Id.
    CrossBorderAnyCountry:
      type: object
      additionalProperties: false
      title: Any Country
      description: >-
        This fee is applied if the country where the transaction takes place
        (the entity country) is different to the payer country.
      allOf:
      - $ref: '#/components/schemas/CrossBorder'
    PaymentDetailsAccount:
      allOf:
      - $ref: '#/components/schemas/PaymentDetails'
      - properties:
          accountType:
            $ref: '#/components/schemas/PaymentAccountType'
          accountCurrency:
            $ref: '#/components/schemas/CurrencyCodeEnum'
          institutionName:
            type: string
            description: Name of the institution where the account is held.
            example: HSBC Bank
          accountName:
            type: string
            description: Name of the account as known by the financial institution
              operating the account.
            example: Coffee Supreme LTD
          sortCode:
            type: string
            description: >-
              The Routing Number for the bank account. Also referred to as
              the UK Sorting Code identifier, range from 4 to 6 chars, e.g.
              [xxxx or xxxxx or xxxxxx].
            pattern: ^[0-9]{4,6}$
            example: '301105'
          bsb:
            type: string
            description: >-
              An Australian/New Zealand term for the Bank State Branch indicator.
              It is a 6 digit value constructed with the first 2 digits identifying
              the bank.
            pattern: ^[0-9]{6,6}$
            example: 022039
          routingTransitNumber:
            type: string
            description: >-
              routing transit number for the bank account. A routing transit
              number is a nine-digit number used to identify a bank or financial
              institution when clearing funds or processing checks. Established
              by the American Bankers Association (ABA)
            pattern: ^[0-9]{9,9}$
            example: '247484410'
          accountNumber:
            type: string
            description: The Number of the account
            example: '23008275'
          accountAddress:
            $ref: '#/components/schemas/BaseAddress'
          ean:
            type: string
            description: EAN Reference, thirteen digit reference
            pattern: ^[0-9]{13,13}$
            example: '23008275'
          iban:
            $ref: '#/components/schemas/IBANIdentifier'
          bic:
            $ref: '#/components/schemas/BICIdentifier'
      required:
      - accountType
      - accountCurrency
      - accountName
      - accountNumber
      - institutionName
    VmssApplication:
      type: object
      properties:
        visaStatus:
          $ref: '#/components/schemas/VmssSchemeStatus'
        visaMatches:
          $ref: '#/components/schemas/VmssSchemeMatches'
        mcdStatus:
          $ref: '#/components/schemas/VmssSchemeStatus'
        mcdMatches:
          $ref: '#/components/schemas/VmssSchemeMatches'
        mcdTransactionReference:
          type: string
          description: Reference to the status check to mastercard
    VmssSchemeStatus:
      description: Scheme Status
      type: string
      enum:
      - 'NA '
      - PENDING
      - ERROR
      - COMPLETE
    VmssSchemeMatches:
      description: Number of matches found against the VMSS service.
      type: number
    VisaMVV:
      description: >-
        Visa Merchant Verification Value. This is an optional ID assigned
        to a merchant commonly used for discounts/special interchange fees.
      type: string
      minLength: 10
      maxLength: 10
      pattern: ^[a-zA-Z0-9]*$
    VersionControl:
      description: >-
        This identifies which version of software and hardware the merchant
        is using to process electronic transaction.
      type: string
      minLength: 1
      maxLength: 50
      example: Version 1.0.0
    GeometryTypeEnum:
      title: Geolocation Type
      description: An enumeration of Geolocation types.
      type: string
      enum:
      - Point
      - LineString
      - MultiLineString
      - MultiPoint
      - MultiPolygon
      - Polygon
    PoiTypeEnum:
      title: Point of Interaction Type
      description: >-
        The Point of Interaction Type. An indicator to indicate the type of
        Point of Interaction.


        **NOTE:** The value `MULTI_MERCHANT_CHILD` aligns to `MULT_MERCHANT`
        in common/Entity Service.
      type: string
      enum:
      - UNSPECIFIED
      - ELECTRONIC_CASH_REGISTER
      - POINT_OF_SALE
      - UNATTENDED
      - STANDALONE
      - MOBILE
      - VIRTUAL
      - MULTI_MERCHANT_CHILD
    TransactionOptions:
      type: object
      properties:
        purchaseEnabled:
          description: Enable Purchase for this merchant.
          type: boolean
        purchaseWithCashoutEnabled:
          description: Enable Purchase with Cashout for this merchant.
          type: boolean
        cashoutEnabled:
          description: Enable standalone Cashout for this merchant.
          type: boolean
        refundEnabled:
          description: Enable Refund for this merchant.
          type: boolean
        preauthEnabled:
          description: Enable PreAuth for this merchant.
          type: boolean
        balanceEnquiryEnabled:
          description: Enable Balance Enquiry for this merchant.
          type: boolean
        motoPaymentEnabled:
          description: Enable mail and telephone order (MOTO) payments.
          type: boolean
        motoTipEnabled:
          description: Enable tip for moto payments for this merchant.
          type: boolean
        motoRefundEnabled:
          description: Enable mail and telephone order (MOTO) payments.
          type: boolean
        motoPreauthEnabled:
          description: Enable mail and telephone order (MOTO) payments.
          type: boolean
        motoSeparationEnabled:
          description: >-
            If enabled, separate options for telephone and mail order will
            be presented to the user.
          type: boolean
        cashoutAmounts:
          description: >-
            Predefined Cashout amounts that user can select from. Comma separated
            amount e.g. 10.00,20.00,40.00. This is in the currency supported
            by the terminal. All currency format represents a decimal number.
            Maximum 3 values will be allowed.
          type: string
          pattern: '[0-9]+(,[0-9]+)+'
          maxLength: 150
    PagingTotalPages:
      description: Total pages of records.
      type: integer
      example: 1
    PagingTotalItems:
      description: Total number of records.
      type: integer
      example: 25
    TokenTypeId:
      description: TransArmor Token Type ID
      type: string
      minLength: 1
      maxLength: 4
      example: 123D
    TipOptions:
      title: Tip Options
      description: Tip Options
      type: object
      additionalProperties: false
      properties:
        tipEnabled:
          description: >-
            Enable tipping. When enabled the device presents a tip selection
            screen during a transaction, showing pre-configured tip amounts
            and an option for a custom amount.
          type: boolean
        tipLimit:
          description: >-
            Defines the maximum percentage of the transaction amount that
            can be added as a tip. If this is exceeded, a warning is prompted.
          type: integer
          format: int64
          example: '50'
        tipPercentages:
          description: >-
            Pre-Defines up to 3 tip percentage options for customers to choose
            from, after entering the purchase amount for a transaction, e.g.
            10, 15, 20 = 10%, 15%, 20%, respectively. Note that the TipEnabled
            parameter must be enabled, and that only whole numbers are accepted
            as percentage values, e.g. 10% (not 10.5%).
          type: string
          pattern: ([0-9]+,){0,2}([0-9]+)
          maxLength: 150
    EntityOpeningPeriod:
      title: Opening Period
      description: The opening and closing hours.
      properties:
        start:
          pattern: ^\d{2}:\d{2}$
          type: string
          example: 07:00
        end:
          pattern: ^\d{2}:\d{2}$
          type: string
          example: '17:00'
      required:
      - end
      - start
    TimeZone:
      description: >-
        A time zone, following the format defined in the IANA tz database
        (https://www.iana.org/time-zones). Valid examples are America/New_York
        and Etc/UTC. Do not use ambiguous, non-qualified values such as EST
        or GB. Before including this type in your interface, please consider
        whether it is actually appropriate to convey time zone information
        with your type. It is almost always the case that this should be transformed
        from UTC at the time of display to the user; this type might therefore
        be most associated with user-preference APIs.
      type: string
      minLength: 1
      maxLength: 127
    ThreeDSecureMerchantIdentifiers:
      title: Merchant Identifier
      description: >-
        Override the Merchant ID (merchantId) with the default value configured
        in the payment provider contract (PPC), where applicable.

        In cases where the acquirer-issued Merchant ID for the authorization
        flow differs from the one used in the 3DS (SafeKey) flow, ensure the
        correct ID is applied for each flow.

        For example, Amex often requires merchants to complete separate onboarding
        processes for 3DS and authorization, resulting in two distinct Merchant
        IDs:

        * One used for SafeKey (3DS authentication) * Another used for authorization
        via the acquirer or gateway
      required:
      - merchantId
      - paymentType
      properties:
        merchantId:
          type: string
          description: >-
            Merchant ID assigned by Acquirer for 3DS flow. Override the Merchant
            ID (merchantId) with the default value configured in the payment
            provider contract (PPC), where applicable.

            In cases where the acquirer-issued Merchant ID for the authorization
            flow differs from the one used in the 3DS (SafeKey) flow, ensure
            the correct ID is applied for each flow.

            For example, Amex often requires merchants to complete separate
            onboarding processes for 3DS and authorization, resulting in two
            distinct Merchant IDs:

              * One used for SafeKey (3DS authentication)
              * Another used for authorization via the acquirer or gateway
          pattern: ^$|^(?!\s*$).+
          maxLength: 30
          example: '541734'
        paymentType:
          $ref: '#/components/schemas/PaymentTypeEnum'
    TerminalBatchTypeEnum:
      title: Terminal batch type
      type: string
      description: "Defines batching model. \nSINGLE - one batch per terminal.\n\
        MUILTI - advanced batching: one master batch per terminal with sub-batches\
        \ wich are defined by: \n  1. terminalMasterBatchId\n  2. poiId\n\
        \  3. ppc.processor.type\n  3. ppc.processor.acquirer\n  4. tx.amount.currency\n\
        \  5. accountItemType (if not present the CardBrand is used instead)\n\
        \  6. oldTransactions flag"
      enum:
      - SINGLE
      - MULTI
      default: SINGLE
    GiftStoreNo:
      description: Giftcard Provider assigned Store Number.
      type: string
      pattern: ^[0-9]+$
      maxLength: 15
      example: '0303'
    SvsStoreNo:
      description: SVS assigned Store Number.
      type: string
      maxLength: 15
      pattern: ^[0-9]+$
      example: '0303'
    OrderStatusEnum:
      type: string
      enum:
      - DRAFT
      - SUBMITTED
      - INPROGRESS
      - COMPLETED
      - CANCELLED
      - ONHOLD
    PoiStatusEnum:
      type: string
      enum:
      - ACTIVE
      - DEACTIVE
    UpdateStatusEnum:
      type: string
      description: >-
        An entity may have different states but will still exist in the Verifone
        Service without being active as a record is required for the status.


        This only allows update to active status, delete must be explicity
        executed as an operation.
      enum:
      - ACTIVE
      - INACTIVE
    DocumentStatusEnum:
      type: string
      description: Current status of the document. Rejected documents must
        be re-uploaded.
      enum:
      - PENDING_UPLOAD
      - UPLOADED
      - PENDING_SCAN
      - ACCEPTED_CLEAN
      - REJECTED_INFECTED
    SiteReferenceId:
      description: >-
        An optional identifier for the Site which can be provided if different
        to the merchantId.
      type: string
      maxLength: 100
      minLength: 1
    SiteName:
      description: The site name, if different to the merchant name.
      type: string
      minLength: 1
    SiteId:
      description: Site ID of existing unapproved user.
      type: string
      pattern: ^[0-9]*
      example: '42679'
    SigningInformation:
      description: Information on the signing request.
      type: object
      properties:
        provider:
          type: string
          description: Signing Provider used
          enum:
          - SIGNICAT
          - ADOBE
          - DOKOBIT
        providerRef:
          type: string
          description: Signing Provider reference to the signing request
        signedFileUrl:
          type: string
          description: URL to the signed file
        signingRequests:
          type: array
          items:
            $ref: '#/components/schemas/SignersInformation'
      required:
      - provider
      - providerRef
    AddressWithoutType:
      description: An Address following the convention of http://microformats.org/wiki/hcard
      type: object
      required:
      - addressLine1
      - city
      - postCode
      - country
      allOf:
      - $ref: '#/components/schemas/BaseAddressWithoutType'
    ScSettlementProcessType:
      title: Settlement Process Type
      description: >-
        Indicates the settlement process to be used for this contract. Different
        settlement processes may be used for the processor and acquirer. For
        example T1 merchants may agree with the acquirer to have a separate
        settlement file from all SMB merchants. Different process may also
        be used for master merchant processing.
      type: string
      enum:
      - SC_AMEX
      - SC_AMEX_SUPER_AIO
      - SC_EVRY
      - SC_LUOTTOKUNTA
      - SC_NETS_DK
      - SC_NETS_NO
      - SC_NETS_NO_ONLINE_RECON
      - SC_SWEDBANK_FI
      - SC_SWEDBANK_SE
      - SC_WORLDLINE_MASTER_MERCHANT
      - SC_WORLDLINE_SUPER_AIO
      - SC_WORLDLINE_SUPER_AIO_BALTICS
      - SC_WORLDLINE_SUPER_AIO_SE
      - SC_WORLDLINE_SUPER_AIO_DK
      - SC_WORLDLINE_SUPER_AIO_NO
    SettlementAccount:
      allOf:
      - $ref: '#/components/schemas/SepaAccount'
    SettlementDetails:
      type: object
      description: >-
        Settlement details needed for onboarding in certain situations e.g.
        for Payware solutions.
      properties:
        settlementTime:
          type: string
          pattern: ^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
          description: Settlement time in HH:MM format
    BaseServiceTarget:
      description: >-
        Target for  the service package(s).For e.g. this can be Site & selected
        POIs or all POIs in the site.
      properties:
        targetType:
          type: string
          default: SiteAndPois
      discriminator:
        propertyName: targetType
        mapping:
          SiteAndPois: '#/components/schemas/SiteAndPoisForService'
      required:
      - targetType
      oneOf:
      - title: SiteAndPois
        allOf:
        - $ref: '#/components/schemas/SiteAndPoisForService'
    SerialNumber:
      description: The serial number of the physical device
      type: string
      maxLength: 25
    SigningProviderEnum:
      type: string
      enum:
      - ADOBE
      - SIGNICAT
      - DOKOBIT
    ListingOrderEnum:
      title: Query Order
      description: The ordering of the returned results.
      type: string
      enum:
      - ASC
      - DESC
    FilterDateType:
      description: The filter by date type.
      type: string
      enum:
      - createdDate
      - modifiedDate
      default: createdDate
    ResellerEventDataUpdateRequest:
      type: object
      description: >-
        Request body for updating the revenue share percentage of a single
        reseller event record.
      required:
      - eventRevenueSharePercentage
      properties:
        eventRevenueSharePercentage:
          type: number
          description: >
            Updated commission percentage as a decimal number (e.g. 20 or
            12.5 meaning 20% or 12.5%). Conversion is the caller's responsibility:
            TCS requires basis points (multiply by 100); display requires
            a % suffix.
        eventExpiryDate:
          type: string
          format: date-time
          description: Date and time when the event expires.
    UniqueTIDs:
      description: An array of unique TIDs
      type: array
      uniqueItems: true
      minItems: 1
      items:
        $ref: '#/components/schemas/AltVfiPoiId'
    UserContactType:
      description: The details of a Contact.
      type: object
      properties:
        customerType:
          type: string
          default: NewCustomer
      discriminator:
        propertyName: customerType
        mapping:
          NewCustomer: '#/components/schemas/NewCustomerContactType'
          ExistingCustomer: '#/components/schemas/ExistingCustomerContactType'
      required:
      - customerType
      oneOf:
      - title: NewCustomer
        allOf:
        - $ref: '#/components/schemas/NewCustomerContactType'
      - title: ExistingCustomer
        allOf:
        - $ref: '#/components/schemas/ExistingCustomerContactType'
    ResellerEventData:
      type: object
      description: A reseller event data record scoped to a reseller program
        and merchant.
      required:
      - merchantRegistrationNumber
      - eventId
      - eventOrganizerId
      - eventRevenueSharePercentage
      properties:
        resellerId:
          type: string
          description: >-
            Reseller program identifier (e.g. COREGO). Scopes the record to
            a specific reseller.
        merchantRegistrationNumber:
          type: string
          description: >-
            Merchant registration/organisation number. Used to match against
            order data at submission time.
        eventId:
          type: string
          description: TCS-generated event identifier.
        eventOrganizerId:
          type: string
          description: Merchant agreement reference of the event organizer
            in TCS.
        eventRevenueSharePercentage:
          type: number
          description: >
            Commission percentage as a decimal number (e.g. 20 or 12.5 meaning
            20% or 12.5%). Stored as a percentage value. Conversion is the
            caller's responsibility: TCS requires basis points (multiply by
            100); display requires a % suffix.
        merchantLegalName:
          type: string
          description: Legal name of the merchant.
        merchantVatNumber:
          type: string
          description: VAT registration number of the merchant.
        servicePackage:
          type: string
          description: Portfolio service package identifier.
        eventExpiryDate:
          type: string
          format: date-time
          description: Date and time when the event expires.
        createdUserUid:
          type: string
          format: uuid
          readOnly: true
          description: User ID of the user who created this record.
        createdBy:
          type: string
          readOnly: true
          description: Display name of the user who created this record.
        createdDate:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when this record was created.
        modifiedUserUid:
          type: string
          format: uuid
          readOnly: true
          description: User ID of the user who last modified this record.
        modifiedBy:
          type: string
          readOnly: true
          description: Display name of the user who last modified this record.
        modifiedDate:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when this record was last modified.
    ChildPoiMoveRequest:
      type: object
      properties:
        newParentPoiUid:
          description: >-
            The Verifone allocated unique id for the target parent POI. This
            can be an existing MULTI_MERCHANT POI or an

            existing POINT_OF_SALE/STANDALONE POI.


            If this is a POINT_OF_SALE/STANDALONE POI a new MULTI_MERCHANT
            POI will be created transparently based on the

            details from this POI. This MULTI_MERCHANT POI will be linked
            to the same entity as the selected POI.
          type: string
          format: uuid
          example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
      required:
      - newParentPoiUid
    ValidateCustomerOrderLink:
      type: object
      required:
      - orderId
      properties:
        orderId:
          $ref: '#/components/schemas/OrderId'
    SendCustomerOrderLink:
      type: object
      required:
      - orderId
      - orderLink
      properties:
        orderId:
          $ref: '#/components/schemas/OrderId'
        orderLink:
          type: string
          format: uri
          description: >-
            UI-generated link that helps the customer land on the correct
            step in the order page's stepper. This link ensures the customer
            can update their order by navigating directly to the relevant
            section.
    BulkUploadInitRequest:
      description: Request body for bulk order upload initiation.
      type: object
      properties:
        customerEntityId:
          type: string
          description: Verifone customer entity ID for whom the bulk order
            is being uploaded.
        fileType:
          type: string
          description: Type of the file being uploaded (e.g. CSV, XLSX).
        fileName:
          type: string
          description: Name of the file being uploaded.
      required:
      - customerEntityId
      - fileType
      - fileName
    BulkUploadSubmitRequest:
      description: Request body for bulk order upload submission.
      type: object
      properties:
        transactionId:
          type: string
          description: Reference ID returned from POST /orders/bulk/upload-url.
      required:
      - transactionId
    DeviceExchangeRequest:
      type: object
      properties:
        oldDeviceSerialNumber:
          type: string
          description: Serial number of the device being sent for repair /
            exchanged out.
        newDeviceSerialNumber:
          type: string
          description: Serial number of the replacement device being exchanged
            in.
        priorityExchange:
          type: boolean
          description: >
            true = Advance Exchange (a new DID is assigned to the replacement
            device); false = Non-Priority Exchange (the existing DID is retained).
        customerEntityUid:
          type: string
          format: uuid
          description: Customer entity UID for profile lookup.
      required:
      - oldDeviceSerialNumber
      - priorityExchange
    PoiPatch:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/UpdateStatusEnum'
    EntityPatch:
      type: object
      properties:
        name:
          maxLength: 40
          pattern: ^(?!\s*$).+
          type: string
          description: >-
            A name to be assigned to this entity. This can be the trading
            name or business name.
          example: Merchant Name
        status:
          $ref: '#/components/schemas/UpdateStatusEnum'
        merchant:
          $ref: '#/components/schemas/MerchantIdUpdate'
    httpError403:
      title: HTTP 403 Error
      type: object
      description: The request must be authorised to access the resource.
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '403'
            default: '403'
            example: '403'
          title:
            type: string
            enum:
            - Forbidden
            default: Forbidden
            example: Forbidden
          message:
            type: string
            default: The request requires client authorisation to access resource.
            example: The request requires client authorisation to access resource.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - AUTHENTICATION_ERROR
            default: AUTHENTICATION_ERROR
            example: AUTHENTICATION_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    TidAllocation:
      description: VFI Terminal ID allocated
      type: object
      properties:
        altVfiPoiId:
          $ref: '#/components/schemas/AltVfiPoiId'
      required:
      - altVfiPoiId
    MidAllocation:
      description: VFI Merchant ID allocated.
      type: object
      properties:
        altVfiEntityId:
          $ref: '#/components/schemas/AltVfiEntityId'
      required:
      - altVfiEntityId
    AddUserResponse:
      type: object
      properties:
        userUid:
          description: Unique identifier for the user
          type: string
          format: uuid
          example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
      required:
      - userUid
    BatchDetails:
      type: object
      allOf:
      - $ref: '#/components/schemas/BatchDetailsUpdatable'
      - properties:
          batchId:
            $ref: '#/components/schemas/BatchId'
          fileCreatedDate:
            description: The date time when the file was created on SFTP.
            type: string
            format: date-time
          filePickupDate:
            description: The date time when the file was picked up by the
              batch process.
            type: string
            format: date-time
          fileName:
            type: string
            maxLength: 200
          orderType:
            $ref: '#/components/schemas/OrderType'
          retryCount:
            type: integer
            minimum: 0
            maximum: 100
            default: 0
          transactions:
            description: Individual transactions of the batch.
            type: array
            items:
              $ref: '#/components/schemas/BatchLineItem'
              minItems: 1
          completionDate:
            type: string
            format: date-time
      required:
      - batchId
      - processingStatus
    BatchSearchResponse:
      type: object
      properties:
        batches:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/BatchDetails'
        metadata:
          $ref: '#/components/schemas/PagingMetadata'
      required:
      - batches
      - metadata
    BulkUploadInitResponse:
      description: >-
        Response containing the pre-signed S3 URL and transaction ID for the
        bulk upload.
      type: object
      properties:
        transactionId:
          type: string
          description: Reference ID to be used when submitting via POST /orders/bulk/submit.
        s3Url:
          type: string
          description: Secure upload link for direct file upload from the
            client.
    DeviceExchangeResponse:
      type: object
      properties:
        deviceId:
          type: string
          description: The DID returned after the device exchange.
      required:
      - deviceId
    AdobeWebhookResponse:
      description: Adobe Webhook Response
      type: object
      properties:
        xAdobeSignClientId:
          type: string
          description: Echoes back the Client ID received in the request.
    ResellerEventDataPageResponse:
      type: object
      description: Paginated response envelope for reseller event data list
        endpoints.
      properties:
        content:
          type: array
          description: Page of reseller event data records.
          items:
            $ref: '#/components/schemas/ResellerEventData'
        totalElements:
          type: integer
          description: Total number of records matching the query.
        totalPages:
          type: integer
          description: Total number of pages available.
        currentPage:
          type: integer
          description: Zero-based index of the current page.
        size:
          type: integer
          description: Number of records per page.
    PoiTypeSimplifiedResponse:
      title: Point of Interaction
      type: object
      properties:
        altVfiPoiId:
          $ref: '#/components/schemas/AltVfiPoiId'
        estateManagementId:
          type: string
          description: >-
            This has very specific meaning as an identifier used for Estate
            Management. This should generally be left blank as

            Verifone will allocate this ID.


            In VHQ this is related to the deviceId.
        serialNumber:
          $ref: '#/components/schemas/SerialNumber'
        name:
          maxLength: 35
          type: string
          description: The name used to represent this POI. This is a label
            not an identifier.
        description:
          maxLength: 30
          type: string
          description: An optional value where some Merchant specific entry
            is associated with a POI.
        status:
          $ref: '#/components/schemas/PoiStatusEnum'
        poiUid:
          $ref: '#/components/schemas/PoiUid'
      required:
      - status
      - poiUid
      example:
        estateManagementId: '100112345678'
        status: ACTIVE
        poiUid: d80fcd67-01ad-47e3-93be-fb073d276c52
    PoiLookupResponse:
      description: Response for POI lookup by merchant identifiers.
      type: object
      properties:
        merchantName:
          type: string
          description: Merchant name.
        siteName:
          type: string
          description: Site name.
        siteReferenceId:
          type: string
          description: Site reference ID.
        storeNumber:
          type: string
          description: Alias for siteReferenceId.
        merchantId:
          type: string
          description: Acquirer MID from Payment Provider Contract.
        altVfiEntityId:
          type: string
          description: Verifone gateway MID (ISO8583 DE42).
        merchantCompanyUid:
          type: string
          format: uuid
          description: entityUid of the ancestor MERCHANT_COMPANY entity.
        entityUid:
          type: string
          format: uuid
          description: entityUid of the resolved site.
        pois:
          type: array
          description: POIs belonging to the resolved site.
          items:
            $ref: '#/components/schemas/PoiSummary'
    MetadataResponse:
      type: object
      required:
      - creators
      - organisations
      properties:
        creators:
          type: array
          maxItems: 1000
          description: All the creators of orders within this search criteria
          items:
            $ref: '#/components/schemas/Creator'
        organisations:
          type: array
          maxItems: 1000
          description: All the organisations of orders within this search
            criteria
          items:
            $ref: '#/components/schemas/Organisation'
      example:
        creators:
        - userUid: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          name: John Smith
    CreatorsResponse:
      type: object
      required:
      - creators
      properties:
        creators:
          description: All the creators of orders within this search criteria
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/Creator'
      example:
        creators:
        - userUid: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          name: John Smith
    OrderSearchResponse:
      properties:
        orders:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/OneOfOrderResponse'
        metadata:
          $ref: '#/components/schemas/PagingMetadata'
      required:
      - orders
      - metadata
    TidPoolFetchResponse:
      type: object
      properties:
        tids:
          type: array
          items:
            $ref: '#/components/schemas/TidPoolItem'
        metadata:
          $ref: '#/components/schemas/PagingMetadata'
      required:
      - tids
      - metadata
    OracleAccountDetailsResponse:
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/OracleAccountDetails'
    DeleteRepairDeviceResponse:
      type: object
      properties:
        deviceSerialNumber:
          type: string
          description: The serial number of the device targeted for deletion.
        entityServiceStatus:
          type: string
          enum:
          - SUCCESS
          - NOT_FOUND
          - FAILED
          description: Result of the Entity-Service POI deletion.
        entityServiceMessage:
          type: string
          description: >-
            Error detail when entityServiceStatus is FAILED or NOT_FOUND.
            Multiple POI errors separated by semicolon.
        poiUidsDeleted:
          type: array
          items:
            type: string
            format: uuid
          description: UUIDs of POI records successfully deleted from Entity-Service.
        vhqStatus:
          type: string
          enum:
          - SUCCESS
          - NOT_FOUND
          - FAILED
          - SKIPPED
          description: >
            Result of VHQ device deletion. SKIPPED when vhqDeleteDevice configuration
            is false or null for this customer.
        vhqMessage:
          type: string
          description: Error detail when vhqStatus is FAILED.
      required:
      - deviceSerialNumber
      - entityServiceStatus
      - vhqStatus
    LastChangeTime:
      description: Time status detailed status last changed.
      type: string
      format: date-time
      example: '2020-01-06T18:16:14.243Z'
    DetailedStatusEnum:
      description: An order will be in one of the following states.
      type: string
      enum:
      - DRAFT
      - SUBMITTED
      - INPROGRESS
      - PENDING_THIRD_PARTY
      - PENDING_SIGNATURE
      - UNDER_REVIEW
      - REQUIRES_ATTENTION
      - INTERNAL_BOARDING
      - FULFILMENT_BOOKED
      - FULFILMENT_PICKED
      - FULFILMENT_SHIPPED
      - CANCEL_REQUESTED
      - CANCEL_INPROGRESS
      - CANCEL_ERROR
      - CANCELED_BYUSER
      - COMPLETED
      - CANCELLED
      - DECLINED
      - ONHOLD
      - OFFER_SENT
      - OPENED_BY_CUSTOMER
      - INPROGRESS_BY_CUSTOMER
      - DOCS_REQUIRED
      - DOCS_REQUIRES_ATTENTION
    TidPoolStatusEnum:
      description: Allocation status of the purchased TID.
      type: string
      enum:
      - ALLOCATED
      - UNALLOCATED
      - RESERVED
      - INACTIVE
    BatchId:
      description: Idenitifer assigned to the order batch.
      type: string
      format: uuid
      example: 14f5ea24-cc4f-11e8-a8d5-f2801f1b9fd9
    RequestedDateOfShipment:
      description: Requested date of shipment.
      type: string
      format: date-time
    ReportingGroupConfigId:
      maxLength: 64
      type: string
      description: >-
        Id specifying the configuration which defines transaction.reportingGroup
        field used for reporting.
    ReplacementAgreement:
      title: ReplacementAgreement
      type: object
      description: Replacement agreement details for devices covered under
        this contract.
      required:
      - devices
      properties:
        contractNumber:
          type: string
          maxLength: 255
          description: Contract number for the replacement agreement.
        devices:
          type: array
          description: List of devices being replaced.
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/ReplacedDevice'
    ReceiptOptions:
      title: Receipt Options
      description: Receipt Options
      type: object
      properties:
        printMerchantReceipt:
          $ref: '#/components/schemas/PrintOptionsEnum'
        printCustomerReceipt:
          $ref: '#/components/schemas/PrintOptionsEnum'
        showEmailReceipts:
          description: Show e-mail option for customer receipts.
          type: boolean
        showEmailTermsAndConditions:
          description: >-
            Determines if the device displays the Terms and Conditions text
            when a customer elects to receive an email receipt.
          type: boolean
        greeting:
          description: Placeholder for greeting text on the receipt.
          type: string
          pattern: ^(.|n)*$
          maxLength: 10000
        footer:
          description: Receipt placeholder for footer text.
          type: string
          maxLength: 10000
          pattern: ^(.|n)*$
    BaseProcessorParameters:
      description: Payment Processor Parameters related to Merchant onboarding.
      type: object
      properties:
        processor:
          title: Payment Provider ContractType Processor Acquirer Type
          description: A type indicator for the contract that is being processed.
          type: string
          enum:
          - ABS_ISO
          - ABS_PDM
          - ABS_WEB
          - AMEX
          - BANKAXEPT
          - BANQUE_CHABRIERES
          - BARCLAYS
          - BFCOI
          - BNPP_ATC
          - BNP_PARIBAS
          - BNPP_VERS_ATOS
          - BRED
          - CAISSE_D_EPARGNE
          - CBA
          - CEDICAM
          - CIC
          - CM_ARKEA
          - CREDIT_AGRICOLE
          - CREDIT_DU_NORD_VERS_ATOS
          - CREDIT_DU_NORD_VERS_NATIXIS
          - CREDIT_MUTUEL
          - CREDITGUARD
          - DANKORT
          - EFTPOS_NZ
          - ELAVON
          - FDRC
          - FIRSTDATA
          - GICC
          - GIVEX
          - GLOBALPAY
          - GPP2
          - HSBC
          - IKANO
          - INTERCARD
          - ISRACARD
          - LA_BANQUE_POSTAL
          - LCL
          - LES_BANQUES_POPULAIRES
          - LLOYDS_CARDNET
          - MAESTRO
          - MOBILEPAY
          - NETS
          - OTHER
          - PAYPAL
          - PAYPAL_ECOM
          - PELECARD
          - RESURS_BANK
          - RTS
          - SG
          - SIMULATOR
          - SWEDBANK_PAY
          - SWISH
          - TIETO_EVRY
          - VERIFONE_AU
          - VIPPS
          - WESTPAC
          - WORLDPAY
          - WPAY_AU
          - FISERV_AU
          - CUSCAL_AU
          - CHASE_US
          - ELAVON_US
          - FISERV_US
          - TSYS_US
          - GLOBALPAYMENTS_US
          - VANTIV_US
          - HEARTLAND_US
          - TELECHECK_US
          - SC_AMEX
          - SC_EVRY
          - SC_LUOTTOKUNTA
          - SC_NETS_DK
          - SC_NETS_NO
          - SC_SWEDBANK_SE
          - SVS_US
          - SVS_UK
          - VALUELINK_US
          - VALUELINK_CA
          - VALUTEC_US
          - UNIFY_GIVEX
          default: TSYS_US
        tidList:
          description: >-
            A pool of terminal IDs issued by the Acquiring Institution. This
            pool is intended to be used for the POIs that's capable of initiating
            multiple payment requests in parallel (e.g. Checkout Page and
            Virtual Terminal)
          type: array
          uniqueItems: true
          items:
            type: string
          example:
          - '1004631982'
          - '1004631983'
          - '1004631984'
      discriminator:
        propertyName: processor
        mapping:
          GIVEX: '#/components/schemas/ProcessorParametersGivex'
          GLOBALPAYMENTS_US: '#/components/schemas/ProcessorParametersUSGPEAST'
          TSYS_US: '#/components/schemas/ProcessorParametersUSTSYS'
          CHASE_US: '#/components/schemas/ProcessorParametersUSCHASE'
          ELAVON_US: '#/components/schemas/ProcessorParametersUSELAVON'
          FISERV_US: '#/components/schemas/ProcessorParametersUSFIRSTDATA'
          VANTIV_US: '#/components/schemas/ProcessorParametersUSVANTIV'
          HEARTLAND_US: '#/components/schemas/ProcessorParametersUSHeartland'
          TELECHECK_US: '#/components/schemas/ProcessorParametersUSTelecheck'
          FISERV_AU: '#/components/schemas/ProcessorParametersFiservAU'
          CUSCAL_AU: '#/components/schemas/ProcessorParametersCuscalAU'
          WPAY_AU: '#/components/schemas/ProcessorParametersWpayAU'
          SVS_UK: '#/components/schemas/ProcessorParametersSVS'
          SVS_US: '#/components/schemas/ProcessorParametersSVS'
          VALUELINK_US: '#/components/schemas/ProcessorParametersValuelink'
          VALUELINK_CA: '#/components/schemas/ProcessorParametersValuelink'
          VALUTEC_US: '#/components/schemas/ProcessorParametersValutecUS'
          VERIFONE_AU: '#/components/schemas/ProcessorParametersVerifoneAU'
          SC_AMEX: '#/components/schemas/ProcessorParametersSC'
          SC_EVRY: '#/components/schemas/ProcessorParametersSC'
          SC_LUOTTOKUNTA: '#/components/schemas/ProcessorParametersSC'
          SC_NETS_DK: '#/components/schemas/ProcessorParametersSC'
          SC_NETS_NO: '#/components/schemas/ProcessorParametersSC'
          SC_SWEDBANK_SE: '#/components/schemas/ProcessorParametersSC'
          OTHER: '#/components/schemas/ProcessorParametersOTHER'
          UNIFY_GIVEX: '#/components/schemas/ProcessorParametersUnifyGivex'
      required:
      - processor
      oneOf:
      - title: GIVEX
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersGivex'
      - title: GLOBALPAYMENTS_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSGPEAST'
      - title: TSYS_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSTSYS'
      - title: CHASE_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSCHASE'
      - title: ELAVON_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSELAVON'
      - title: FISERV_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSFIRSTDATA'
      - title: VANTIV_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSVANTIV'
      - title: HEARTLAND_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSHeartland'
      - title: TELECHECK_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUSTelecheck'
      - title: FISERV_AU
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersFiservAU'
      - title: CUSCAL_AU
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersCuscalAU'
      - title: WPAY_AU
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersWpayAU'
      - title: SVS_UK
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSVS'
      - title: SVS_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSVS'
      - title: VALUELINK_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersValuelink'
      - title: VALUELINK_CA
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersValuelink'
      - title: VALUTEC_US
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersValutecUS'
      - title: VERIFONE_AU
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersVerifoneAU'
      - title: SC_AMEX
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSC'
      - title: SC_EVRY
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSC'
      - title: SC_LUOTTOKUNTA
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSC'
      - title: SC_NETS_DK
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSC'
      - title: SC_NETS_NO
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSC'
      - title: SC_SWEDBANK_SE
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersSC'
      - title: OTHER
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersOTHER'
      - title: UNIFY_GIVEX
        allOf:
        - $ref: '#/components/schemas/ProcessorParametersUnifyGivex'
    PaymentProcessorAcquirerTypeEnum:
      title: Processor Type
      description: >-
        A type indicator for the contract that is being processed.


        __Note:__ `OTHER` is used for the Synthetic PIM, and typically shouldn't
        be used for external consumption.

         Added `KLARNA`,`VERIFONE_UK`,`WYNID` from PDSP for batch API.

        Deprecated: `CAISSE_D'EPARGNE`, `CBOARD`, `CBORD`, `BLACKBOARD`, `ABS_ISO`,
        `AMEX`.
      type: string
      enum:
      - ABS_ISO
      - ABS_PDM
      - ABS_WEB
      - AFFIRM
      - ALIPAY
      - AMEX
      - AMEX_GB
      - AMEX_MX
      - AMEX_PWP
      - ASB_NZ
      - ATRIUM
      - BANKAXEPT
      - BANORTE_MX
      - BANQUE_CHABRIERES
      - BANZPAY_NZ
      - BARCLAYS
      - BARCLAYS_MC
      - BBVA_MX
      - BFCOI
      - BLACKBOARD
      - BLACKHAWK_CA
      - BLACKHAWK_US
      - BLIK
      - BNP_PARIBAS
      - BNP_PARIBAS_CB6
      - BNPP_ATC
      - BNPP_VERS_ATOS
      - BNZ_DEBIT_NZ
      - BOFA_CA
      - BOFA_US
      - BRED
      - CAISSE_D_EPARGNE
      - CAISSE_D_EPARGNE_CB6
      - CBA
      - CBOARD
      - CBORD
      - CEDICAM
      - CHANGEFINANCIAL_NZ
      - CHASE_CA
      - CHASE_US
      - CIC
      - CIC_CB6
      - CITIBANK_CA
      - CITIBANK_US
      - CM_ARKEA
      - COOP_DEBIT_NZ
      - CREDIT_AGRICOLE
      - CREDIT_AGRICOLE_CB6
      - CREDIT_DU_NORD_VERS_ATOS
      - CREDIT_DU_NORD_VERS_ATOS_CB6
      - CREDIT_DU_NORD_VERS_NATIXIS
      - CREDIT_MUTUEL
      - CREDIT_MUTUEL_CB6
      - CREDITGUARD
      - CREDOMATIC
      - CROSSKEY
      - CRYPTO
      - CUSCAL_AU
      - CYBERSOURCE
      - CYBERSOURCE_EU
      - DANKORT
      - ECARD_NZ
      - ECARDZ_NZ
      - EFTPOS_AU
      - EFTPOS_NZ
      - ELAVON
      - ELAVON_ISO_UK
      - EPAY
      - EPAY_NZ
      - FARMLANDS_NZ
      - FARMSOURCE_NZ
      - FDRC
      - FDRC_CA
      - FDRC_PETRO_US
      - FDRC_US
      - FINNISH_DIRECT_BANKING
      - FIRSTDATA
      - FISERV_AU
      - FISERV_CA
      - FISERV_LAC
      - FISERV_UK
      - FISERV_US
      - FLEETCOR_NZ
      - FLEXIGROUP_NZ
      - GICC
      - GIVEX
      - GLOBALPAY
      - GLOBALPAY_US
      - GPP2
      - HSBC
      - HSBC_CB6
      - HUMMGROUP_NZ
      - IKANO
      - INCOMM_CA
      - INCOMM_US
      - INDUE_NZ
      - INTERCARD
      - INTERCARD_VIRTUAL_DRS
      - ISRACARD
      - KIWIBANK_NZ
      - KLARNA
      - KLARNA_ECOM
      - KLARNA_QR
      - LA_BANQUE_POSTAL
      - LA_BANQUE_POSTAL_CB6
      - LANDSBANKINN
      - LCL
      - LCL_CB6
      - LES_BANQUES_POPULAIRES
      - LES_BANQUES_POPULAIRES_CB6
      - LLOYDS_CARDNET
      - MAESTRO
      - MOBILEPAY
      - MOBILEPAY_ECOM
      - MONEXT
      - MONEXT_CB6
      - MPGS
      - MTA_NZ
      - NETS
      - NETS_FI
      - OCIUS
      - OMNIPAY
      - OP_ONLINE_PAYMENT
      - OTHER
      - PARK_RETAIL_UK
      - PAYPAL
      - PAYPAL_BRAINTREE
      - PAYPAL_ECOM
      - PELECARD
      - PIX
      - PLAID
      - PRM
      - PROSA_MX
      - PWC
      - RAPYD
      - RD1_NZ
      - RESURS_BANK
      - RMS
      - RTS
      - RURALCO_NZ
      - SBS_NZ
      - SC_AMEX
      - SC_EVRY
      - SC_LUOTTOKUNTA
      - SC_NETS_DK
      - SC_NETS_NO
      - SC_SWEDBANK_SE
      - SG
      - SG_CB6
      - SIMULATOR
      - SOLTEQ
      - SQUAREONE_NZ
      - SVS_UK
      - SVS_US
      - SWEDBANK_PAY
      - SWISH
      - SWISH_ECOM
      - SYNCHRONY_US
      - TELECHECK_US
      - TEYA_EU
      - TIETO_EVRY
      - TRANXACTOR_NZ
      - UNIFY_GIVEX
      - UNIONPAY
      - TSB_NZ
      - VALUELINK_CA
      - VALUELINK_US
      - VALUTEC_US
      - VERIFONE_AU
      - VERIFONE_CMS_AUNZ
      - VERIFONE_CMS_EU
      - VERIFONE_EU
      - VERIFONE_EU_FIS
      - VERIFONE_EU_TEST
      - VERIFONE_UK
      - VIPPS
      - VIPPS_ECOM
      - WECHAT
      - WESTPAC
      - WESTPACAGENCY_NZ
      - WESTPACECOM_AU
      - WESTPAC_NZ
      - WESTPAC_PACIFIC_FJ
      - WESTPAC_PACIFIC_PG
      - WEX_COMMERCIAL_US
      - WEX_US
      - WIC_US_TX
      - WOODFOREST_CA
      - WOODFOREST_US
      - WORLDLINE_UK
      - WORLDPAY
      - WORLDPAY_CA
      - WORLDPAY_US
      - WPAY_AU
      - WYNID
      default: OTHER
    BatchStatus:
      type: string
      enum:
      - SUCCESS
      - CORRUPT_FILE
      - DUPLICATE_FILE_NAME
      - NO_FILES_RECEIVED
      - INPROGRESS
      - PENDING
      - TX_COMPLETED
      - PARTIAL_SUCCESS
      - FORCE_STOPPED
    PrintOptionsEnum:
      title: Receipt Printing Option
      description: >-
        Defines the receipt print options. - Possible values are: <br />Never
        Print - NEVER<br />Prompt for print - PROMPT<br />Always Print - ALWAYS<br
        />Always Print when Signature is Captured - ALWAYS_WITH_SIGNATURE
      type: string
      enum:
      - NEVER
      - PROMPT
      - ALWAYS
      - ALWAYS_WITH_SIGNATURE
    AmountSimple:
      title: Amount Simple Type
      type: string
      description: >
        The value, which can be anything from:

        - An integer. For currencies that are not typically fractional, such
        as `JPY`. - A three-place decimal fraction. For currencies that are
        subdivided into thousandths, such as `TND`.

        *The required number of decimal places for a currency code is according
        to [ISO 4217](https://wikipedia.org/wiki/ISO_4217). However the following
        table documents exception to ISO 4217 that is also allowed:*


        |Code|Currency|Decimals|Fixed minor units|

        |--------|-----------|---------|-----------|

        |ISK|Iceland Krona|2|.00|
      maxLength: 32
      pattern: ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$
      example: '20.50'
    PostCode:
      description: >-
        Identifier consisting of a group of letters and/or numbers that is
        added to a postal address to assist the sorting of mail.
      type: string
      minLength: 1
      maxLength: 16
      example: '2061'
    PoiUid:
      description: >-
        The Verifone allocated unique id for this terminal/POI. This is allocated
        by Verifone when an order is initially received.
      type: string
      format: uuid
      example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    PoiCutoverStrategyEnum:
      title: POI Cutover Strategy
      description: >-
        The cutover strategy. If ONE_BATCH_PER_TRADING_DATE is specified this
        needs to be aligned with a processor cutover time.
      type: string
      enum:
      - ONE_BATCH_PER_TRADING_DATE
      - FLEXIBLE_BATCH
    PoiCutoverConfigurationId:
      type: string
      description: >-
        The ID allocated for the POI cutover configuration.


        If using FLEXIBLE_BATCH cutover strategy then this should be set directly
        on each POI in `poi.poiCutoverConfigurationId`

         If using ONE_BATCH_PER_TRADING_DATE cutover strategy this does not
        need to be assigned to individual POIs as all POIs linked to the processor
        will pick up the cutover configuration automatically.
      example: FISERV_AU
    PhoneTypeEnum:
      title: Phone Type
      description: >-
        Phone type in PHONE_TYPE_CON. Mapped to PARTY_PHONE.PHONE_TYPE_CON_ID
        or VENUE_PHONE.PHONE_TYPE_CON_ID
      type: string
      enum:
      - HOME
      - MOBILE
      - WORK
      - FAX
      - OTHER
      default: HOME
    PaymentTypeEnum:
      title: Payment Type
      description: >-
        A type indicator for the payment that is being processed. Value `GIFT`
        is deprecated.
      type: string
      enum:
      - AFFIRM
      - AFTERPAY
      - ALIPAY
      - AMEX
      - BAIDU_PAY
      - BANK
      - BANKAXEPT
      - BARTERCARD
      - BBBY_COB
      - BBBY_PLCC
      - BLIK
      - BP_FUELCARD
      - CALLIO_GASTRO
      - CARD
      - CARDLINK
      - CARNET
      - CASH
      - CB
      - CHEQUE
      - CLAVE
      - CRYPTO
      - DANKORT
      - DEBIT
      - DINERS
      - DISCOVER
      - EASYCD
      - EBT
      - EBT_WIC_OFFLINE
      - ECARD
      - ECARDZ
      - EDENRED
      - ELECTRON
      - EZIPAY
      - FARMERS_FINANCE
      - FARMLAND
      - FARMLANDS
      - FINNISH_DIRECT_BANKING
      - FLEETCOR
      - FLEETONE
      - FLEXECASH
      - FORBRUGSFORENINGEN
      - FPF_GIFT
      - GARMIN_PAY
      - GIFT
      - GIFT_CARD
      - GIROCARD
      - IKANO
      - ISRACARD
      - ISRAEL_PRIVATE_LABEL
      - JCB
      - JD_PAY
      - KLARNA
      - KLARNA_ECOM
      - KLARAN_QR
      - KLARNA_QR
      - LANDSBANKINN
      - MASTERCARD
      - MAESTRO
      - MOBILEPAY
      - MOBILEPAY_ECOM
      - OP_ONLINE_PAYMENT
      - PAYPAL
      - PAYPAL_ECOM
      - PAYPAL_ECOM_MANAGED
      - PAYPAL_QR
      - PIX
      - PLCC
      - Q_CARD
      - RESURS_BANK
      - RURALCO
      - SAMSUNG_PAY
      - SODEXO_GASTRO
      - SUPERCARD
      - SWISH
      - SWISH_ECOM
      - TEN_PAY
      - TRANXACTOR
      - TRUE_REWARDS
      - TT_CARD
      - UP_SLOVENSKA
      - UPI
      - VENMO
      - VENMO_ECOM
      - VENMO_QR
      - VIPPS
      - VIPPS_ECOM
      - VISA
      - VOYAGER
      - VPAY
      - WECHAT
      - WESTFIELD_GIFTCARD
      - WESTPAC_DEBIT
      - WEX
      - ZELLE
      - ZIP
      - OTHER
    PaymentDetails:
      description: >-
        Details of how the order will be paid, and the further re-occuring
        billing for services.
      type: object
      properties:
        paymentType:
          type: string
          description: Type of payment that can be made.
          default: CREDIT
      discriminator:
        propertyName: paymentType
        mapping:
          ACCOUNT: '#/components/schemas/PaymentDetailsAccount'
          CREDIT: '#/components/schemas/PaymentDetailsCredit'
          NET: '#/components/schemas/PaymentDetailsNET'
          EINVOICE: '#/components/schemas/PaymentDetailsEInvoice'
      required:
      - paymentType
      oneOf:
      - title: ACCOUNT
        allOf:
        - $ref: '#/components/schemas/PaymentDetailsAccount'
      - title: CREDIT
        allOf:
        - $ref: '#/components/schemas/PaymentDetailsCredit'
      - title: NET
        allOf:
        - $ref: '#/components/schemas/PaymentDetailsNET'
      - title: EINVOICE
        allOf:
        - $ref: '#/components/schemas/PaymentDetailsEInvoice'
    PaymentAppParameters:
      title: Base Parameters
      description: >-
        Payment Parameters - these can be specified per merchant and/or overridden
        at the poi level. If no values are specified then default template
        values will be applied.
      type: object
      properties:
        AccountVerifyEnabled:
          example: '0'
          description: Enable Account verification for this merchant
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        AllowDisableMerchantPreferredAppSelection:
          example: '0'
          description: >-
            Display the option to disable merchant preferred app selection
            in the 'Prompt For Card' screen
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        PurchaseEnabled:
          example: '1'
          description: Enable Purchase transactions for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        PurchaseAndCashoutEnabled:
          example: '1'
          description: Enable prompting for a cashout amount as part of a
            purchase transaction.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ManualPurchaseAndCashoutEnabled:
          example: '1'
          description: Enable Manual Card Entry for Purchase with Cashout.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        PurchaseSurchargeEnabled:
          example: '0'
          description: >-
            Enables surcharging for Purchase (+ Cash + Tip)

            transactions. Surchargeable amount - this is the amount in

            the transaction where a surcharge can be applied to.

            Purchase only - surchargeable amount is the purchase

            amount. Purchase + Cash - surchargeable amount is the

            purchase amount only. Purchase + Cash + Tip -

            surchargeable amount is the purchase amount only. Purchase

            + Tip - surchargeable amount is the purchase amount only.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ContactlessSurchargeEnabled:
          example: '0'
          description: Enable contactless surcharging.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        CashOutOnlySurchargeEnabled:
          example: '0'
          description: Enables surcharging for Cashout only transactions.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        PreauthCompletionSurchargeType:
          example: '0'
          description: >-
            0 - Disabled: Pre-Auth/Completion transactions are not subject
            to surcharge


            1 - Pre-Auth: Surcharge is applied to Pre-Auth (initial) transaction


            2 - Completion: Surcharge is applied to Completion transaction
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-2]'
        MotoSurchargeEnabled:
          example: '0'
          description: >-
            Enables surcharging for mail and telephone order (MOTO)

            transactions.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ManualPurchaseEnabled:
          example: '1'
          description: Enable Manual Card Entry for Purchase.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ManualRefundEnabled:
          example: '1'
          description: Manual Refund Enabled.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ManualPreAuthEnabled:
          example: '0'
          description: Enable Manual Card Entry for PreAuth.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        CashoutOnlyEnabled:
          example: '1'
          description: Enable Cashout only transactions for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ManualCashoutOnlyEnabled:
          example: '1'
          description: Enable Manual Card Entry for Cashout transactions without
            a purchase.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        RefundEnabled:
          example: '1'
          description: Enable Refund transactions as such for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        LimitRefundAmountEnabled:
          example: '0'
          description: >-
            Enable limit refund amount with MaxCashierRefundAmount and MaxManagerRefundAmount.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        EbtEnabled:
          example: '1'
          description: Allow EBT (Electronic benefit transfer) payment type.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        VoidEnabled:
          example: '1'
          description: Enable void transaction for magnetic stripe and chip
            cards for this product
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ManualVoidEnabled:
          example: '1'
          description: Enable Manual Card Entry for Void
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        SplitPaymentsEnabled:
          example: '1'
          description: Allow the total to be paid with multiple payments.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        PreAuthEnabled:
          example: '0'
          description: Enable Pre-Auth transactions for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        PostAuthEnabled:
          example: '0'
          description: Enable Post-Auth transactions for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        PreAuthCtlsEnabled:
          example: '1'
          description: >-
            Enable Pre Authorization transaction for contactless payment methods
            for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        BalanceEnquiryEnabled:
          example: '1'
          description: Enable Balance Enquiry transactions for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        MotoPaymentEnabled:
          example: '0'
          description: Enable mail and telephone order (MOTO) payments.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        MotoTipEnabled:
          example: '0'
          description: Enable tip for moto payments for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        MotoRefundEnabled:
          example: '0'
          description: Enable moto refunds for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        MotoPreAuthEnabled:
          example: '0'
          description: Enable moto PreAuth for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        MotoSeparationEnabled:
          example: '0'
          description: >-
            Determines whether to present separate options for mail and telephone
            orders (MOTO).
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        CashbackAmounts:
          example: 10,20,40,60
          description: >-
            Predefined cashout amounts presented at the cashout selection
            in the local currency. Maximum of 4 comma separated amounts e.g.
            10.00,20.00,40.00.
          type: string
          maxLength: 150
          minLength: 0
          pattern: ^(\d+\.?\d*,){0,3}(\d+\.?\d*)$
        MaxPurchaseAmount:
          example: '1000000'
          description: >-
            Represents the maximum purchase amount allowed in the currency
            supported by the terminal. The value should be in a decimal format,
            e.g. $40 = 40.00. Maximal amount supported by the payment application
            is 9,999,999,999.99.
          type: string
          maxLength: 13
          minLength: 0
          pattern: ^[0-9]{1,10}(\.[0-9]{2})?$
        MaxCashierRefundAmount:
          example: '0'
          description: >-
            Maximum refund amount allowed by the cashier, in the currency
            supported by the terminal. The value should be in a decimal format,
            e.g. $40 = 40.00
          type: string
          maxLength: 15
          minLength: 0
          pattern: ^[0-9]+(\.[0-9]{2})?$
        MaxManagerRefundAmount:
          example: '0'
          description: >-
            Maximum refund amount allowed by the manager, in the currency
            supported by the terminal. The value should be in a decimal format,
            e.g. $40 = 40.00
          type: string
          maxLength: 15
          minLength: 0
          pattern: ^[0-9]+(\.[0-9]{2})?$
        MaxRefundTotalAmountPerSettlement:
          example: '0'
          description: >-
            Maximum refund amount allowed per settlement period, in the currency
            supported by the terminal. This value should be in a decimal format,
            e.g. $40 = 40.00
          type: string
          maxLength: 15
          minLength: 0
          pattern: ^[0-9]+(\.[0-9]{2})?$
        MaxAmountRefundPerDay:
          example: '40.00'
          description: >-
            Used to determine the maximum total amount of refunds for merchant
            per day, in the currency of related virtual terminal. This value
            should be in a decimal format, e.g. $40 = 40.00.
          type: string
          maxLength: 15
          minLength: 0
          pattern: ^[0-9]+(\.[0-9]{2})?$
        MaxCountRefundPerDay:
          example: '5'
          description: Used to determine the maximum total number of refunds
            for merchant per day
          type: string
          maxLength: 3
          minLength: 0
          pattern: ^[0-9]{1,3}$
        ForceOfflineEnabled:
          example: '0'
          description: Indicates if the force offline operation is enabled
            for the merchant
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        CashbackCeiling:
          example: '200'
          description: >-
            Maximum cashout amount allowed, in the currency supported by the
            terminal. The value should be in a decimal format,                  e.g.
            $40 = 40.00 - where the currency symbol depends on the region.
          type: string
          maxLength: 150
          minLength: 0
          pattern: ^[0-9]+(\.[0-9]{2})?$
        PrintMerchantReceipt:
          example: '1'
          description: >-
            Defines the merchant receipt print options.


            0-Never Print


            1-Prompt for print


            2-Always Print


            3-Always Print when Signature is Captured
          type: string
        PrintCustomerReceipt:
          example: '1'
          description: >-
            Defines the customer receipt print options.


            0-Never Print


            1-Prompt for print


            2-Always Print
          type: string
        ShowEmailReceiptOption:
          example: '0'
          description: Show e-mail option for customer receipts.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ShowEmailTermsAndConditions:
          example: '0'
          description: >-
            Determines if the device displays the Terms and Conditions text
            when a customer elects to receive an email receipt.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ReceiptGreeting:
          example: ''
          description: Placeholder for greeting text on the receipt.
          type: string
          maxLength: 10000
          minLength: 0
          pattern: ^(.|\n)*$
        ReceiptFooter:
          example: ''
          description: Receipt placeholder for footer text.
          type: string
          maxLength: 10000
          minLength: 0
          pattern: ^(.|\n)*$
        TipEnabled:
          example: '1'
          description: Enable purchase with tip transaction for this product
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        TipAdjustmentEnabled:
          example: '1'
          description: Enable tip adjustment. When enabled the device can
            support tip adjustment flow.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        TipCustomOptionEnabled:
          example: '1'
          description: Enable Custom option on the Tip screen for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        TipCustomOptionEntryMethod:
          example: '0'
          description: >-
            Specifies how the customer enters a custom tip amount. Additional
            Tip Amount - customer enters the tip amount to be added to the
            total (default). Total Amount Including Tip - customer enters
            the total transaction amount and tip is calculated automatically,
            used in markets where a round-up tip strategy is common. - Possible
            values are: Tip Amount-0,Total Amount including Tip-1.
          type: string
        TipLimit:
          example: '50'
          description: >-
            Defines the maximum percentage of the transaction amount that
            can be added as a tip. If this is exceeded, a warning is prompted.
          type: string
          maxLength: 150
          minLength: 0
          pattern: ^[0-9]+(\.[0-9]{2})?$
        TipLimitAmount:
          example: '0'
          description: >-
            Defines the maximum amount that can added to the transaction as
            a tip. When the tip amount exceeds this limit, a warning is displayed.
            Any tip amount is allowed when TipLimitAmount set to 0.
          type: string
          maxLength: 150
          minLength: 0
          pattern: ^[0-9]+(\.[0-9]{2})?$
        TipOverLimitAllowed:
          example: '1'
          description: >-
            When enabled, the tip that is higher than defined by limit parameters,
            TipLimit (percentage) and TipLimitAmount (amount), will be allowed
            after confirmation.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        TipPercentages:
          example: 5,10,15
          description: "Pre-Defines up to 4 tip percentage options for customers\
            \ to choose from, after entering the purchase amount for a transaction,\
            \ e.g. 10, 15, 20, 25% = 10%, 15%, 20%, 25% respectively.    \
            \             Note that the TipEnabled parameter must be enabled,\
            \ and that only whole numbers are accepted as percentage values,\
            \ e.g. 10% (not 10.5%).    Note also some terminal solutions only\
            \ support 3 pre-defined limits.                 "
          type: string
          maxLength: 150
          minLength: 0
          pattern: ^(\d{1,2},){0,3}(\d{1,2})$
        AutoSettlementEnabled:
          example: '0'
          description: Settlement runs on a schedule.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        AutoSettlementTime:
          example: '1:30'
          description: Settlement runs at this time everyday.
          type: string
          maxLength: 5
          minLength: 4
          pattern: ^(0[0-9]|1[0-9]|2[0-3]|[0-9]):[0-5][0-9]$
        SAFEnabled:
          example: '1'
          description: >-
            Whether SAF (offline approval when device cannot go online or
            reach host/gateway), 1-Enabled, 0-Not enabled
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        MaxSAFAccumulativeAmount:
          example: '1000'
          description: >-
            Maximum amount of all pending SAF transactions that are allowed.
            Once this limit is reached, the terminal cannot approve anymore
            transaction as SAF
          type: string
          minLength: 1
          maxLength: 15
          pattern: ^[0-9]+(\.[0-9]{2})?$
        MaxSAFTransactionAmount:
          example: '1000'
          description: >-
            Maximum amount for a single transaction to be put into SAF. This
            overrides card scheme settings.
          type: string
          minLength: 1
          maxLength: 15
          pattern: ^[0-9]+(\.[0-9]{2})?$
        MerchantSurcharge:
          description: Surcharging options for different card products
          type: array
          items:
            $ref: '#/components/schemas/CardProductSurcharge'
        RegionalParameters:
          $ref: '#/components/schemas/BaseRegionalParameters'
        CardHolderPresent:
          description: Select if card holder is present (Always/Prompt/Never)
          type: string
          enum:
          - Always
          - Prompt
          - Never
        MaxContactlessTransactionAmount:
          example: '45'
          description: Maximum limit for contact less payments
          type: string
          pattern: ^[0-9]+(\.[0-9]{2})?$
        CommsFailFloorLimit:
          example: '85'
          description: Maximum limit allowed by terminal when communications
            fail
          type: number
          format: decimal
          pattern: ^[0-9]+(\.[0-9]{2})?$
          deprecated: true
        VoiceAuthRefferalLimit:
          example: '48'
          description: Maximum limit allowed for voice referral
          type: number
          format: decimal
          pattern: ^[0-9]+(\.[0-9]{2})?$
        VoiceAuthRefferalCode:
          example: Th!s!sTh3C0d3
          description: Voice Referral floor limit authorisation code
          type: string
        CommerceTriggersEnabled:
          example: '1'
          description: Enable commerce triggers.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        ContactlessCvmRequiredLimit:
          example: '100'
          description: >-
            The contactless limit which CVM is required. If this is set it
            will override any defaults set for card brands in the EMV config
            - unless these defaults are more restrictive.
          type: string
          minLength: 12
          maxLength: 12
          pattern: ^[a-fA-F0-9]*$
        OfflineFloorLimit:
          example: '20'
          description: >-
            The limit which transactions can be approved offline. Generally
            this is now set to zero (0). If this is set it will override any
            defaults set for card brands in the EMV config - unless these
            defaults are more restrictive.
          type: string
          minLength: 12
          maxLength: 12
          pattern: ^[a-fA-F0-9]*$
        CashEnabled:
          example: '1'
          description: Enables Cash handling for the terminal.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        DualPricingEnabled:
          example: '1'
          description: Enable Dual Pricing for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        DccEnabled:
          example: '1'
          description: Enable Dynamic Currency Conversion for this merchant.
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
        DualPricingAdjustmentRate:
          example: '2.50'
          description: Adjustment rate in dual pricing payment option.
          type: number
          format: decimal
          pattern: ^-?\d+(\.\d+)?$
        DualPricingTipBasis:
          example: '0'
          description: "0 - When the original subtotal is set 0, the tip suggestions\
            \ \n    are calculated using the original subtotal requested from\
            \ the POS.\n\n1 - When the original subtotal is set 1, the tip\
            \ suggestions are calculated \n    using the adjusted subtotal\
            \ chosen by the customer from the dual pricing payment options."
          type: string
          minLength: 1
          maxLength: 1
        TransactionCurrencyCode_5F2A:
          example: 0590
          description: 5F2A Currency Code for the Terminal.
          type: string
          maxLength: 4
          minLength: 4
          pattern: ^[a-fA-F0-9]*$
        TransactionCurrencyExponent_5F36:
          example: '02'
          description: 5F36 Currency Exponent based on the country code for
            the Terminal.
          type: string
          maxLength: 2
          minLength: 2
          pattern: ^[a-fA-F0-9]*$
        CustomCurrencySymbol:
          example: AUD
          description: Custom Currency Code symbol for the Terminal based
            on country.
          type: string
          maxLength: 3
          minLength: 3
          pattern: ^[A-Z]*$
        CurrencyCode:
          $ref: '#/components/schemas/CurrencyCodeEnum'
        NumberFormatLocale:
          example: en-AU
          description: Locale for number formatting.
          type: string
          maxLength: 8
          minLength: 0
          pattern: ^[a-zA-Z-]*$
        SurchargeRefundMethod:
          example: '0'
          description: >-
            Surcharge Refund Method 0- Default When Purchase Surcharge is
            Not Enabled 2- When Purchase Surcharge Enabled
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-2]'
    entityAncestorsResponse:
      title: Entity Ancestors Response
      type: object
      description: A recursive list of ancestors for an Entity.
      properties:
        entityUid:
          maxLength: 36
          type: string
          description: The internally assigned identifier for the Entity.
          format: uuid
          example: 72d2da83-ac4f-11e8-a4d5-c2941f1b9e6a
        name:
          maxLength: 100
          pattern: ^(?!\s*$).+
          type: string
          description: >-
            A name to be assigned to this Entity. This can be the trading
            name or business name.
          example: Merchant Name
        entityType:
          $ref: '#/components/schemas/EntityRoleTypeEnum'
        friendlyName:
          maxLength: 100
          pattern: ^(?!\s*$).+
          type: string
          description: >-
            A friendly name to be assigned to this entity. This can be the
            field used for the search filter
          example: Merchant store name
        poiCrossEntityAccessAllowed:
          type: boolean
          description: True if POI cross Entity acceess should be allowed
            on this Entity.
        parent:
          $ref: '#/components/schemas/entityAncestorsResponse'
    TerminalParameters:
      title: Parameters
      description: Deprecated - Please use `paymentAppParameters`.
      type: object
      deprecated: true
      properties:
        transactionOptions:
          $ref: '#/components/schemas/TransactionOptions'
        limits:
          $ref: '#/components/schemas/TransactionLimits'
        receiptOptions:
          $ref: '#/components/schemas/ReceiptOptions'
        tipOptions:
          $ref: '#/components/schemas/TipOptions'
    PagingPageSize:
      description: Page size for returned records.
      type: integer
      example: 50
      minimum: 1
      maximum: 100
      default: 50
    PagingPageNumber:
      description: Page number for records.
      type: integer
      minimum: 1
      example: 1
      default: 1
    PackageDetails:
      description: Select the base package, hardware and additional services
        for this order.
      type: object
      properties:
        portfolioUid:
          description: >-
            Verifone ID for the Portfolio Selected. If this is not provided
            then a default portfolio will be used.
          type: string
          format: uuid
          example: 32c480b5-4dfb-4c53-959f-49edf45a0931
        basePackageBundle:
          $ref: '#/components/schemas/BundleAndPrice'
        servicePackages:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/ServicePackages'
        deliveryPackage:
          $ref: '#/components/schemas/BundleAndPriceAndData'
      required:
      - basePackageBundle
    PackageBundleId:
      description: The Verifone allocated ID for the package bundle.
      type: string
      pattern: ^[A-Za-z0-9_-]*$
      maxLength: 100
      example: PREMIUM-36MONTH
    OrderType:
      type: string
      enum:
      - POIOrder
      - MerchantOrder
      - POIMaintenanceOrder
      - MerchantMaintenanceOrder
      - POIAccessoryOrder
      - AdditionalServicesOrder
      - HardwareOrder
      default: MerchantOrder
    OrderStats:
      type: object
      description: Order Statistics
      properties:
        minsSinceCreatedToLastUpdate:
          type: integer
          description: Number of minutes since last status update and created
            order time
          default: 0
        minsSinceLastStatusUpdate:
          type: integer
          description: Number of minutes (if > 0) since last status update
          default: 0
    OrderReference:
      description: Client reference for the Order.
      type: string
      example: ORD-1234
      minLength: 1
    OrderId:
      description: Verifone allocated ID for the Order.
      type: string
      format: uuid
      example: 32c480b5-4dfb-4c53-959f-49edf45a0931
    OracleAccountId:
      description: Oracle Account Id.
      type: integer
      example: 12031585
    NotificationReminders:
      description: A container for all supported notification reminders.
      type: object
      properties:
        econtract:
          $ref: '#/components/schemas/NotificationReminder'
        draft:
          $ref: '#/components/schemas/NotificationReminder'
        docRequired:
          $ref: '#/components/schemas/NotificationReminder'
      additionalProperties: false
    PoiNetworkConfig:
      description: Network settings of the POI
      type: object
      properties:
        ipAddress:
          $ref: '#/components/schemas/IpAddressv4v6'
        ipGateway:
          $ref: '#/components/schemas/IpAddressv4v6'
        subnetMask:
          $ref: '#/components/schemas/IpAddressv4v6'
        networkPrefix:
          $ref: '#/components/schemas/IpAddressv4v6'
        dns1:
          $ref: '#/components/schemas/IpAddressv4v6'
        dns2:
          $ref: '#/components/schemas/IpAddressv4v6'
        wifiSSID:
          type: string
          minLength: 2
          maxLength: 32
        wifiPassword:
          type: string
        wpaEncryptionMethod:
          type: string
          minLength: 2
          maxLength: 10
    ContactName:
      allOf:
      - $ref: '#/components/schemas/Name'
    PagingMetadata:
      title: Paging Metadata Details
      description: Metadata for searching/paging.
      type: object
      properties:
        totalPages:
          $ref: '#/components/schemas/PagingTotalPages'
        pageNumber:
          $ref: '#/components/schemas/PagingPageNumber'
        pageSize:
          $ref: '#/components/schemas/PagingPageSize'
        totalItems:
          $ref: '#/components/schemas/PagingTotalItems'
      required:
      - totalPages
      - pageNumber
      - pageSize
      - totalItems
    MerchantName:
      description: The primary merchant name, e.g. "McDonalds".
      type: string
      pattern: ^(?!\\s*$).+
      minLength: 1
      maxLength: 100
    GiftMerchantId:
      description: Giftcard Provider assigned Merchant Identifier.
      type: string
      pattern: ^[0-9]+$
      maxLength: 30
      example: '1111111'
    SvsMerchantId:
      description: SVS assigned Merchant Identifier.
      type: string
      maxLength: 30
      pattern: ^[0-9]+$
      example: '1111111'
    MerchantCompanyEntityUid:
      description: The Verifone allocated unique ID for this merchant company.
      type: string
      format: uuid
      example: 14f5ea24-cc4f-11e8-a8d5-f2801f1b9fd9
    MerchantNameWrapper:
      description: Simple Wrapper object for Merchant Name.Used by UI.
      type: object
      properties:
        merchantName:
          $ref: '#/components/schemas/MerchantName'
    BaseMerchant:
      description: details of the merchant
      type: object
      properties:
        merchantType:
          type: string
        merchantName:
          $ref: '#/components/schemas/MerchantName'
        merchantId:
          maxLength: 75
          pattern: ^[a-zA-Z0-9]+$
          type: string
          description: The identifier assigned to this Merchant Entity.
        merchantLogoUrl:
          pattern: ^(https?)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]
          type: string
          description: Valid merchant logo url
        altVfiEntityId:
          $ref: '#/components/schemas/AltVfiEntityId'
        parentEntityUid:
          type: string
          format: uuid
          description: >-
            If specified this will add the merchant company or site under
            a specific entity within Verifone systems.
        industry:
          $ref: '#/components/schemas/Industry'
        primaryContact:
          $ref: '#/components/schemas/ContactType'
        requestedDateOfShipment:
          $ref: '#/components/schemas/RequestedDateOfShipment'
        mcc:
          $ref: '#/components/schemas/MCC'
        parameters:
          $ref: '#/components/schemas/TerminalParameters'
        paymentAppParameters:
          $ref: '#/components/schemas/PaymentAppParameters'
        settlement:
          $ref: '#/components/schemas/SettlementDetails'
        entityUid:
          $ref: '#/components/schemas/EntityUidDeprecated'
        tradingAddress:
          $ref: '#/components/schemas/AddressWithoutType'
        shippingAddress:
          $ref: '#/components/schemas/AddressWithoutType'
        billingAddress:
          $ref: '#/components/schemas/AddressWithoutType'
        companyLabels:
          type: array
          description: >-
            Free form labels/tags that can be attached to an entity to enable
            grouping and searching
          maxLength: 10
          items:
            type: string
            description: >-
              Logical grouping of companies. A tag or label which is meaningful
              to the customer which groups merchant company legal entities,
              e.g Restaurants, Retail, Timezone etc.
            maxLength: 30
        siteLabels:
          type: array
          description: >-
            Free form labels/tags that can be attached to an entity to enable
            grouping and searching
          maxLength: 10
          items:
            type: string
            description: >-
              Logical grouping of sites. A tag or label which is meaningful
              to the customer which groups merchant sites, e.g Area, Timezone
              etc.
            maxLength: 30
      discriminator:
        propertyName: merchantType
        mapping:
          NewCompanyAndSite: '#/components/schemas/SmallMerchant'
          ExistingCompanyNewSite: '#/components/schemas/ExistingCompanyNewSite'
          SmallMerchant: '#/components/schemas/SmallMerchant'
      required:
      - contacts
      - mcc
      - merchantType
      - tradingAddress
      - primaryContact
      oneOf:
      - title: NewCompanyAndSite
        allOf:
        - $ref: '#/components/schemas/SmallMerchant'
      - title: ExistingCompanyNewSite
        allOf:
        - $ref: '#/components/schemas/ExistingCompanyNewSite'
      - title: SmallMerchant
        allOf:
        - $ref: '#/components/schemas/SmallMerchant'
    HardwareMerchant:
      description: details of the merchant
      type: object
      properties:
        merchantName:
          $ref: '#/components/schemas/MerchantName'
        primaryContact:
          $ref: '#/components/schemas/ContactType'
        requestedDateOfShipment:
          $ref: '#/components/schemas/RequestedDateOfShipment'
        mcc:
          $ref: '#/components/schemas/MCC'
        tradingAddress:
          $ref: '#/components/schemas/AddressWithoutType'
        shippingAddress:
          $ref: '#/components/schemas/AddressWithoutType'
        billingAddress:
          $ref: '#/components/schemas/AddressWithoutType'
        companyAddress:
          $ref: '#/components/schemas/AddressWithoutType'
        siteReferenceId:
          $ref: '#/components/schemas/SiteReferenceId'
        siteName:
          $ref: '#/components/schemas/SiteName'
        openingHours:
          type: array
          description: The list of opening periods per week day.
          items:
            $ref: '#/components/schemas/EntityOpeningHours'
          minItems: 1
        pois:
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/HardwarePoiType'
      required:
      - primaryContact
    MerchantIdUpdate:
      title: MerchantIdUpdate
      type: object
      description: >-
        Merchant ID rotation — replaces oldMerchantId with newMerchantId on
        matching entity and PPC records.
      required:
      - oldMerchantId
      - newMerchantId
      properties:
        oldMerchantId:
          type: string
          minLength: 1
          maxLength: 75
          pattern: ^[a-zA-Z0-9]+$
          description: >-
            The current MerchantId assigned to the entity site and/or PPC.
            Used as the lookup/match key.
        newMerchantId:
          type: string
          minLength: 1
          maxLength: 75
          pattern: ^[a-zA-Z0-9]+$
          description: The replacement MerchantId to apply wherever oldMerchantId
            is found.
    MCC:
      description: >-
        The Merchant Category Code (MCC). A 4 digit Code classifying the type
        of business being done by the card acceptor or Merchant (in accordance
        with ISO 18245).
      type: string
      minLength: 4
      maxLength: 4
      pattern: ^[0-9]{4,4}$
      example: '5411'
    MastercardMAID:
      description: >-
        Mastercard Assigned ID. This is an optional ID assigned to a merchant
        commonly used for discounts/special interchange fees.
      type: string
      minLength: 6
      maxLength: 6
      pattern: ^[a-zA-Z0-9]*$
    TransactionLimits:
      type: object
      properties:
        maxAmountPurchase:
          $ref: '#/components/schemas/AmountSimple'
        maxAmountRefundCashier:
          $ref: '#/components/schemas/AmountSimple'
        maxAmountRefundManager:
          $ref: '#/components/schemas/AmountSimple'
        maxAmountRefundPerSettlement:
          $ref: '#/components/schemas/AmountSimple'
        maxAmountCashout:
          $ref: '#/components/schemas/AmountSimple'
    PoiLaneInformation:
      description: Lane in which the POI is to be configured.
      type: object
      properties:
        customerLaneId:
          type: string
          minLength: 1
          maxLength: 255
        customerLaneDesignator:
          type: string
          minLength: 1
          maxLength: 255
        laneNotes:
          type: string
          maxLength: 200
    UserLoginType:
      description: User login details.
      type: object
      properties:
        name:
          $ref: '#/components/schemas/ContactName'
        email:
          $ref: '#/components/schemas/EmailAddress'
        phoneNumber:
          $ref: '#/components/schemas/Phone'
      required:
      - name
      - email
    BatchLineItem:
      type: object
      properties:
        orderId:
          $ref: '#/components/schemas/OrderId'
        requestId:
          type: string
          maxLength: 36
          description: Unique value per line per file
        entityType:
          type: string
          enum:
          - MERCHANT_COMPANY
          - MERCHANT_SITE
          - POI
          description: The type of entity that the operation is performed
            on
        operation:
          type: string
          enum:
          - PARTIAL_UPDATE
          - TRADING_ADDRESS_UPDATE
          - DELETE
          description: The operation performed on the entity
        entityLogicalId:
          type: string
          description: The logical identifier of the entity.This could be
            a MID or a TID
          maxLength: 30
        keyValues:
          type: string
          description: Operational parameters defined as key-value pairs
        createdDate:
          type: string
          format: date-time
        status:
          type: string
          example: '200'
          description: HTTP Status returned by order API
        response:
          type: string
          description: Response from order API
          example: Merchant Entity Updated Successfully
        orderStatus:
          description: Status from order API
          $ref: '#/components/schemas/OrderStatusEnum'
    TidPoolItem:
      description: A TID from the pool.
      type: object
      properties:
        altVfiPoiId:
          $ref: '#/components/schemas/AltVfiPoiId'
        createdDate:
          type: string
          format: date-time
        modifiedDate:
          type: string
          format: date-time
        reference:
          type: string
          description: Order reference used while adding TID to pool
        status:
          $ref: '#/components/schemas/TidPoolStatusEnum'
    SignersInformation:
      description: Information on the signers in the request.
      type: object
      properties:
        providerRef:
          description: Signing Provider reference to the signers signing request.
          type: string
        contact:
          $ref: '#/components/schemas/ContactType'
        signed:
          description: Has the signer signed the contract.
          type: boolean
          default: false
        signedDateTime:
          description: Date/Time signer signed the request.
          type: string
          format: date-time
        signingLink:
          description: This is the link used for signing the contract.
          type: string
      required:
      - contact
    ServicePackageWithPPC:
      type: object
      allOf:
      - $ref: '#/components/schemas/ServicePackages'
      - properties:
          contractUid:
            $ref: '#/components/schemas/ContractUid'
      required:
      - packageBundleId
    ServicePackages:
      type: object
      properties:
        packageBundleId:
          $ref: '#/components/schemas/PackageBundleId'
        adjustedPrices:
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/AdjustedPriceType'
        processorParameters:
          $ref: '#/components/schemas/BaseProcessorParameters'
        additionalPackageData:
          type: array
          description: >-
            Input data required to configure the package. For example some
            packages require a merchant ID.
          maxItems: 50
          items:
            $ref: '#/components/schemas/VariableResponseType'
        threeDSMerchantIdentifiers:
          $ref: '#/components/schemas/ThreeDSecureMerchantIdentifiers'
      required:
      - packageBundleId
    MerchantTypeEnum:
      description: An order will be in one of the following merchant type
      type: string
      enum:
      - NewCompanyAndSite
      - ExistingCompanyNewSite
      - SmallMerchant
    ResellerEventDataBulkUpdateItem:
      type: object
      description: >-
        Single item in a bulk update request, identifying the record and providing
        the updated revenue share percentage.
      required:
      - merchantRegistrationNumber
      - eventId
      - eventRevenueSharePercentage
      properties:
        merchantRegistrationNumber:
          type: string
          description: Merchant registration number identifying the record
            to update.
        eventId:
          type: string
          description: Event identifier identifying the record to update.
        eventRevenueSharePercentage:
          type: number
          description: >
            Updated commission percentage as a decimal number (e.g. 20 or
            12.5 meaning 20% or 12.5%). Conversion is the caller's responsibility:
            TCS requires basis points (multiply by 100); display requires
            a % suffix.
    AdditionalDocument:
      type: object
      description: Upload Document Meta Info.
      properties:
        documentName:
          type: string
          maxLength: 100
          description: Name of the document.
        contentType:
          type: string
          $ref: '#/components/schemas/ContentTypeEnum'
          maxLength: 100
          description: Content type of the document.
        contentLength:
          type: integer
          format: int64
          description: >
            Size of the uploaded document in bytes.  Maximum allowed is 8
            MB (8388608 bytes).
          maximum: 8388608
      required:
      - documentName
      - contentType
    ResellerEventDataBulkDeleteItem:
      type: object
      description: Single item in a bulk delete request, identifying the record
        to delete.
      required:
      - merchantRegistrationNumber
      - eventId
      properties:
        merchantRegistrationNumber:
          type: string
          description: Merchant registration number identifying the record
            to delete.
        eventId:
          type: string
          description: Event identifier identifying the record to delete.
    ResellerEventDataBulkOperationResult:
      type: object
      description: Per-record result for bulk upsert, update, and delete operations.
      required:
      - merchantRegistrationNumber
      - eventId
      - success
      properties:
        merchantRegistrationNumber:
          type: string
          description: Merchant registration number of the record this result
            refers to.
        eventId:
          type: string
          description: Event identifier of the record this result refers to.
        success:
          type: boolean
          description: Whether the operation succeeded for this record.
        errorMessage:
          type: string
          description: Error detail when success is false. Omitted on success.
        modifiedDate:
          type: string
          format: date-time
          readOnly: true
          description: Timestamp when the record was last modified. Present
            on success.
    ReferenceContactType:
      description: Company and contact details for reference
      type: object
      properties:
        contact:
          $ref: '#/components/schemas/ContactType'
        companyName:
          type: string
          description: Name of the company.
          example: Joe's bikes
        accountNumber:
          type: string
          description: The account Number of the reference
          example: '23008275'
        referenceType:
          type: string
          description: Type of reference.
          enum:
          - BANK
          - TRADE
      required:
      - contact
      - companyName
      - referenceType
    PoiUidWithAcquirerIds:
      description: POI identifier with optional acquirer TID mappings.
      type: object
      properties:
        poiUid:
          $ref: '#/components/schemas/PoiUid'
        acquirerPoiIds:
          type: array
          maxItems: 50
          description: Key value pairs linking acquirer name to their TID
            for this POI.
          items:
            $ref: '#/components/schemas/VariableResponseType'
      required:
      - poiUid
    BasePoiType:
      title: Point of Interaction
      description: >-
        The Point of Interaction. This may refer to a number of different
        entities, but is primarily considered to be the Terminal. This object
        contains the POI details as they pertain to an individual payment,
        an instance of POI. This does not attempt to define all the settings
        or attributes that may be associated to a POI. Also, for a specific
        Acquirer/Contract combination there may be a different instance of
        the POI(TID). These different relationships are not part of this object.
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PoiTypeEnum'
        poiId:
          maxLength: 36
          minLength: 1
          type: string
          description: Point of interaction identifier (Often referred to
            as Terminal ID)
        subPoiId:
          maxLength: 15
          minLength: 1
          type: string
          description: >-
            An optional secondary identifier for a point of interaction (Terminal).
            This is relevant for some markets where an additional terminal
            number is required.
        altVfiPoiId:
          $ref: '#/components/schemas/AltVfiPoiId'
        estateManagementId:
          type: string
          description: >-
            This has very specific meaning as an identifier used for Estate
            Management. This should generally be left blank

            as Verifone will allocate this ID.


            In VHQ this is related to the deviceId.
        estateManagementQrCode:
          type: string
          description: >-
            Base64 of a .png QR code representing the estateManagementId.
            Generated by the SelfSignup Service and patched onto the POI before
            Oracle/B2B boarding.
          example: iVBORw0KGgoAAAANSUhEUgAAAWYAAACeCAYAAAABkKDWAAAAAXNSR0I.....
        serialNumber:
          $ref: '#/components/schemas/SerialNumber'
        laneInformation:
          $ref: '#/components/schemas/PoiLaneInformation'
        networkConfig:
          $ref: '#/components/schemas/PoiNetworkConfig'
        name:
          maxLength: 35
          type: string
          description: The name used to represent this POI. This is a label
            not an identifier.
        description:
          maxLength: 30
          type: string
          description: An optional value where some Merchant specific entry
            is associated with a POI.
        status:
          $ref: '#/components/schemas/PoiStatusEnum'
        cutoverTime:
          $ref: '#/components/schemas/CutoverTime'
        poiUid:
          $ref: '#/components/schemas/PoiUid'
        acquirerPoiIds:
          maxItems: 50
          type: array
          description: Key value Pairs linking acquirer POI with their TID
          items:
            $ref: '#/components/schemas/VariableResponseType'
        poiLabels:
          type: array
          description: >-
            Free form labels/tags that can be attached to an entity to enable
            grouping and searching
          maxLength: 10
          items:
            type: string
            description: >-
              Logical grouping of poi's. A tag or label which is meaningful
              to the customer which groups pois, e.g Area, Timezone, Restaurant,
              Retail etc
            maxLength: 30
        activationCode:
          description: Activation code for the SoftPOS solution which is generated
            by VHQ.
          type: string
          pattern: ^[A-Z0-9-]{14}$
          example: 89EG-1A5F-P3T2
        vhqCustomerId:
          type: string
          description: Customer ID of the VHQ instance.
        vhqUrl:
          type: string
          description: URL of the VHQ Instance
          example: https://qa.apac.verifonehq.net
      discriminator:
        propertyName: type
        mapping:
          POINT_OF_SALE: '#/components/schemas/PoiType'
          MULTI_MERCHANT_CHILD: '#/components/schemas/MultiMerchantChildPoiType'
          STANDALONE: '#/components/schemas/PoiType'
          ELECTRONIC_CASH_REGISTER: '#/components/schemas/PoiType'
          UNATTENDED: '#/components/schemas/PoiType'
          MOBILE: '#/components/schemas/PoiType'
          VIRTUAL: '#/components/schemas/VirtualPoiType'
      required:
      - status
      - type
      oneOf:
      - title: POINT_OF_SALE
        allOf:
        - $ref: '#/components/schemas/PoiType'
      - title: MULTI_MERCHANT_CHILD
        allOf:
        - $ref: '#/components/schemas/MultiMerchantChildPoiType'
      - title: STANDALONE
        allOf:
        - $ref: '#/components/schemas/PoiType'
      - title: ELECTRONIC_CASH_REGISTER
        allOf:
        - $ref: '#/components/schemas/PoiType'
      - title: UNATTENDED
        allOf:
        - $ref: '#/components/schemas/PoiType'
      - title: MOBILE
        allOf:
        - $ref: '#/components/schemas/PoiType'
      - title: VIRTUAL
        allOf:
        - $ref: '#/components/schemas/VirtualPoiType'
    PoiSummary:
      description: Summary of a single POI.
      type: object
      properties:
        poiUid:
          type: string
          format: uuid
          description: Verifone POI identifier.
        estateManagementId:
          type: string
          description: Estate management identifier.
        poiName:
          type: string
          description: Name of the POI.
    HardwarePoiType:
      title: Point of Interaction
      description: >-
        The Point of Interaction. This may refer to a number of different
        entities, but is primarily considered to be the Terminal. This object
        contains the POI details as they pertain to an individual payment,
        an instance of POI. This does not attempt to define all the settings
        or attributes that may be associated to a POI. Also, for a specific
        Acquirer/Contract combination there may be a different instance of
        the POI(TID). These different relationships are not part of this object.
      type: object
      properties:
        devicePackage:
          $ref: '#/components/schemas/BundleAndSerialNumberAndQuantity'
        additionalDevicePackages:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/BundleAndSerialNumberAndQuantity'
    Phone:
      title: Phone number
      description: A simple Phone Number
      type: object
      additionalProperties: false
      properties:
        callingCode:
          description: >-
            Country Calling Code. Mapped to PARTY_PHONE.CALLING_CODE or VENUE_PHONE.CALLING_CODE
          type: string
        value:
          description: The actual phone number less country code and/or extension.
          type: string
          minLength: 5
        extension:
          description: The internal extension number where applicable or known.
          type: string
        isPrimary:
          description: Indicates that the phone is a the primary phone. Mapped
            to PARTY_PHONE_PRIMARY
          type: boolean
          default: false
        phoneType:
          $ref: '#/components/schemas/PhoneTypeEnum'
      required:
      - value
      - phoneType
    Organisation:
      properties:
        merchantCompanyEntityUid:
          $ref: '#/components/schemas/MerchantCompanyEntityUid'
        merchantCompanyName:
          $ref: '#/components/schemas/MerchantName'
      required:
      - merchantCompanyEntityUid
      - merchantCompanyName
    OneOfOrderResponse:
      description: >-
        Supports returning oneOf the possible order types. The returned value
        will contain the `orderType`.
      oneOf:
      - title: POIOrder
        allOf:
        - $ref: '#/components/schemas/PoiOrderResponse'
      - title: MerchantOrder
        allOf:
        - $ref: '#/components/schemas/MerchantOrderResponse'
      - title: POIMaintenanceOrder
        allOf:
        - $ref: '#/components/schemas/PoiMaintenanceOrderResponse'
      - title: MerchantMaintenanceOrder
        allOf:
        - $ref: '#/components/schemas/MerchantMaintenanceOrder'
      - title: POIAccessoryOrder
        allOf:
        - $ref: '#/components/schemas/PoiAccessoryOrderResponse'
      - title: AdditionalServicesOrder
        allOf:
        - $ref: '#/components/schemas/AdditionalServicesOrderResponse'
      - title: HardwareOrder
        allOf:
        - $ref: '#/components/schemas/HardwareOrderResponse'
      discriminator:
        propertyName: orderType
        mapping:
          POIOrder: '#/components/schemas/PoiOrderResponse'
          MerchantOrder: '#/components/schemas/MerchantOrderResponse'
          POIMaintenanceOrder: '#/components/schemas/PoiMaintenanceOrderResponse'
          MerchantMaintenanceOrder: '#/components/schemas/MerchantMaintenanceOrder'
          POIAccessoryOrder: '#/components/schemas/PoiAccessoryOrderResponse'
          AdditionalServicesOrder: '#/components/schemas/AdditionalServicesOrderResponse'
          HardwareOrder: '#/components/schemas/HardwareOrderResponse'
    EntityOpeningHours:
      title: Opening Hours
      description: An dictionary map of the different opening hours for an
        Entity
      type: object
      properties:
        day:
          $ref: '#/components/schemas/DayOfWeekEnum'
        times:
          $ref: '#/components/schemas/EntityOpeningPeriod'
      required:
      - day
      - times
    Notification:
      description: Object containing the sent date-time and template used
        for the notification.
      type: object
      properties:
        sentDateTime:
          description: Date and Time when the notification was sent.
          type: string
          format: date-time
        template:
          description: Template name used for the notification.
          type: string
        responseReferenceId:
          description: An ID from Messaging Service's response.
          type: string
    Point3D:
      title: Point 3D
      description: Point in 3D space
      type: array
      minItems: 2
      maxItems: 3
      externalDocs:
        url: http://geojson.org/geojson-spec.html#id2
      items:
        type: number
    MerchantDocument:
      type: object
      description: Merchant Document Info.
      allOf:
      - $ref: '#/components/schemas/RequiredDocument'
      - properties:
          uploadedDate:
            type: string
            description: The uploaded date for this document.
            format: date-time
          modifiedDate:
            type: string
            description: The modified date for this document on status change.
            format: date-time
    ReplacedDevice:
      title: ReplacedDevice
      type: object
      description: A device being replaced under a replacement agreement.
      required:
      - serialNumber
      - deviceModel
      properties:
        serialNumber:
          type: string
          minLength: 1
          maxLength: 12
          description: Serial number of the replaced device.
        deviceModel:
          type: string
          minLength: 1
          maxLength: 100
          description: Model name of the replaced device.
    Creator:
      properties:
        userUid:
          $ref: '#/components/schemas/CreatedUserId'
        name:
          $ref: '#/components/schemas/UserName'
      required:
      - userUid
      - name
    ContactAddressType:
      description: A Contact and their address details.
      type: object
      properties:
        contact:
          $ref: '#/components/schemas/ContractContactType'
        addressDetails:
          $ref: '#/components/schemas/BaseAddress'
        dateOfBirth:
          type: string
          description: Date of Birth
          format: date
        placeOfBirth:
          type: string
          description: Place of Birth
        isIDCheckRequired:
          type: boolean
          description: Is this contact's ID required to be checked
          default: false
        isContractSignatureRequired:
          type: boolean
          description: Is this contact's signature required
          default: false
        isLegalRepresentative:
          type: boolean
          description: Is this contact a legal representative
          default: false
        isAuthorizedRepresentative:
          type: boolean
          description: Is this contact an authorized representative
          default: false
        isBeneficiaryOwner:
          type: boolean
          description: Is a beneficiary owner
          default: false
        isPoliticallyExposed:
          type: boolean
          description: Is this contact a politically exposed person
          default: false
        representativeType:
          type: string
          description: Type of representative when this contact is legal or
            authorized rep
          enum:
          - GENERAL_COMMERCIAL_POWER
          - LIMITED_COMMERCIAL_POWER
          - NOT_APPLICABLE
      required:
      - contact
      - addressDetails
    entityDescendentsResponse:
      title: Entity Descendents Response
      type: object
      description: Entity Object with internal identifier.
      properties:
        entityUid:
          maxLength: 36
          type: string
          description: The internally assigned identifier for the Entity.
          format: uuid
          example: 72d2da83-ac4f-11e8-a4d5-c2941f1b9e6a
        name:
          maxLength: 100
          pattern: ^(?!\s*$).+
          type: string
          description: >-
            A name to be assigned to this Entity. This can be the trading
            name or business name.
          example: Merchant Name
        entityType:
          $ref: '#/components/schemas/EntityRoleTypeEnum'
        children:
          type: array
          description: The related children.
          items:
            $ref: '#/components/schemas/entityDescendentsResponse'
          default: []
    OrderCancellation:
      type: object
      properties:
        cancelReasonEnum:
          $ref: '#/components/schemas/CancelReasonEnum'
        cancelAdditionalReason:
          $ref: '#/components/schemas/CancelAdditionalReason'
        cancelledUserUid:
          description: Unique identifier (UUID) of the user who performed
            the cancellation.
          type: string
          format: uuid
          example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
        cancelledBy:
          $ref: '#/components/schemas/UserName'
        cancelledDate:
          type: string
          description: Date and time when the order was cancelled, in UTC.
          format: date-time
      required:
      - cancelReasonEnum
    BusinessIdentifier:
      description: Unique identifier for a company that is legally registered
        to trade.
      type: object
      properties:
        identifierType:
          description: >-
            `ABN`: Australian Business Number

            `cocNo`: Chamber of Commerce number
          type: string
          enum:
          - ABN
          - cocNo
        value:
          type: string
      required:
      - identifierType
      - value
    ContentTypeEnum:
      type: string
      description: Supported content type for documents.
      enum:
      - application/pdf
      - image/png
      - image/jpeg
      - application/msword
      - application/vnd.openxmlformats-officedocument.wordprocessingml.document
      - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
      - application/vnd.ms-excel
    AdjustedPriceType:
      type: object
      properties:
        priceModel:
          type: string
          description: Pricing Model
          enum:
          - MONTHLY_FEE
          - MONTHLY_FEE_PER_DEVICE
          - MINIMUM_AMT_PER_TRX
          - AMT_PER_TRX
          - PERC_PER_TRX
          - ONE_TIME
          - YEARLY_FEE
          - QUARTERLY_FEE
        price:
          $ref: '#/components/schemas/AmountSimple'
    VariableResponseType:
      description: Variable/Value Pairs.
      type: object
      properties:
        variableName:
          type: string
          description: Variable name (this would be provided by Verifone)
          example: VAT_ID or BAX_ID
          pattern: ^[A-Za-z0-9_-]*$
        variableValue:
          type: string
          maxLength: 10000
          description: Value of the variable
          example: '1234566'
    OracleAccountDetails:
      properties:
        oracleAccountId:
          $ref: '#/components/schemas/OracleAccountId'
        userUid:
          $ref: '#/components/schemas/CreatedUserId'
        merchantCompanyEntityUid:
          $ref: '#/components/schemas/MerchantCompanyEntityUid'
      required:
      - oracleAccountId
    CardProductSurcharge:
      description: Surcharging settings
      type: object
      properties:
        ProductId:
          type: string
          description: >-
            Link to the card product which this surcharge applies to. Contact
            Verifone for card products applicable to your estate.
          pattern: ^.*$
          minLength: 0
          maxLength: 150
        SurchargeType:
          example: '0'
          description: >-
            Surcharge Type (Domestic)


            0 - Not configured


            1 - Fixed Amount


            2 - Percentage
          type: string
          minLength: 1
          maxLength: 1
          pattern: '[0-2]'
        SurchargeValue:
          example: '0'
          description: >-
            Specifies the value of the surcharge depending on the surcharge
            type. Can be a fixed value (eg 2.5 = $2.50) or a percentage (eg
            1.2 = 1.2%).
          type: string
          minLength: 1
          maxLength: 150
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
        MaxSurchargeAdjAmount:
          example: '50.00'
          description: >-
            Applicable only when Surcharge Type is Percentage. Amount is in
            default Terminal currency, represented as a decimal number. Specifies
            the maximum surcharge amount; if the calculated surcharge is above
            this value, the Surcharge Max Adjustment amount will be applied
            instead.
          type: string
          minLength: 1
          maxLength: 15
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          default: '0'
        MinSurchargeAdjAmount:
          example: '0'
          description: >-
            Applicable only when Surcharge Type is Percentage. Amount is in
            default Terminal currency, represented as a decimal number. Specifies
            the minimum surcharge amount; if the calculated surcharge is below
            this value, the Surcharge Min Adjustment amount will be applied
            instead.
          type: string
          minLength: 1
          maxLength: 15
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          default: '0'
        MaxSurchargeableAmount:
          example: '0'
          description: >-
            Amount is in default Terminal currency, represented as a decimal
            number. When the transaction amount is above this maximum, no
            surcharge will be applied.
          type: string
          minLength: 1
          maxLength: 15
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          default: '0'
        MinSurchargeableAmount:
          example: '0'
          description: >-
            Amount is in default Terminal currency, represented as a decimal
            number. When the transaction amount is below this minimum, no
            surcharge will be applied.
          type: string
          minLength: 1
          maxLength: 15
          pattern: ^[0-9]+(\.[0-9]{1,2})?$
          default: '0'
        UseDomesticConfigForInternational:
          example: '1'
          description: >-
            When enabled (true), surcharging of transactions that utilize
            international payment methods follows the surcharge parameter
            settings and rules as defined for domestic payment methods; and
            the international configuration variants are ignored. When disabled
            (false), unique International configuration parameters will control
            surcharging of transactions that utilize international payment
            methods.
          type: string
          default: '1'
          minLength: 1
          maxLength: 1
          pattern: '[0-1]'
      required:
      - ProductId
      - SurchargeType
      - SurchargeValue
    IpAddressv4v6:
      description: A valid IPV4 or V6 address.
      type: string
      anyOf:
      - format: ipv4
        description: 'Example : 232.100.1.1'
      - format: ipv6
        description: 'Example : 2405:204:638b:9daa:f3c8:a903:3227:c712'
    InternalAllocatedInformation:
      description: >-
        Internally allocated identifiers. This is for verifone use only and
        is subject to change.
      type: object
      properties:
        oracleOrderNumber:
          description: The order number which Oracle allocated as part of
            the order.
          type: number
        oracleShippingTrackingReference:
          description: The order shipping reference which Oracle allocated
            as part of the order.
          type: string
        kycReportUid:
          description: KYC report generated for this order.
          type: string
          format: uuid
        tokenScopeUid:
          description: Token scope generated for this order.
          type: string
          format: uuid
        extendedDetails:
          $ref: '#/components/schemas/ExtendedDetails'
        orderStats:
          $ref: '#/components/schemas/OrderStats'
        vmssApplication:
          $ref: '#/components/schemas/VmssApplication'
        salesforceApplicationId:
          description: The Application ID allocated by Salesforce.
          type: string
        signingInformation:
          $ref: '#/components/schemas/SigningInformation'
        econtractNotificationReminder:
          description: E-Contract Notification Reminder Sent Details.
          $ref: '#/components/schemas/NotificationReminder'
        draftNotificationReminder:
          description: Draft Notification Reminder Sent Details.
          $ref: '#/components/schemas/NotificationReminder'
        notificationReminders:
          description: A container for all supported notification reminders.
          $ref: '#/components/schemas/NotificationReminders'
        customerOrderLink:
          description: Details of Customer Order Link.
          $ref: '#/components/schemas/CustomerOrderLink'
        cancellationHistory:
          type: array
          description: List of cancellation records for the customer order.
          items:
            $ref: '#/components/schemas/OrderCancellation'
        externalOnboarding:
          type: object
          description: External merchant onboarding details
          $ref: '#/components/schemas/ExternalOnboarding'
    InternalAllocatedInformationNewCompanyAndSite:
      description: >-
        Internally allocated identifiers. This is for verifone use only and
        is subject to change.
      type: object
      allOf:
      - $ref: '#/components/schemas/InternalAllocatedInformation'
      - properties:
          ecomSiteEntityUid:
            type: string
            format: uuid
            description: Entity uid of the ecom site.
    Industry:
      title: Industry Type
      description: The Industry type applicable to a Merchant.
      type: string
      enum:
      - AIRLINE
      - DIRECT
      - VEHICLE_RENTAL
      - LODGING
      - MOTO
      - PETROLEUM
      - QUICK_SERVICE_RESTAURANT
      - RESTAURANT
      - RETAIL
      - TRANSPORT
      - RECREATION
      - MEDICAL
      - EDUCATIONAL
      - GOVERNMENT
      - CASH_ADVANCE
      - INTERNET
      - SUPERMARKET
      - UNKNOWN
    IdentServiceCompanyId:
      description: >-
        A unique merchant identifier of a company. This value is generated
        by the verifone identity service at the first call.
      type: string
      example: GB-0-324234324
    IBANIdentifier:
      title: IBAN
      description: >
        International Bank Account Number (ISO 13616-1:2007).
         The use of an IBAN is mandated for all SEPA transactions.
        There are 66 countries that support this format. The length will vary
        by country. Norway has the shortest format, 15 characters, currently
        Malta is the longest with 31 characters.
      type: string
      pattern: ^[a-zA-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}$
    GroupId:
      type: string
      minLength: 5
      maxLength: 13
      example: '123456'
    CutoverTime:
      type: string
      description: >-
        The cutover time HH:MM. Usually this will be a local time where a
        timezone has to be used to be used to derive the UTC time. EG: processor.cutoverTimeZone
      pattern: ^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
      example: '17:00'
    ExternalOnboarding:
      description: External merchant onboarding details
      type: object
      discriminator:
        propertyName: provider
        mapping:
          BANKAXEPT: '#/components/schemas/BankAxeptExternalOnboarding'
      properties:
        provider:
          title: External Onboarding Provider
          description: The third-party provider used for merchant onboarding.
          type: string
          enum:
          - BANKAXEPT
          default: BANKAXEPT
        agreementId:
          type: string
          format: uuid
          description: >
            Agreement or onboarding order identifier returned by the third-party
            provider when onboarding is initiated.
        agreementStatus:
          type: string
          description: >
            Latest onboarding or agreement status received from the third-party
            provider.
      oneOf:
      - title: BANKAXEPT
        allOf:
        - $ref: '#/components/schemas/BankAxeptExternalOnboarding'
    ExtendedDetails:
      description: Detailed Status of the Order
      type: object
      properties:
        status:
          $ref: '#/components/schemas/DetailedStatusEnum'
        code:
          type: string
          description: Code associated with the status (if applicable)
        information:
          type: string
          description: Extra Information associated with the status (if applicable)
        lastChangeTime:
          $ref: '#/components/schemas/LastChangeTime'
        canCancel:
          type: boolean
          description: Can this order be cancelled.
    EntityUid:
      description: The Verifone allocated unique id for this site.
      type: string
      format: uuid
      example: 14f5ea24-cc4f-11e8-a8d5-f2801f1b9fd9
    EntityUidDeprecated:
      description: >-
        The Verifone allocated unique id for this site. This is allocated
        by Verifone when an order is initially received. Please use value
        returned in OrderResponse.
      type: string
      format: uuid
      example: 14f5ea24-cc4f-11e8-a8d5-f2801f1b9fd9
      deprecated: true
    EntityRoleTypeEnum:
      title: Entity Role Type
      type: string
      description: >-
        The type used to describe the role of an Entity.


        Value |  Description

        ------|-------------

        DEVELOPER_COMPANY

        ESTATE_OWNER|An estate owner entity is assigned to a top level entity
        and defines the ownership of the merchants under that hierarchy. This
        can also be thought of as a high level customer or tenant. The owner
        of the estate (child entities, contracts and pois) can be either Verifone
        (where services are provided directly to a merchant) or a customer
        who uses the Verifone solution as a white label product.

        GROUP|A group entity can be used to provide access to a subset of
        a hierarchy. Entity groups have special business logic where things
        such as contracts and POIs can not be attached to groups.

        MERCHANT_COMPANY_GROUP|A group of MERCHANT_COMPANY entities which
        could be for example an umbrella corporation, a brand, or a holdings
        company.

        MERCHANT_COMPANY|The top level node of a merchant company. Under this
        entity are all the merchant sites, token scopes, ppcs and users for
        a company.

        MERCHANT_SITE|A site where transactions are processed. In card present
        this is a physical location where physical devices take payments.
        In ecom this is a website. Payment contracts are associated with merchant
        sites. Small merchants would only have a single site. Large merchants
        may have hundreds of physical sites and multiple ecom sites.

        RESELLER|

        UNDEFINED|Undefined
      enum:
      - DEVELOPER_COMPANY
      - ESTATE_OWNER
      - GROUP
      - MERCHANT_COMPANY_GROUP
      - MERCHANT_COMPANY
      - MERCHANT_SITE
      - RESELLER
      - UNDEFINED
      default: UNDEFINED
    EmailAddress:
      title: Email Address
      maxLength: 254
      minLength: 3
      type: string
      format: email
      pattern: ^[a-zA-Z0-9!#$%&'*+=?^_`{|}~.-]+@[a-zA-Z0-9-]+[.].+$
      description: >-
        A valid internationalized email address, as defined by RFC 5322, RFC
        6530, and other RFCs. Due to RFC 5321, an email address can be up
        to 254 characters long even though up to 64 characters are allowed
        before and 255 characters are allowed after the @ sign. This pattern
        verifies only that the string contains an unquoted @ sign. See https://tools.ietf.org/html/rfc5322#section-3.4.1.
    EftposMTC:
      description: >-
        EFTPOS Australia Merchant Tier Code. Defines the type of Merchant
        and, therefore, whether standard, charity or

        Differential Interchange Fee Rates (DIFR) are payable.


        The value shall be set by Hub to be '901' where Field 018 (Merchant
        Category Code) is the value '8398', in all other

        cases the value set by Hub shall be the last 3 digits of the EFC tag
        sent by Acquirer to Hub.


        An invalid Merchant Tier value from Acquirer will be replaced by Hub
        with the Standard tier code '000'.
      type: string
      minLength: 3
      maxLength: 3
      pattern: ^[a-zA-Z0-9]*$
    NotificationReminder:
      description: Notification Reminder Sent Details
      type: object
      properties:
        lastNotificationSentDateTime:
          description: >-
            Date and Time of the last notification sent. Defaulted to `createdDateTime`
            on first saved order.
          type: string
          format: date-time
        notificationCount:
          description: >-
            Number of notifications sent. -1 = Unsubscribed, or 1, 2, 3 as
            per the notification sent.
          type: integer
        templateName:
          description: NotificationTemplate Name used, e.g. `T650P_WELCOME`
          type: string
        notifications:
          description: List of notifications, each with the date-time sent
            and the template used.
          type: array
          items:
            $ref: '#/components/schemas/Notification'
    DomesticSettlementAccount:
      allOf:
      - $ref: '#/components/schemas/DomesticAccount'
    GiftDivision:
      description: Giftcard Provider assigned Division.
      type: string
      pattern: ^[a-zA-Z0-9]+$
      maxLength: 30
      example: '22'
    SvsDivision:
      description: SVS assigned Division.
      type: string
      maxLength: 30
      pattern: ^[a-zA-Z0-9]+$
      example: '22'
    BundleAndPriceAndDataQuantity:
      type: object
      properties:
        packageBundleId:
          $ref: '#/components/schemas/PackageBundleId'
        adjustedPrices:
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/AdjustedPriceType'
        additionalPackageData:
          description: >-
            Input data required to configure the package. For example some
            packages require a merchant ID.
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/VariableResponseType'
        quantity:
          description: Quantity of the packages being ordered
          type: integer
          minimum: 1
          example: 4
      required:
      - packageBundleId
    BundleAndSerialNumberAndQuantity:
      type: object
      properties:
        packageBundleId:
          $ref: '#/components/schemas/PackageBundleId'
        additionalPackageData:
          description: >-
            Input data required to configure the package. For example some
            packages require a merchant ID.
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/VariableResponseType'
        quantity:
          description: Quantity of the packages being ordered
          type: integer
          minimum: 1
          example: 4
        serialNumbers:
          type: array
          items:
            $ref: '#/components/schemas/SerialNumber'
      required:
      - packageBundleId
    BundleAndData:
      type: object
      properties:
        packageBundleId:
          $ref: '#/components/schemas/PackageBundleId'
        additionalPackageData:
          type: array
          description: >-
            Input data required to configure the package. For example some
            packages require a merchant ID.
          maxItems: 50
          items:
            $ref: '#/components/schemas/VariableResponseType'
      required:
      - packageBundleId
    BundleAndPriceAndData:
      type: object
      properties:
        packageBundleId:
          $ref: '#/components/schemas/PackageBundleId'
        adjustedPrices:
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/AdjustedPriceType'
        additionalPackageData:
          type: array
          description: >-
            Input data required to configure the package. For example some
            packages require a merchant ID
          maxItems: 50
          items:
            $ref: '#/components/schemas/VariableResponseType'
      required:
      - packageBundleId
    DebitEncryptionKey:
      description: >-
        Debit Key Name used to determine which keys are loaded as part of
        a terminal deployment/setup.
      type: string
      minLength: 1
      maxLength: 100
      example: WoodforestDebit
    DayOfWeekEnum:
      title: Day of the Week
      description: An enumeration specifying the days of the week.
      type: string
      example: MONDAY
      enum:
      - MONDAY
      - TUESDAY
      - WEDNESDAY
      - THURSDAY
      - FRIDAY
      - SATURDAY
      - SUNDAY
    CutoverType:
      title: Cutover Type
      description: >-
        Defines the cutover type. ON_DEMAND - batch is closed from the terminal,
        FIXED - batch is closed from the gateway based on either a cron job
        if fixedCutoverTime is not set or based on the configured time, BOTH
        - batch can be closed from the terminal and if it's not closed from
        the terminal then the criteria for FIXED cutover type will be applied
        to close the batch. This setting is used together with POI Cutover
        Strategy FLEXIBLE_BATCH for FIXED cutover with advanced batching.
        Supported types depend on the implementation for each processor. If
        type is not set default value is used which depends on the implementation
        for each processor.
      type: string
      enum:
      - ON_DEMAND
      - FIXED
      - BOTH
    CustomerOrderLink:
      description: Customer Order Link Sent Details
      type: object
      properties:
        orderLink:
          description: >
            The unique order link sent to the customer to help them navigate
            directly to the relevant  step in the order process. This link
            ensures the customer can update their order efficiently.
          type: string
          format: uri
        linkInitiatorUserUid:
          description: The unique User ID of the user who generated the order
            link.
          type: string
          format: uuid
          example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
        linkInitiatorUsername:
          $ref: '#/components/schemas/UserName'
        linkReceiverUserUid:
          description: The unique User ID of the customer who received the
            order link.
          type: string
          format: uuid
          example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
        linkReceiverUsername:
          $ref: '#/components/schemas/UserName'
        linkSendTime:
          description: >
            Date and time when the order link was sent to the customer.  This
            represents when the system triggered the link delivery.
          type: string
          format: date-time
        linkOpendByCustomerTime:
          description: >
            Date and time when the order link was opened by the customer.
          type: string
          format: date-time
        customerUpdateTime:
          description: >
            Date and time when the customer last updated their order after
            using the order link.
          type: string
          format: date-time
    CustomerId:
      description: Customer ID in Oracle
      type: string
      example: 28792600010001, BK00045
    CreatedUserId:
      description: The assigned User ID corresponding to the Order Created
        By.
      type: string
      format: uuid
      example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    UserName:
      description: The username of the person who's UID is represented, e.g.
        "John/Jane Smith".
      type: string
      minLength: 1
    CountryCode3Enum:
      title: Country Code
      type: string
      description: >-
        The [ISO 3166-1 alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3)
        country code.<blockquote><strong>Note:</strong> The country code for
        Great Britain is <code>GB</code> and not <code>UK</code> as is used
        in that country's top-level domain names.</blockquote>.
      enum:
      - ZZZ
      - ABW
      - AFG
      - AGO
      - AIA
      - ALA
      - ALB
      - AND
      - ARE
      - ARG
      - ARM
      - ASM
      - ATA
      - ATF
      - ATG
      - AUS
      - AUT
      - AZE
      - BDI
      - BEL
      - BEN
      - BES
      - BFA
      - BGD
      - BGR
      - BHR
      - BHS
      - BIH
      - BLM
      - BLR
      - BLZ
      - BMU
      - BOL
      - BRA
      - BRB
      - BSB
      - BRN
      - BTN
      - BVT
      - BWA
      - CAF
      - CAN
      - CCK
      - CHE
      - CHL
      - CHN
      - CIV
      - CMR
      - COD
      - COG
      - COK
      - COL
      - COM
      - CPV
      - CRI
      - CUB
      - CUW
      - CXR
      - CYM
      - CYP
      - CZE
      - DEU
      - DJI
      - DMA
      - DNK
      - DOM
      - DZA
      - ECU
      - EGY
      - ERI
      - ESH
      - ESP
      - EST
      - ETH
      - FIN
      - FJI
      - FLK
      - FRA
      - FRO
      - FSM
      - GAB
      - GBR
      - GEO
      - GGY
      - GHA
      - GIB
      - GIN
      - GLP
      - GMB
      - GNB
      - GNQ
      - GRC
      - GRD
      - GRL
      - GTM
      - GUF
      - GUM
      - GUY
      - HKG
      - HMD
      - HND
      - HRV
      - HTI
      - HUN
      - IDN
      - IMN
      - IND
      - IOT
      - IRL
      - IRN
      - IRQ
      - ISL
      - ISR
      - ITA
      - JAM
      - JEY
      - JOR
      - JPN
      - KAZ
      - KEN
      - KGZ
      - KHM
      - KIR
      - KNA
      - KOR
      - KWT
      - LAO
      - LBN
      - LBR
      - LBY
      - LCA
      - LIE
      - LKA
      - LSO
      - LTU
      - LUX
      - LVA
      - MAC
      - MAF
      - MAR
      - MCO
      - MDA
      - MDG
      - MDV
      - MEX
      - MHL
      - MKD
      - MLI
      - MLT
      - MMR
      - MNE
      - MNG
      - MNP
      - MOZ
      - MRT
      - MSR
      - MTQ
      - MUS
      - MWI
      - MYS
      - MYT
      - NAM
      - NCL
      - NER
      - NFK
      - NGA
      - NIC
      - NIU
      - NLD
      - NOR
      - NPL
      - NRU
      - NZL
      - OMN
      - PAK
      - PAN
      - PCN
      - PER
      - PHL
      - PLW
      - PNG
      - POL
      - PRI
      - PRK
      - PRT
      - PRY
      - PSE
      - PYF
      - QAT
      - REU
      - ROU
      - RUS
      - RWA
      - SAU
      - SDN
      - SEN
      - SGC
      - SGP
      - SHN
      - SJM
      - SLB
      - SLE
      - SLV
      - SMR
      - SOM
      - SPM
      - SRB
      - SSD
      - STP
      - SUR
      - SVK
      - SVN
      - SWE
      - SWZ
      - SXM
      - SYC
      - SYR
      - TCA
      - TCD
      - TGO
      - THA
      - TJK
      - TKL
      - TKM
      - TLS
      - TON
      - TTO
      - TUN
      - TUR
      - TUV
      - TWN
      - TZA
      - UGA
      - UKR
      - UMI
      - URY
      - USA
      - UZB
      - VAT
      - VCT
      - VEN
      - VGB
      - VIR
      - VNM
      - VUT
      - WLF
      - WSM
      - YEM
      - ZAF
      - ZMB
      - ZWE
      example: AUS
    ContractUid:
      description: The Verifone assigned ID corresponding to the contract.
      type: string
      format: uuid
      example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
    MerchantContract:
      type: object
      properties:
        brokerId:
          type: string
          maxLength: 100
          description: ID of the broker, if one is being used
        legalStructure:
          type: string
          description: Legal Structure
          enum:
          - PROPRIETOR_OWN_BEHALF
          - PROPRIETOR_NOT_OWN_BEHALF
          - SHARED_LESS_25_PERC_EACH
        contacts:
          type: array
          maxItems: 50
          items:
            $ref: '#/components/schemas/ContactAddressType'
        settlementAccount:
          $ref: '#/components/schemas/SettlementAccount'
        domesticSettlementAccount:
          $ref: '#/components/schemas/DomesticSettlementAccount'
        serviceStartDate:
          type: string
          description: The requested date for this service to start.
          format: date-time
        terminalRentalStartDate:
          type: string
          format: date-time
          description: >
            The date until which terminal rental is exempt for this contract
            (also labelled "Rent Exemption Until" / DE: "Mietfreiheit bis
            zum"). If not set, consumers should fall back to serviceStartDate.
        proprietorAct:
          type: boolean
          description: >-
            Is proprietor is acting on its own behalf (true) or is not acting
            on own behalf (false)
        documents:
          type: array
          items:
            $ref: '#/components/schemas/MerchantDocument'
        replacementAgreement:
          $ref: '#/components/schemas/ReplacementAgreement'
      description: Used if merchant contract is to be processed
    ContactTypeEnum:
      title: Contact Type
      description: >-
        An indicator for the type of contact.


        |Value|Description|

        |----|-----------|

        |BUSINESS|Generic business contact information, e.g. info@example.com|

        |DISPUTE_HANDLING|Generic contact information specific to dispute
        handling, e.g. disputes@example.com|

        |OWNER|Individual contact information of the owner of the Entity,
        e.g. ben.jerry@example.com|

        |PERSONAL|Personal contact information of the person representing
        the Entity, e.g. bjerr83@example-personal-email-domain.com|
      type: string
      enum:
      - BUSINESS
      - DISPUTE_HANDLING
      - OWNER
      - PERSONAL
      default: BUSINESS
    ContactType:
      description: The details of a Contact.
      type: object
      properties:
        contactType:
          $ref: '#/components/schemas/ContactTypeEnum'
        name:
          $ref: '#/components/schemas/ContactName'
        phoneNumbers:
          description: >-
            The phone numbers to be used for the Contact. If you include this
            property there should be at least one phone number.
          items:
            $ref: '#/components/schemas/Phone'
          minItems: 1
          uniqueItems: true
          type: array
        email:
          $ref: '#/components/schemas/EmailAddress'
        businessTitle:
          $ref: '#/components/schemas/BusinessTitle'
      required:
      - contactType
      - name
    ContractContactType:
      type: object
      required:
      - contactType
      - name
      properties:
        contactType:
          $ref: '#/components/schemas/ContactTypeEnum'
        name:
          $ref: '#/components/schemas/ContactName'
        phoneNumbers:
          description: >-
            The phone numbers to be used for the Contact. If you include this
            property there should be at least one phone number.
          items:
            $ref: '#/components/schemas/Phone'
          minItems: 1
          uniqueItems: true
          type: array
        email:
          $ref: '#/components/schemas/EmailAddress'
        businessTitle:
          $ref: '#/components/schemas/BusinessTitle'
        passportId:
          type: string
          description: Passport Identity Identifier.
          minLength: 1
          maxLength: 100
        nationality:
          type: string
          description: Nationality
          minLength: 1
          maxLength: 100
        additionalNationalities:
          type: array
          description: Additional Nationalities
          uniqueItems: true
          maxItems: 20
          items:
            type: string
            minLength: 1
            maxLength: 100
        nationalIdentifer:
          type: string
          description: Contact's national identity identifier.
          minLength: 1
          maxLength: 20
    VfiIdentityCheck:
      description: Order Company Identity Service Check Details
      type: object
      properties:
        identServiceCompanyId:
          $ref: '#/components/schemas/IdentServiceCompanyId'
        companyIdentificationUuid:
          $ref: '#/components/schemas/CompanyIdentificationUuid'
        companyStatus:
          description: Supports creditScore decision and not active should
            lead to hard negative score
          type: string
          enum:
          - ACTIVE
          - NOT_ACTIVE
          - PENDING
          - OTHER
          readOnly: true
        creditScore:
          description: A higher score the better result. Score from credit
            safe.
          type: number
          minimum: 0
          maximum: 100
          readOnly: true
        complianceScore:
          description: >-
            A higher score the better result. The score is reduced by the
            reliability calculation (result from c6 check).
          type: number
          minimum: 0
          maximum: 100
          readOnly: true
        matchStatus:
          type: string
          description: During Identity Search API, Status of Company if match
            or no-match.
          enum:
          - MATCH
          - NO_COMPANY_MATCH
          readOnly: true
        identificationStatus:
          description: Final identity status provided by KYC Identity Service.
          type: string
          example: IDENTIFIED_VERIFIED
        identificationStatusReason:
          description: >-
            Set of Identification reason provided by KYC Identity Service,
            while calculating the Credit Safe Score.
          type: array
          items:
            type: string
    CompanyIdentificationUuid:
      description: >-
        A unique merchant identifier during the registration process, per
        check. This value is generated by the Verifone identity service at
        the first call.
      type: string
      format: uuid
      example: 14f5ea24-cc4f-11e8-a8d5-f2801f1b9fd9
    CancelReasonEnum:
      description: Reason for order cancellation.
      type: string
      enum:
      - ADMIN_REASON
      - RELATED_PO_CHANGES
      - WRONG_PRODUCT
      - ORDER_LATE
      - OTHER
    CancelAdditionalReason:
      description: Free-Form reason for order cancellation.
      type: string
    BusinessTitle:
      type: string
      maxLength: 100
    BICIdentifier:
      title: Bank Identifier Code
      type: string
      description: >-
        International Bank Identifier Code Format.

        The Bank Identifier Code or SWIFT Code ,this can also be referred
        to as the CHIPS, NCC, VSC or IFSC depending on your location. Made
        up of 8 or 11 characters .The 3 main parts include: BankCode(4), Country
        Code(2) and Location (2).

        Optionally the branch identifier is a 3 character optional element
        that can supplement the 8 character BIC.

        [ISO 9362](https://www.iso.org/standard/84108.html)
      pattern: ^[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}$
      maxLength: 11
      example: CTBAAU2SXXX
    BatchTotalsBreakDownStrategyEnum:
      type: string
      description: >-
        Defines the way how batch totals are broken down.




        Value |  Description

        ------|-------------

        CURRENCY_CARDBRAND|Breaks down by currency and card brand

        |CURRENCY_REPORTINGGROUP|Breaks down by currency and reportingGroup
      enum:
      - CURRENCY_CARDBRAND
      - CURRENCY_REPORTINGGROUP
    BundleAndPrice:
      type: object
      properties:
        packageBundleId:
          $ref: '#/components/schemas/PackageBundleId'
        price:
          $ref: '#/components/schemas/AmountSimple'
      required:
      - packageBundleId
    ApplicationType:
      description: >-
        This indicates product being used and will be provided by the TeleCheck's
        Merchant boarding and Certification group.
      type: string
      minLength: 1
      maxLength: 100
      example: Telecheck POS
    AltVfiPoiId:
      description: >-
        An alternative Verifone assigned identifier used for the POI within
        Verifone systems for transaction processing. This

        is also referred to as the Terminal ID (TID). This value maps to DE41
        in ISO8583 specification. This identifier may

        also be used per contract if required.


        <strong>This value is not guaranteed to be globally unique. The unique
        value is the internally assigned uuid - poiUid

        which is returned on the response.</strong>
      type: string
      maxLength: 12
      example: '1004631982'
    AltVfiEntityId:
      description: >-
        A friendly ID associated with the merchant site/company. This will
        be visible/searchable in Verifone central. In many

        cases this will be the same value as merchantId.


        <strong>This value is not guaranteed as globally unique within Verifone.
        That value is the entityUid (uuid) property

        that will be assigned on creation of the Entity and returned on the
        response.</strong>.
      type: string
      maxLength: 30
      pattern: ^[a-zA-Z0-9]+$
      example: '1003933752'
    ActiveBank:
      description: Last 4 digits of active bank account
      type: string
      minLength: 1
      maxLength: 4
      pattern: ^[0-9]*
      example: '2061'
    PaymentAccountType:
      type: string
      enum:
      - CHEQUE
      - SAVINGS
      - TRANSMISSION
      - BANKGIRO
    CurrencyCodeEnum:
      title: Currency Code
      description: >-
        Three-letter ISO 4217 alphabetical currency code. e.g. USD. Values
        correspond

        to [ISO 4217](https://wikipedia.org/wiki/ISO_4217).


        **Deprecated:** `BYR` (replaced by BYN), `FRF` (replaced by EUR),
        `LTL` (replaced by EUR), `LVL` (replaced by EUR), `MRO` (replaced
        by MRU), `STD` (replaced by STN), `USS` (no replacement), `VEF`  (replaced
        by VES), `ZMK` (replaced by ZMV) and `BTC` (Bitcoin only supported
        as Crypto Amount).
      type: string
      enum:
      - AED
      - AFN
      - ALL
      - AMD
      - ANG
      - AOA
      - ARS
      - AUD
      - AWG
      - AZN
      - BAM
      - BBD
      - BDT
      - BGN
      - BHD
      - BIF
      - BMD
      - BND
      - BOB
      - BOV
      - BRL
      - BSD
      - BTN
      - BWP
      - BYN
      - BYR
      - BZD
      - CAD
      - CDF
      - CHE
      - CHF
      - CHW
      - CLF
      - CLP
      - CNY
      - COP
      - COU
      - CRC
      - CUC
      - CUP
      - CVE
      - CZK
      - DJF
      - DKK
      - DOP
      - DZD
      - EGP
      - ERN
      - ETB
      - EUR
      - FJD
      - FKP
      - FRF
      - GBP
      - GEL
      - GHS
      - GIP
      - GMD
      - GNF
      - GTQ
      - GYD
      - HKD
      - HNL
      - HRK
      - HTG
      - HUF
      - IDR
      - ILS
      - INR
      - IQD
      - IRR
      - ISK
      - JMD
      - JOD
      - JPY
      - KES
      - KGS
      - KHR
      - KMF
      - KPW
      - KRW
      - KWD
      - KYD
      - KZT
      - LAK
      - LBP
      - LKR
      - LRD
      - LSL
      - LTL
      - LVL
      - LYD
      - MAD
      - MDL
      - MGA
      - MKD
      - MMK
      - MNT
      - MOP
      - MRO
      - MRU
      - MUR
      - MVR
      - MWK
      - MXN
      - MXV
      - MYR
      - MZN
      - NAD
      - NGN
      - NIO
      - NOK
      - NPR
      - NZD
      - OMR
      - PAB
      - PEN
      - PGK
      - PHP
      - PKR
      - PLN
      - PYG
      - QAR
      - RON
      - RSD
      - RUB
      - RWF
      - SAR
      - SBD
      - SCR
      - SDG
      - SEK
      - SGD
      - SHP
      - SLL
      - SOS
      - SRD
      - SSP
      - STD
      - STN
      - SVC
      - SYP
      - SZL
      - THB
      - TJS
      - TMT
      - TND
      - TOP
      - TRY
      - TTD
      - TWD
      - TZS
      - UAH
      - UGX
      - USD
      - USN
      - USS
      - UYI
      - UYU
      - UYW
      - UZS
      - VEF
      - VES
      - VND
      - VUV
      - WST
      - XAF
      - XAG
      - XAU
      - XBA
      - XBB
      - XBC
      - XBD
      - XCD
      - XDR
      - XOF
      - XPD
      - XPF
      - XPT
      - XSU
      - XTS
      - XUA
      - XXX
      - YER
      - ZAR
      - ZMK
      - ZMW
      - ZWL
      - BTC
    BaseAddress:
      description: An Address following the convention of http://microformats.org/wiki/hcard
      type: object
      properties:
        receiverName:
          type: string
          minLength: 1
          description: The receiver name for the address if different to the
            company/site name.
        addressLine1:
          minLength: 1
          maxLength: 40
          type: string
          description: Address Line 1. Should include street and apartment
            number if required.
          example: 213 Miller Street
        addressLine2:
          maxLength: 40
          type: string
          description: Address Line 2
          example: North Sydney
        addressLine3:
          maxLength: 40
          type: string
          description: Address Line 3
        poBox:
          type: string
          description: The PO BOX number.
          example: K1234
        city:
          minLength: 1
          maxLength: 28
          type: string
          description: >-
            Name of a built-up area, with defined boundaries, and a local
            government. This could be city or town.
          example: York
        countrySubdivision:
          maxLength: 35
          minLength: 1
          type: string
          description: >-
            Identifies a sub-division of a country which may be state, region
            or county. This follows a similar format to the openbank api.
          example: Georgia
        postCode:
          $ref: '#/components/schemas/PostCode'
        country:
          $ref: '#/components/schemas/CountryCode3Enum'
        timeZone:
          $ref: '#/components/schemas/TimeZone'
    PoiAccessory:
      description: Accessory type and bundle
      type: object
      properties:
        accessoryType:
          type: string
          description: Type of accessory
          enum:
          - CONSUMABLES
          - OTHER
          default: CONSUMABLES
      discriminator:
        propertyName: accessoryType
        mapping:
          CONSUMABLES: '#/components/schemas/PoiConsumablesOrder'
      required:
      - accessoryType
      oneOf:
      - title: CONSUMABLES
        allOf:
        - $ref: '#/components/schemas/PoiConsumablesOrder'
    StoreNum:
      type: string
      minLength: 1
      maxLength: 4
      pattern: ^[0-9]+$
      example: '1234'
    BaseRegionalParameters:
      title: Payment Parameters - Regional specific options
      description: Payment Parameters - Regional specific options
      type: object
      properties:
        parameterSchema:
          type: string
      discriminator:
        propertyName: parameterSchema
        mapping:
          ParametersMaverick: '#/components/schemas/ParametersMaverick'
          ParametersAu: '#/components/schemas/ParametersAu'
          ParametersUk: '#/components/schemas/ParametersUk'
          ParametersNordicsCobra: '#/components/schemas/ParametersNordicsCobra'
      oneOf:
      - title: ParametersMaverick
        allOf:
        - $ref: '#/components/schemas/ParametersMaverick'
      - title: ParametersAu
        allOf:
        - $ref: '#/components/schemas/ParametersAu'
      - title: ParametersUk
        allOf:
        - $ref: '#/components/schemas/ParametersUk'
      - title: ParametersNordicsCobra
        allOf:
        - $ref: '#/components/schemas/ParametersNordicsCobra'
    GroupNumber:
      type: string
      minLength: 1
      maxLength: 50
      example: '123456'
    FNSNumber:
      description: >-
        A number issued by the US Department of Agriculture Food and Nutrition
        Service that is used in SNAP transactions. For eWIC processing, this
        field contains the state assigned retailer ID of the merchant.
      type: string
      maxLength: 7
      example: '7201234'
    ClientNum:
      type: string
      maxLength: 4
      minLength: 1
      pattern: ^[0-9]+$
      example: '1234'
    BankID:
      type: string
      minLength: 1
      maxLength: 30
      example: '5'
    BankBIN:
      type: string
      minLength: 1
      maxLength: 30
      example: '5'
    AgentChain:
      type: string
      minLength: 1
      maxLength: 6
      pattern: ^[0-9]+$
      example: '123456'
    AgentBank:
      type: string
      minLength: 1
      maxLength: 6
      pattern: ^[0-9]+$
      example: '123456'
    HardwareOrderResponse:
      allOf:
      - $ref: '#/components/schemas/HardwareOrder'
      - properties:
          orderId:
            $ref: '#/components/schemas/OrderId'
          status:
            $ref: '#/components/schemas/OrderStatusEnum'
          createdUserUid:
            $ref: '#/components/schemas/CreatedUserId'
          createdBy:
            $ref: '#/components/schemas/UserName'
          createdDate:
            type: string
            description: The created date for this order.
            format: date-time
          modifiedUserUid:
            description: The assigned User_ID corresponding to the Order Modified
              By.
            type: string
            format: uuid
            example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          modifiedBy:
            $ref: '#/components/schemas/UserName'
          modifiedDate:
            type: string
            description: The last modified date for this order.
            format: date-time
          orderType:
            type: string
            default: HardwareOrder
          internal:
            $ref: '#/components/schemas/InternalAllocatedInformation'
      required:
      - orderId
      - status
      - orderType
      - merchantCompanyEntityUid
    AdditionalServicesOrderResponse:
      allOf:
      - $ref: '#/components/schemas/AdditionalServicesOrder'
      - $ref: '#/components/schemas/CommonOrderResponse'
      - properties:
          orderType:
            type: string
            default: AdditionalServicesOrder
          internal:
            $ref: '#/components/schemas/InternalAllocatedInformation'
    PoiAccessoryOrderResponse:
      allOf:
      - $ref: '#/components/schemas/PoiAccessoryOrder'
      - $ref: '#/components/schemas/CommonOrderResponse'
      - properties:
          orderType:
            type: string
            default: POIAccessoryOrder
      required:
      - orderId
      - status
      - orderType
    MerchantMaintenanceOrder:
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseOrderData'
      - properties:
          eventType:
            type: string
            enum:
            - TradingAddressUpdated
            - EntityDeleted
            - EntityUpdated
            - PoiUpdated
            - PoiDeleted
          itemId:
            type: string
            description: The ID of the record associated to the event.
          orderId:
            $ref: '#/components/schemas/OrderId'
          status:
            $ref: '#/components/schemas/OrderStatusEnum'
          createdUserUid:
            $ref: '#/components/schemas/CreatedUserId'
          createdBy:
            $ref: '#/components/schemas/UserName'
          createdDate:
            type: string
            description: The created date for this order.
            format: date-time
          modifiedUserUid:
            description: The assigned User_ID corresponding to the Order Modified
              By.
            type: string
            format: uuid
            example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          modifiedBy:
            $ref: '#/components/schemas/UserName'
          modifiedDate:
            type: string
            description: The last modified date for this order.
            format: date-time
          orderType:
            type: string
            default: MerchantMaintenanceOrder
          entityUid:
            $ref: '#/components/schemas/EntityUid'
          merchant:
            $ref: '#/components/schemas/MerchantNameWrapper'
          content:
            type: object
      required:
      - eventType
      - orderId
      - status
      - entityUid
      - itemId
    PoiMaintenanceOrderResponse:
      allOf:
      - $ref: '#/components/schemas/PoiMaintenanceOrder'
      - properties:
          orderId:
            $ref: '#/components/schemas/OrderId'
          status:
            $ref: '#/components/schemas/OrderStatusEnum'
          createdUserUid:
            $ref: '#/components/schemas/CreatedUserId'
          createdBy:
            $ref: '#/components/schemas/UserName'
          createdDate:
            type: string
            description: The created date for this order.
            format: date-time
          modifiedUserUid:
            description: The assigned User_ID corresponding to the Order Modified
              By.
            type: string
            format: uuid
            example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          modifiedBy:
            $ref: '#/components/schemas/UserName'
          modifiedDate:
            type: string
            description: The last modified date for this order.
            format: date-time
          orderType:
            type: string
            default: POIMaintenanceOrder
          entityUid:
            $ref: '#/components/schemas/EntityUid'
          merchantCompanyEntityUid:
            $ref: '#/components/schemas/MerchantCompanyEntityUid'
          merchant:
            $ref: '#/components/schemas/MerchantNameWrapper'
          internal:
            $ref: '#/components/schemas/InternalAllocatedInformation'
      required:
      - orderId
      - status
      - orderType
    MerchantOrderResponse:
      allOf:
      - $ref: '#/components/schemas/MerchantOrder'
      - properties:
          orderId:
            $ref: '#/components/schemas/OrderId'
          status:
            $ref: '#/components/schemas/OrderStatusEnum'
          createdUserUid:
            $ref: '#/components/schemas/CreatedUserId'
          createdBy:
            $ref: '#/components/schemas/UserName'
          createdDate:
            type: string
            description: The created date for this order.
            format: date-time
          modifiedUserUid:
            description: The assigned User_ID corresponding to the Order Modified
              By.
            type: string
            format: uuid
            example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          modifiedBy:
            $ref: '#/components/schemas/UserName'
          modifiedDate:
            type: string
            description: The last modified date for this order.
            format: date-time
          orderType:
            type: string
            default: MerchantOrder
          entityUid:
            $ref: '#/components/schemas/EntityUid'
          merchantCompanyEntityUid:
            $ref: '#/components/schemas/MerchantCompanyEntityUid'
          merchantCompanyGroupEntityUid:
            description: For Group Feature, `entityType = MERCHANT_COMPANY_GROUP``.
            type: string
            format: uuid
            example: 14f5ea24-cc4f-11e8-a8d5-f2801f1b9fd9
          internal:
            $ref: '#/components/schemas/InternalAllocatedInformationNewCompanyAndSite'
      required:
      - orderId
      - status
      - orderType
      - entityUid
      - merchantCompanyEntityUid
    CommonOrderResponse:
      description: Standard fields returned in Order responses
      properties:
        orderId:
          $ref: '#/components/schemas/OrderId'
        status:
          $ref: '#/components/schemas/OrderStatusEnum'
        createdUserUid:
          $ref: '#/components/schemas/CreatedUserId'
        createdBy:
          $ref: '#/components/schemas/UserName'
        createdDate:
          type: string
          description: The created date for this order.
          format: date-time
        modifiedUserUid:
          description: The assigned User_ID corresponding to the Order Modified
            By.
          type: string
          format: uuid
          example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
        modifiedBy:
          $ref: '#/components/schemas/UserName'
        modifiedDate:
          type: string
          description: The last modified date for this order.
          format: date-time
        entityUid:
          $ref: '#/components/schemas/EntityUid'
        merchantCompanyEntityUid:
          $ref: '#/components/schemas/MerchantCompanyEntityUid'
        merchant:
          $ref: '#/components/schemas/MerchantNameWrapper'
    PoiOrderResponse:
      allOf:
      - $ref: '#/components/schemas/PoiOrder'
      - properties:
          orderId:
            $ref: '#/components/schemas/OrderId'
          status:
            $ref: '#/components/schemas/OrderStatusEnum'
          createdUserUid:
            $ref: '#/components/schemas/CreatedUserId'
          createdBy:
            $ref: '#/components/schemas/UserName'
          createdDate:
            type: string
            description: The created date for this order.
            format: date-time
          modifiedUserUid:
            description: The assigned User_ID corresponding to the Order Modified
              By.
            type: string
            format: uuid
            example: 04f5ea24-cc4f-11e8-a8d5-f2801f1b9fd1
          modifiedBy:
            $ref: '#/components/schemas/UserName'
          modifiedDate:
            type: string
            description: The last modified date for this order.
            format: date-time
          orderType:
            type: string
            default: POIOrder
          entityUid:
            $ref: '#/components/schemas/EntityUid'
          merchantCompanyEntityUid:
            $ref: '#/components/schemas/MerchantCompanyEntityUid'
          merchant:
            $ref: '#/components/schemas/MerchantNameWrapper'
          internal:
            $ref: '#/components/schemas/InternalAllocatedInformation'
      required:
      - orderId
      - status
      - orderType
    httpError504:
      title: HTTP 504 Error
      type: object
      description: Gateway Timeout Error
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '504'
            default: '504'
            example: '504'
          title:
            type: string
            enum:
            - Gateway Timeout
            default: Gateway Timeout
            example: Gateway Timeout
          message:
            type: string
            default: >-
              The server, while acting as a gateway or proxy, did not get
              a response in time from the upstream server that it needed in
              order to complete the request.
            example: >-
              The server, while acting as a gateway or proxy, did not get
              a response in time from the upstream server that it needed in
              order to complete the request.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - API_ERROR
            default: API_ERROR
            example: API_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError503:
      title: HTTP 503 Error
      type: object
      description: Service Unavailable Error
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '503'
            default: '503'
            example: '503'
          title:
            type: string
            enum:
            - Service Unavailable
            default: Service Unavailable
            example: Service Unavailable
          message:
            type: string
            default: >-
              The server is not ready to handle the request. If specified
              please check the <strong>Retry-After</strong> for the time period
              specified for recovery/re-attempt of request.
            example: >-
              The server is not ready to handle the request. If specified
              please check the <strong>Retry-After</strong> for the time period
              specified for recovery/re-attempt of request.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - API_ERROR
            default: API_ERROR
            example: API_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError500:
      title: HTTP 500 Error
      type: object
      description: Unexpected Server Error
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '500'
            default: '500'
            example: '500'
          title:
            type: string
            enum:
            - Internal Server Error
            default: Internal Server Error
            example: Internal Server Error
          message:
            type: string
            default: >-
              The server encountered an unexpected condition which prevented
              it from fulfilling the request.
            example: >-
              The server encountered an unexpected condition which prevented
              it from fulfilling the request.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - API_ERROR
            default: API_ERROR
            example: API_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError429:
      title: HTTP 429 Error
      type: object
      description: The resource exists the number of requests has exceeded
        the specified quota.
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '429'
            default: '429'
            example: '429'
          title:
            type: string
            enum:
            - Too Many Requests
            default: Too Many Requests
            example: Too Many Requests
          message:
            type: string
            default: The number of requests from this client is restricted
              to a specified quota.
            example: The number of requests from this client is restricted
              to a specified quota.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - RATE_LIMIT_ERROR
            default: RATE_LIMIT_ERROR
            example: RATE_LIMIT_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError406:
      title: HTTP 406 Error
      type: object
      description: >-
        The resource exists but response does not match the content specified
        in the request header.
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '406'
            default: '406'
            example: '406'
          title:
            type: string
            enum:
            - Not Acceptable
            default: Not Acceptable
            example: Not Acceptable
          message:
            type: string
            default: >-
              The resource identified by the request is only capable of generating
              response entities which have content characteristics not acceptable
              according to the accept headers sent in the request.
            example: >-
              The resource identified by the request is only capable of generating
              response entities which have content characteristics not acceptable
              according to the accept headers sent in the request.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - INVALID_REQUEST_ERROR
            default: INVALID_REQUEST_ERROR
            example: INVALID_REQUEST_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError405:
      title: HTTP 405 Error
      type: object
      description: The resource exists but the operation does not.
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '405'
            default: '405'
            example: '405'
          title:
            type: string
            enum:
            - Method Not Allowed
            default: Method Not Allowed
            example: Method Not Allowed
          message:
            type: string
            default: >-
              The method specified in the Request-Line is not allowed for
              the resource identified by the Request-URI.
            example: >-
              The method specified in the Request-Line is not allowed for
              the resource identified by the Request-URI.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - INVALID_REQUEST_ERROR
            default: INVALID_REQUEST_ERROR
            example: INVALID_REQUEST_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError404:
      title: HTTP 404 Error
      type: object
      description: The server cannot find the requested resource.
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '404'
            default: '404'
            example: '404'
          title:
            type: string
            enum:
            - Not Found
            default: Not Found
            example: Not Found
          message:
            type: string
            default: The server cannot find the requested resource.
            example: The server cannot find the requested resource.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - INVALID_REQUEST_ERROR
            default: INVALID_REQUEST_ERROR
            example: INVALID_REQUEST_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError401:
      title: HTTP 401 Error
      type: object
      description: The request must be authenticated to access the resource.
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '401'
            default: '401'
            example: '401'
          title:
            type: string
            enum:
            - Unauthorised
            default: Unauthorised
            example: Unauthorised
          message:
            type: string
            default: The request requires client authentication.
            example: The request requires client authentication.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - AUTHENTICATION_ERROR
            default: AUTHENTICATION_ERROR
            example: AUTHENTICATION_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    httpError400:
      title: HTTP 400 Error
      type: object
      description: The request could not be understood by the server due to
        malformed syntax.
      allOf:
      - $ref: '#/components/schemas/ErrorResp'
      - properties:
          code:
            type: string
            enum:
            - '400'
            default: '400'
            example: '400'
          title:
            type: string
            enum:
            - Bad Request
            default: Bad Request
            example: Bad Request
          message:
            type: string
            default: >-
              The request could not be understood by the server due to malformed
              syntax. The client SHOULD NOT repeat the request without modifications.
            example: >-
              The request could not be understood by the server due to malformed
              syntax. The client SHOULD NOT repeat the request without modifications.
          timestamp:
            description: "The time that the error occurred. All dates in the\
              \ JSON payloads are represented in ISO 8601 date-time format.\
              \ \nAll date-time fields in responses must include the timezone."
            type: string
            format: date-time
            example: '2017-04-05T10:43:07+00:00'
          type:
            type: string
            enum:
            - INVALID_REQUEST_ERROR
            default: INVALID_REQUEST_ERROR
            example: INVALID_REQUEST_ERROR
          param:
            description: >-
              The parameter the error relates to if the error is parameter-specific.
              You can use this to display a message near the correct form
              field, for example.
            type: string
      required:
      - code
      - title
      - message
      - type
      additionalProperties: false
    Geometry:
      title: Geometry
      description: >-
        Geometry type based on GeoJson.




        To specify a geography point use:


        "geometry": { "type": "Point", "coordinates": [longitude, latitude]
        }
      type: object
      externalDocs:
        url: http://geojson.org
      properties:
        type:
          $ref: '#/components/schemas/GeometryTypeEnum'
      discriminator:
        propertyName: type
        mapping:
          Point: '#/components/schemas/Point'
          LineString: '#/components/schemas/LineString'
          MultiLineString: '#/components/schemas/MultiLineString'
          MultiPoint: '#/components/schemas/MultiPoint'
          MultiPolygon: '#/components/schemas/MultiPolygon'
          Polygon: '#/components/schemas/Polygon'
      oneOf:
      - title: Point
        allOf:
        - $ref: '#/components/schemas/Point'
      - title: LineString
        allOf:
        - $ref: '#/components/schemas/LineString'
      - title: MultiLineString
        allOf:
        - $ref: '#/components/schemas/MultiLineString'
      - title: MultiPoint
        allOf:
        - $ref: '#/components/schemas/MultiPoint'
      - title: MultiPolygon
        allOf:
        - $ref: '#/components/schemas/MultiPolygon'
      - title: Polygon
        allOf:
        - $ref: '#/components/schemas/Polygon'
    PoiCutoverConfigurationBase:
      title: POI Cutover Configuration
      description: >-
        This configuration sets the type of batch strategy and forced cutover
        settings for a group of terminals.
      type: object
      required:
      - poiCutoverConfigurationId
      - poiCutoverStrategy
      properties:
        poiCutoverConfigurationId:
          $ref: '#/components/schemas/PoiCutoverConfigurationId'
        terminalBatchType:
          $ref: '#/components/schemas/TerminalBatchTypeEnum'
        poiCutoverStrategy:
          $ref: '#/components/schemas/PoiCutoverStrategyEnum'
        cutoverType:
          $ref: '#/components/schemas/CutoverType'
        forcedCutoverTime:
          $ref: '#/components/schemas/CutoverTime'
        batchTotalsBreakDownStrategy:
          $ref: '#/components/schemas/BatchTotalsBreakDownStrategyEnum'
        reportingGroupConfigId:
          $ref: '#/components/schemas/ReportingGroupConfigId'
        processor:
          $ref: '#/components/schemas/PaymentProcessorAcquirerTypeEnum'
        blockingMode:
          type: boolean
          default: false
          description: >-
            A boolean indicating whether the POI will be blocked from transacting
            during the batch close. In this mode TBS will set `lockedForCutover
            = true` on the POI record in the real-time collection. This will
            then be used by the Pre-processor to block any transactions occurring
            during async batch close.
      discriminator:
        propertyName: poiCutoverStrategy
        mapping:
          FLEXIBLE_BATCH: '#/components/schemas/PoiCutoverConfigurationFlexible'
          ONE_BATCH_PER_TRADING_DATE: '#/components/schemas/PoiCutoverConfigurationOneBatch'
      oneOf:
      - title: FLEXIBLE_BATCH
        allOf:
        - $ref: '#/components/schemas/PoiCutoverConfigurationFlexible'
      - title: ONE_BATCH_PER_TRADING_DATE
        allOf:
        - $ref: '#/components/schemas/PoiCutoverConfigurationOneBatch'
    CrossBorder:
      description: >-
        Specifies if a cross border fee is charged.


        You can either specify that the fee applies for any country (<strong>ANY_COUNTRY</strong>),
        specific countries (<strong>INCLUDED_COUNTRIES</strong>) or you can
        exclude countries (<strong>EXCLUDED_COUNTRIES</strong>).
      required:
      - crossBorderFeeType
      properties:
        crossBorderFeeType:
          type: string
          enum:
          - ANY_COUNTRY
          - EXCLUDED_COUNTRIES
          - INCLUDED_COUNTRIES
      discriminator:
        propertyName: crossBorderFeeType
        mapping:
          ANY_COUNTRY: '#/components/schemas/CrossBorderAnyCountry'
          EXCLUDED_COUNTRIES: '#/components/schemas/CrossBorderExcludedCountries'
          INCLUDED_COUNTRIES: '#/components/schemas/CrossBorderIncludedCountries'
      oneOf:
      - title: ANY_COUNTRY
        allOf:
        - $ref: '#/components/schemas/CrossBorderAnyCountry'
      - title: EXCLUDED_COUNTRIES
        allOf:
        - $ref: '#/components/schemas/CrossBorderExcludedCountries'
      - title: INCLUDED_COUNTRIES
        allOf:
        - $ref: '#/components/schemas/CrossBorderIncludedCountries'
    PoiOrder:
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseOrderData'
      - properties:
          packageDetails:
            $ref: '#/components/schemas/PackageDetails'
          contract:
            $ref: '#/components/schemas/MerchantContract'
          entityUid:
            $ref: '#/components/schemas/EntityUid'
          shippingAddress:
            $ref: '#/components/schemas/AddressWithoutType'
          billingAddress:
            $ref: '#/components/schemas/AddressWithoutType'
          requestedDateOfShipment:
            $ref: '#/components/schemas/RequestedDateOfShipment'
          pois:
            type: array
            items:
              $ref: '#/components/schemas/BasePoiType'
          merchantId:
            maxLength: 75
            pattern: ^[a-zA-Z0-9]+$
            type: string
            description: >-
              The Merchant identifier to which POIs under this order should
              refer to while linking a Payment Provider Contract.A new PPC
              will be created & linked if the MID doesn't already exist or
              left blank.
      required:
      - entityUid
      - pois
    BaseOrderData:
      type: object
      properties:
        orderReference:
          $ref: '#/components/schemas/OrderReference'
        customerEntityUid:
          type: string
          format: uuid
          description: >-
            Verifone allocated ID for the customer this order is for (packages
            and bundles are associated with this entity).
        requestedDate:
          type: string
          description: The requested date for this order.
          format: date-time
        deferredOrderProcessingDate:
          type: string
          format: date-time
          description: >-
            Defers order processing until the specified ISO 8601 UTC datetime
            (e.g. 2026-06-20T09:00:00Z). The workflow will not start before
            this point. If absent, processing begins immediately.
          example: '2026-06-20T09:00:00Z'
        poRef:
          type: string
          description: Purchase Order Reference
          example: '85219587'
        paymentDetails:
          $ref: '#/components/schemas/PaymentDetails'
        notes:
          type: string
          description: Notes for the Order
          example: Current in draft, caller got busy, callback anothertime.
        additionalOrderData:
          type: array
          description: >-
            Input data which maybe required for the country/business unit
            to to complete the order. For example some countries require a
            VAT ID, or different legal forms of business, this will be defined
            by Verifone if needed for your integration
          maxItems: 100
          items:
            $ref: '#/components/schemas/VariableResponseType'
      required:
      - orderReference
      - customerEntityUid
    PoiMaintenanceOrder:
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseOrderData'
      - properties:
          maintenanceType:
            type: string
            enum:
            - Swapout
            - Recovery
          deliveryPackage:
            $ref: '#/components/schemas/BundleAndData'
      required:
      - maintenanceType
    PoiAccessoryOrder:
      description: Accessory & corresponding package details
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseOrderData'
      - properties:
          accessory:
            $ref: '#/components/schemas/PoiAccessory'
      required:
      - accessory
    MerchantOrder:
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseOrderData'
      - properties:
          packageDetails:
            $ref: '#/components/schemas/PackageDetails'
          contract:
            $ref: '#/components/schemas/MerchantContract'
          merchant:
            $ref: '#/components/schemas/BaseMerchant'
      required:
      - merchant
    HardwareOrder:
      type: object
      allOf:
      - $ref: '#/components/schemas/HardwareOrderData'
      - type: object
        properties:
          packageDetails:
            $ref: '#/components/schemas/PackageDetails'
          merchant:
            $ref: '#/components/schemas/HardwareMerchant'
        required:
        - merchant
    HardwareOrderData:
      type: object
      properties:
        orderReference:
          $ref: '#/components/schemas/OrderReference'
        customerEntityUid:
          type: string
          format: uuid
          description: >-
            Verifone allocated ID for the customer this order is for (packages
            and bundles are associated with this entity).
        requestedDate:
          type: string
          description: The requested date for this order.
          format: date-time
        poRef:
          type: string
          description: Purchase Order Reference
          example: '85219587'
        paymentDetails:
          $ref: '#/components/schemas/PaymentDetails'
        notes:
          type: string
          description: Notes for the Order
          example: Current in draft, caller got busy, callback anothertime.
        additionalOrderData:
          type: array
          description: >-
            Input data which maybe required for the country/business unit
            to to complete the order. For example some countries require a
            VAT ID, or different legal forms of business, this will be defined
            by Verifone if needed for your integration
          maxItems: 100
          items:
            $ref: '#/components/schemas/VariableResponseType'
      required:
      - orderReference
      - customerEntityUid
    BatchDetailsUpdatable:
      description: Modifiable details of a batch.
      type: object
      properties:
        processingStatus:
          $ref: '#/components/schemas/BatchStatus'
        responseFileSent:
          type: boolean
          default: false
        responseFileName:
          type: string
          maxLength: 200
    BaseAddressWithoutType:
      description: An Address following the convention of http://microformats.org/wiki/hcard
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseAddress'
      properties:
        contact:
          $ref: '#/components/schemas/ContactType'
        vfiSiteId:
          maxLength: 50
          minLength: 1
          type: string
          description: Address/Site identifier known as within Verifone internal
            systems.
        storeNumber:
          type: string
          description: Store Number or Client/Customer ID in Oracle
        governmentOwned:
          type: boolean
          description: >-
            Indicates whether the address is government-owned. E.g. Address
            can be in Sweden, but can be a US Embassy.
        governmentCountry:
          $ref: '#/components/schemas/CountryCode3Enum'
    AdditionalServicesOrder:
      description: Additional services order & package details
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseOrderData'
      - properties:
          portfolioUid:
            description: >-
              Verifone ID for the Portfolio Selected. If this is not provided
              then a default portfolio will be used.
            type: string
            format: uuid
            example: 32c480b5-4dfb-4c53-959f-49edf45a0931
          contract:
            $ref: '#/components/schemas/MerchantContract'
          servicePackages:
            type: array
            minItems: 1
            maxItems: 100
            items:
              $ref: '#/components/schemas/ServicePackageWithPPC'
          shippingAddress:
            $ref: '#/components/schemas/AddressWithoutType'
          billingAddress:
            $ref: '#/components/schemas/AddressWithoutType'
          serviceTarget:
            $ref: '#/components/schemas/BaseServiceTarget'
      required:
      - serviceTarget
      - servicePackages
    SepaAccount:
      title: SEPA Bank Account
      description: A SEPA Account structure extending the base account
      allOf:
      - $ref: '#/components/schemas/Account'
      - properties:
          country:
            $ref: '#/components/schemas/CountryCode3Enum'
          accountName:
            type: string
            description: Name of the account as known by the financial institution
              operating the account.
          iban:
            $ref: '#/components/schemas/IBANIdentifier'
          bic:
            $ref: '#/components/schemas/BICIdentifier'
    RequiredDocument:
      type: object
      description: Merchant Required Document Details
      properties:
        documentId:
          type: string
          format: uuid
          description: Unique identifier for the document.
        documentName:
          type: string
          maxLength: 100
          description: Name of the document.
        displayName:
          type: string
          maxLength: 100
          description: Display name of the document shown to end user.
        status:
          $ref: '#/components/schemas/DocumentStatusEnum'
          description: Current status of the document.
        allowedContentTypes:
          type: array
          description: List of supported content types.
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/ContentTypeEnum'
        allowedContentLength:
          type: integer
          format: int64
          description: >
            Size of the uploaded document in bytes.  Default is 2 MB (2097152
            bytes), maximum allowed is 8 MB (8388608 bytes).
          default: 2097152
          maximum: 8388608
        contact:
          $ref: '#/components/schemas/ContractContactType'
      required:
      - documentId
      - documentName
      - status
      - allowedContentTypes
    DomesticAccount:
      title: Domestic Bank Account
      description: A Domestic Bank Account structure extending the base account.
      allOf:
      - $ref: '#/components/schemas/Account'
      - properties:
          accountName:
            description: Name of the account as known by the financial institution
              operating the account.
            type: string
            example: Coffee Supreme LTD
          sortCode:
            description: The UK Sorting Code identifier the sort code is xx
              xx xx.
            type: string
            pattern: ^[0-9]{6,6}$
            example: '301105'
          bsb:
            description: >-
              An Australian/New Zealand term for the Bank State Branch indicator.
              It is a 6 digit value constructed with the first 2 digits identifying
              the bank.
            type: string
            pattern: ^[0-9]{6,6}$
            example: 022039
          routingTransitNumber:
            type: string
            description: >-
              Routing transit number for the bank account. A routing transit
              number is a nine-digit number used to identify a bank or financial
              institution when clearing funds or processing checks. Established
              by the American Bankers Association (ABA).
            pattern: ^[0-9]{9,9}$
            example: '247484410'
          accountNumberType:
            description: >-
              The type of the `accountNumber` which asserts the format of
              the number:
               - `BANKGIRIT`: Up to 9 characters (example: 123-4567 or 1234-5678)
               - `PLUSGIROT`: Up to 24 characters; starts with "SE50"
               - `DEFAULT`: Format-less value
            type: string
            enum:
            - BANKGIROT
            - PLUSGIROT
            - DEFAULT
            default: DEFAULT
          accountNumber:
            description: The number of the account.
            type: string
            example: '23008275'
    Name:
      title: Name Details
      description: >-
        An object representing the name or component names of a party, person
        or business. No elements are mandatory due to the different usages,
        but the business rules need to be applied in the context where name
        is used.
      type: object
      uniqueItems: false
      properties:
        firstName:
          description: The given name of contact.
          type: string
          minLength: 1
          maxLength: 120
        lastName:
          description: >-
            The surname name or family name of the contact. This is required
            when the name is for a party or person. Can also include the matronymic
            or mother's family name where this is customarily used.
          minLength: 1
          maxLength: 120
          type: string
        prefix:
          description: >-
            The prefix to the party name. This is sometimes referred to as
            a title, salutation or appellation.
          maxLength: 120
          type: string
        alternateFullName:
          description: >-
            The alternate name for the party. This can be a business name
            or nickname. This should be used where the name of the party cannot
            be parsed into its constituent parts such as first name or last
            name. If the party is a business then this should always be present.
          maxLength: 200
          type: string
        middleName:
          description: The middle name or names for a party or person.
          maxLength: 120
          type: string
        suffix:
          description: The name suffix for the party.
          maxLength: 120
          type: string
      required:
      - firstName
      - lastName
    ErrorResp:
      title: Error
      description: >-
        A common Error object returned as part of the API layer.


        . This is modified to become the base class for all of the derived
        HTTP Error Responses.
      type: object
      properties:
        reversalStatus:
          description: >-
            Indicates to the API client if a technical reversal is required
            or has been completed by Verifone.


            |Value|Description|

            |-|-|

            |NONE|Reversal status is not set. This indicates the status of
            reversal processing is not known and the client should implement
            default reversal processing.|

            |REQUIRED|A reversal is required by the client.|

            |COMPLETED|A reversal has been completed by verifone or a reversal
            is not required for this transaction.|
          type: string
          enum:
          - NONE
          - REQUIRED
          - COMPLETED
          default: NONE
      required:
      - code
    Account:
      title: Account
      description: >-
        Unambiguous identification of an account to which credit and debit
        entries are made.


        These entries are based on the Open Banking standards used in various
        countries - UK, Australia, New Zealand as well as a combination of
        details from the ISO20022 account properties.
      additionalProperties: false
      properties:
        currency:
          $ref: '#/components/schemas/CurrencyCodeEnum'
        accountHolderType:
          type: string
          enum:
          - BUSINESS
          - PERSONAL
          default: BUSINESS
        description:
          description: Specifies the description of the account type.
          type: string
          minLength: 1
          maxLength: 35
          example: Coffee Supreme Trading
        nickname:
          description: >-
            The nickname of the account, assigned by the account owner in
            order to provide an additional means of identification of the
            account.
          type: string
          minLength: 1
          maxLength: 70
          example: Store 1 Account
    WorkflowStateType:
      type: object
      properties:
        workflowState:
          description: Workflow state value.
          type: string
        lastChangeDateTime:
          description: The last time this workflow or tasks were updated.
          type: string
          format: date-time
        tasks:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/TaskState'
    TriggerDraftUpsellsRequest:
      title: TriggerDraftUpsellsRequest
      type: object
      description: >-
        Request to trigger async re-submission of DRAFT upsell wait orders
        belonging to a merchant, called after OBS or entity wallet creation
        completes.
      required:
      - customerEntityUid
      properties:
        customerEntityUid:
          type: string
          format: uuid
          description: >-
            The customer entity UID of the merchant whose parent order has
            completed. Used to query draft ECNS and POI upsell orders.
        merchantCompanyEntityUid:
          type: string
          format: uuid
          description: >-
            The merchant company entity UID. Used to scope the ECNS draft
            upsell query and determine whether the parent order has been signed.
        entityUid:
          type: string
          format: uuid
          description: >-
            The entity UID of the signed parent order. Used to query draft
            POI upsell orders and look up the parent order signing status.
    StatusUpdate:
      description: Update status request.
      type: object
      properties:
        newStatus:
          $ref: '#/components/schemas/OrderStatusEnum'
        newStatusExtended:
          $ref: '#/components/schemas/DetailedStatusEnum'
      required:
      - newStatus
    ExtendedStatusResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/OrderStatusEnum'
        workflow:
          $ref: '#/components/schemas/WorkflowStateType'
      required:
      - status
    AccountSitesResponse:
      description: Account Sites Response.
      type: object
      properties:
        sites:
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/AccountSite'
    AddressLine:
      description: Address Line. Should include street and apartment number
        if required.
      type: string
      minLength: 1
      maxLength: 40
      example: 213 Miller Street
    TaskState:
      description: A workflow task state.
      type: object
      properties:
        name:
          description: Name of the task coming from the workflow.
          type: string
        state:
          description: State value.
          type: string
        timestamp:
          format: date-time
          type: string
    AccountSite:
      title: Account Site
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseAccountSite'
      - properties:
          linkedSites:
            type: array
            maxItems: 50
            items:
              $ref: '#/components/schemas/BaseAccountSite'
    BaseAccountSite:
      title: Base Account Site
      type: object
      allOf:
      - $ref: '#/components/schemas/BaseAddressWithoutType'
      - properties:
          sitePurpose:
            description: Site Purpose.
            type: string
            enum:
            - BILL
            - SHIP
          groupNumber:
            description: Group Number which this site is linked to.
            type: string
          activeBank:
            $ref: '#/components/schemas/ActiveBank'
          customerId:
            $ref: '#/components/schemas/CustomerId'
