openapi: 3.0.0
servers:
  - url: 'https://api.devbank.apiture.com/transfers'
info:
  title: Transfers
  description: >
    Clients can use the Transfers API to schedule transfer requests to move funds from one account to another. Transfers are one-time transfers or
    recurring transfers, based on the transfer's [`schedule`](#schema-schedule). To schedule a new transfer, use the
    [`createScheduledTransfer`](#op-createScheduledTransfer) operation. Use the [`getScheduledTransfers`](#op-getScheduledTransfers) operation to list
    the user's scheduled transfers. Scheduled transfers which have been processed are automatically removed from `/scheduledTransfers`. The
    [`getPastTransfers`](#op-getPastTransfers) operation returns the history of processed or canceled transfers.


    # Error Types


    Error responses in this API may have one of the `type` values described below.

    See [Errors](https://developer.apiture.com/docs/concepts/errors) for more information

    on error responses and error types.




    <h2 class='errorType' id="err-duplicateTransfer">duplicateTransfer</h2>


    **Description**: The given transfer is a duplicate of a transfer that already exists. <br>

    **Remediation**: Check to make sure that the transfer does not already exist. If this is intentional, resubmit with a different transfer
    description.



    <h2 class='errorType' id="err-endDateIsEarlierThanStartDate">endDateIsEarlierThanStartDate</h2>


    **Description**: Scheduled transfer end date is earlier than start date. <br>

    **Remediation**: Check to make sure that your scheduled end date is later than scheduled start date.



    <h2 class='errorType' id="err-externalAccountIsNotVerified">externalAccountIsNotVerified</h2>


    **Description**: The external account in the transfer request is not verified. <br>

    **Remediation**: Resubmit the operation with a verified external account in the request.



    <h2 class='errorType' id="err-inactiveAccount">inactiveAccount</h2>


    **Description**: The given account is not currently active. <br>

    **Remediation**: Make sure the source and target accounts are active accounts and resubmit the operation.



    <h2 class='errorType' id="err-invalidAccountId">invalidAccountId</h2>


    **Description**: No Accounts were found for the specified accountId. <br>

    **Remediation**: Check to make sure that the supplied accountId corresponds to an apiture account resource.



    <h2 class='errorType' id="err-invalidConfigurationGroup">invalidConfigurationGroup</h2>


    **Description**: The request body did not conform to the schema for this configuration group. <br>

    **Remediation**: Check the schema for the configuration group and resubmit the operation.



    <h2 class='errorType' id="err-invalidConfigurationValue">invalidConfigurationValue</h2>


    **Description**: The request body did not conform to the schema for this configuration group value. <br>

    **Remediation**: Check the schema for the configuration group value and resubmit the operation.



    <h2 class='errorType' id="err-invalidDate">invalidDate</h2>


    **Description**: The start date that was specified in the transfer is not valid. <br>

    **Remediation**: Resubmit the operation with a valid start date in the ISO 8601 format.



    <h2 class='errorType' id="err-invalidExternalAccount">invalidExternalAccount</h2>


    **Description**: The external account that was specified in transfer request is invalid, as it either does not exist or does not contain links.
    <br>

    **Remediation**: Resubmit the operation with an existing external account that contains links.



    <h2 class='errorType' id="err-invalidFirstLastTransfer">invalidFirstLastTransfer</h2>


    **Description**: first and last may not both be true when scheduling a recurring transfer. <br>

    **Remediation**: Set at least one of first or last to false and resubmit the operation.



    <h2 class='errorType' id="err-invalidFundingTransferStateChange">invalidFundingTransferStateChange</h2>


    **Description**: A transfer that is funding the opening of a new account cannot be canceled or deleted. <br>

    **Remediation**: Ensure the transfer you are trying to change is not an account funding transfer.



    <h2 class='errorType' id="err-invalidGroupName">invalidGroupName</h2>


    **Description**: No configurationGroup was found for the specified groupName. <br>

    **Remediation**: Check to make sure that the supplied groupName corresponds to an apiture transfer configuration group resource.



    <h2 class='errorType' id="err-invalidPastTransferId">invalidPastTransferId</h2>


    **Description**: No pastTransfers were found for the specified pastTransferId. <br>

    **Remediation**: Check to make sure that the supplied pastTransferId corresponds to an apiture pastTransfer resource.



    <h2 class='errorType' id="err-invalidScheduleStart">invalidScheduleStart</h2>


    **Description**: The requested transfer start date is an unprocessable date or the requested start date is today and the cutoff time has passed.
    <br>

    **Remediation**: Check the transfers configuration values for both unprocessable days and cutoff time.



    <h2 class='errorType' id="err-invalidScheduledTransfer">invalidScheduledTransfer</h2>


    **Description**: The request to create a scheduled transfer was not valid. <br>

    **Remediation**: Check to make sure the schedule exists and that the start date also exists. Also make sure the start date is a future date or
    time.



    <h2 class='errorType' id="err-invalidScheduledTransferId">invalidScheduledTransferId</h2>


    **Description**: No scheduledTransfers were found for the specified scheduledTransferId. <br>

    **Remediation**: Check to make sure that the supplied scheduledTransferId corresponds to an apiture scheduledTransfer resource.



    <h2 class='errorType' id="err-invalidTransferState">invalidTransferState</h2>


    **Description**: A transfers state can only be patched if it is in a scheduled, recurring, or suspended state. <br>

    **Remediation**: Check the state of the transfer and the applicable allowed state transitions in the Transfers API documentation.



    <h2 class='errorType' id="err-invalidValueName">invalidValueName</h2>


    **Description**: No configurationName was found for the specified valueName. <br>

    **Remediation**: Check to make sure that the supplied valueName corresponds to an apiture transfer configuration value resource.



    <h2 class='errorType' id="err-malformedAccountUri">malformedAccountUri</h2>


    **Description**: The supplied accountUri was malformed. <br>

    **Remediation**: Check to make sure that the supplied accountUri corresponds to an apiture account resource.



    <h2 class='errorType' id="err-malformedEveryField">malformedEveryField</h2>


    **Description**: Required field "schedule.every" must conform to the ISO 8601 standard for durations. <br>

    **Remediation**: Resubmit the operation with a ISO 8601 valid date.



    <h2 class='errorType' id="err-malformedRequestBody">malformedRequestBody</h2>


    **Description**: The supplied request body was malformed. <br>

    **Remediation**: Check to make sure that your request body exists and that it does not contain syntax errors.



    <h2 class='errorType' id="err-malformedSourceAccountUri">malformedSourceAccountUri</h2>


    **Description**: The supplied sourceAccountUri was malformed. <br>

    **Remediation**: Check to make sure that the supplied sourceAccountUri corresponds to an apiture account resource.



    <h2 class='errorType' id="err-malformedTargetAccountUri">malformedTargetAccountUri</h2>


    **Description**: The supplied targetAccountUri was malformed. <br>

    **Remediation**: Check to make sure that the supplied targetAccountUri corresponds to an apiture account resource.



    <h2 class='errorType' id="err-malformedTransferUri">malformedTransferUri</h2>


    **Description**: The supplied scheduledTransferUri was malformed. <br>

    **Remediation**: Check to make sure that the supplied ScheduledTransferUri corresponds to an apiture transfer resource and the uri is in the
    correct format.



    <h2 class='errorType' id="err-missingAccountInTransfer">missingAccountInTransfer</h2>


    **Description**: Either the source, target, or both accounts are missing in the transfer request. <br>

    **Remediation**: Resubmit the request with a valid source and target account in the links.



    <h2 class='errorType' id="err-missingAccountInformationForTransfer">missingAccountInformationForTransfer</h2>


    **Description**: The linked source and target accounts are missing fields required to make a transfer. <br>

    **Remediation**: Update the accounts to have valid values for all required fields.


    The `attributes` object in the error may have the following properties:


    | Property | Type | Description |

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

    | requiredFields | [undefined] | A list of the required fields that must be passed in the createScheduledTransfer request. |



    <h2 class='errorType' id="err-resumeTransferStateInvalidState">resumeTransferStateInvalidState</h2>


    **Description**: The specified scheduled transfer is in a state that does not allow resuming. Only suspended transfers can be resumed. <br>

    **Remediation**: Check the state of the transfer and the applicable allowed state transitions in the Transfers API documentation.


    The `attributes` object in the error may have the following properties:


    | Property | Type | Description |

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

    | requiredStates | [string] | The transfer must be in one of these states in order to perform the requested action.<br>Example: `suspended` |



    <h2 class='errorType' id="err-setStatusFailed">setStatusFailed</h2>


    **Description**: Could not resolve scheduled transfer resource set status. <br>

    **Remediation**: Perform a get to make sure the state update did not occur. Resubmit the operation, if it did not.



    <h2 class='errorType' id="err-sourceAndTargetAccountsAreSame">sourceAndTargetAccountsAreSame</h2>


    **Description**: Source account and target account are the same account. <br>

    **Remediation**: Check to make sure that source account is different from target account.



    <h2 class='errorType' id="err-transferAmountBelowMinimum">transferAmountBelowMinimum</h2>


    **Description**: The transfer amount must be greater than or equal to any stated minimums. <br>

    **Remediation**: A transfer must have an amount that is greater than 0.00, check your submitted amount.


    The `attributes` object in the error may have the following properties:


    | Property | Type | Description |

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

    | minimum | string | The minimum transfer amount in whole dollars. The numeric value is represented as a string so that it can be exact with no
    loss of precision.<br>Example: `0.00` |



    <h2 class='errorType' id="err-transferCannotBeSuspended">transferCannotBeSuspended</h2>


    **Description**: The transfer cannot be suspended due to constraints in the banking core. <br>

    **Remediation**: Cancel the recurring transfer and create a new one.



    <h2 class='errorType' id="err-transferCannotBeToAndFromExternal">transferCannotBeToAndFromExternal</h2>


    **Description**: A transfer cannot take place between two external accounts. <br>

    **Remediation**: Ensure that the source and target accounts in the request are correct, and resubmit with at least one internal account.



    <h2 class='errorType' id="err-transferCoreLimitExceeded">transferCoreLimitExceeded</h2>


    **Description**: The value of the transfer exceeds a transfer limit allowed by the banking core. <br>

    **Remediation**: Resubmit the request with a valid amount.



    <h2 class='errorType' id="err-transferDailyLimitExceeded">transferDailyLimitExceeded</h2>


    **Description**: The value of the transfer exceeds the daily transfer limit allowed for this user. <br>

    **Remediation**: Resubmit the request with a valid amount.



    <h2 class='errorType' id="err-transferSingleLimitExceeded">transferSingleLimitExceeded</h2>


    **Description**: The value of the transfer exceeds the single transfer limit allowed for this user. <br>

    **Remediation**: Resubmit the request with a valid amount.



    <h2 class='errorType' id="err-undefinedTransferId">undefinedTransferId</h2>


    **Description**: The transferId that was passed into the update was undefinedTransferIdBadRequest. <br>

    **Remediation**: Resubmit the operation with a transferId.



    <h2 class='errorType' id="err-updateTransferFailed">updateTransferFailed</h2>


    **Description**: A server issue occurred while updating the transfer. <br>

    **Remediation**: Perform a get to make sure the update did not occur. Resubmit the operation, if it did not.



    <h2 class='errorType' id="err-updateTransferInvalidState">updateTransferInvalidState</h2>


    **Description**: The specified scheduled transfer is in a state that does not allow this action. <br>

    **Remediation**: Check the state of the transfer and the applicable allowed state transitions in the Transfers API documentation.
  version: 0.16.1
  contact:
    name: Apiture
    url: 'https://developer.apiture.com'
    email: api@apiture.com
  termsOfService: 'https://developer.apiture.com/docs/Apiture-Open-API-License-Agreement.pdf'
tags:
  - name: Scheduled Transfer
    description: Scheduled transfers from a source account to a target account
  - name: Transfer
    description: Deprecated; use Scheduled Transfer and Past Transfer operations
  - name: Past Transfer
    description: Processed transfers
  - name: Configuration
    description: A set of endpoints that allows for the creation and retrieval of configuration options specific to this service
  - name: API
    description: Endpoints which describe this API.
paths:
  /scheduledTransfers:
    get:
      summary: Return a collection of scheduled transfers
      description: >-
        Return a [paginated](https://developer.apiture.com/docs/concepts/pagination) [sortable](https://developer.apiture.com/docs/concepts/sorting)
        [filterable](https://developer.apiture.com/docs/concepts/filtering) [searchable](https://developer.apiture.com/docs/concepts/searchable)
        collection of transfers. The [links](https://developer.apiture.com/docs/concepts/links) in the response include pagination links.
      operationId: getScheduledTransfers
      security:
        - apiKey: []
          accessToken:
            - banking/read
      tags:
        - Scheduled Transfer
      x-apiture-traits:
        sortBy:
          - state
          - name
          - createdAt
          - start
        itemSchema: scheduleTransfer
        filters:
          account:
            filter:
              - eq
              - in
          sourceAccount:
            filter:
              - eq
              - in
          targetAccount:
            filter:
              - eq
              - in
          state:
            filter:
              - eq
              - ne
              - in
          name:
            filter:
              - eq
              - ne
              - lt
              - le
              - gt
              - ge
              - startsWith
              - endsWith
              - contains
              - search
          _id:
            filter:
              - eq
              - in
      parameters:
        - name: start
          in: query
          description: The zero-based index of the first transfer item to include in this page. The default 0 denotes the beginning of the collection.
          schema:
            type: integer
            format: int64
            default: 0
        - name: limit
          in: query
          description: The maximum number of transfer representations to return in this page.
          schema:
            type: integer
            format: int32
            default: 100
        - name: sortBy
          in: query
          description: >-
            Optional sort criteria. See [sort criteria format](https://developer.apiture.com/docs/concepts/sorting), such as
            `?sortBy=field1,-field2`.<br>This collection may be sorted by following properties:<br>&bullet; `state`<br>&bullet; `name`<br>&bullet;
            `createdAt`<br>&bullet; `start`
          schema:
            type: string
        - name: filter
          in: query
          description: >-
            Optional filter criteria. See [filtering](https://developer.apiture.com/docs/concepts/filtering).<br>This collection may be filtered by
            following properties and functions:<br>&bullet;  Property `account` using functions `eq`,  `in`<br>&bullet;  Property `sourceAccount`
            using functions `eq`,  `in`<br>&bullet;  Property `targetAccount` using functions `eq`,  `in`<br>&bullet;  Property `state` using
            functions `eq`,  `ne`,  `in`<br>&bullet;  Property `name` using functions `eq`,  `ne`,  `lt`,  `le`,  `gt`,  `ge`,  `startsWith`, 
            `endsWith`,  `contains`,  `search`<br>&bullet;  Property `_id` using functions `eq`,  `in`
          schema:
            type: string
        - $ref: '#/components/parameters/qQueryParam'
        - $ref: '#/components/parameters/stateQueryParam'
        - $ref: '#/components/parameters/nameQueryParam'
        - $ref: '#/components/parameters/accountQueryParam'
        - $ref: '#/components/parameters/sourceAccountQueryParam'
        - $ref: '#/components/parameters/targetAccountQueryParam'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/scheduledTransfers'
            application/json:
              schema:
                $ref: '#/components/schemas/scheduledTransfers'
        '400':
          $ref: '#/components/responses/400'
        '422':
          $ref: '#/components/responses/422'
    post:
      summary: Create a new scheduled transfer request
      description: >-
        This operation adds either a new one-time or a recurring transfer, depending on the content of the embedded `schedule`.  The request includes
        the amount of the transfer in the body, and the source and target accounts in the request's `_links` via the link relations `apiture:source`
        and `apiture:target`. The accounts must be active and available for transfers and the amount must be in the allowed transfer range.


        If the request's transfer date (`schedule.start`) is the current day, the financial institution is processing transfers on that day, and the
        time is _before_ the financial institution's transfer processing cutoff time, internal transfers will be processed as soon as possible and the
        transfer `state` will change to `processing` and then `completed`. If the request's transfer date (`schedule.start`) is the current day and
        the time is _past_ the cutoff time, the transfer will be processed on the _next_ processing day. The cutoff time is available as `cutoffTime`
        via this service's `basic` configuration values `GET /transfers/configurations/groups/basic/values`; those values are defined by the JSON
        schema `GET /transfers/configurations/groups/basic/schema`.


        If the transfer is scheduled for a future date that  is _not_ a valid transfer processing day, the request fails with a 400 error. The
        holidays and other non-processing days are available via this service's `calendar` configuration values `GET
        /transfers/configurations/groups/calendar/values`; those values are defined by the JSON schema `GET
        /transfers/configurations/groups/calendar/schema`.


        The service will reject duplicate requests, defined by a request that exactly matches an existing transfer (same `amount`, `schedule`,
        `description`, source and target accounts), returning a *409 Conflict* status. To schedule a duplicate transfer with the same amount,
        schedule, and accounts, change at least the `description`.


        Scheduled transfers will be deleted automatically at some point after they have completed (typically 7 days), up until which they are
        available with a `state` of `completed` if successful or `failed` if not.
      operationId: createScheduledTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/write
      tags:
        - Scheduled Transfer
      responses:
        '201':
          description: Created
          headers:
            Location:
              description: >-
                The URI of the new resource. If the URI begins with / it is relative to the API root context. Else, it is a full URI starting with
                *`scheme`*`://host`
              schema:
                type: string
                format: uri
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update the resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
            application/json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404ScheduledTransfer'
        '409':
          description: |-
            Conflict. A conflict can occur for several reasons:

              * A transfer that matches the request
              already exists. The service does not allow
              duplicate transfer requests, which probably reflect accidental
              duplicate `POST` operations from the client.
              * The source or target accounts do not allow the transfer.

            This error response may have one of the following `type` values:
            * [`duplicateTransfer`](#err-duplicateTransfer)
            * [`endDateIsEarlierThanStartDate`](#err-endDateIsEarlierThanStartDate)
            * [`sourceAndTargetAccountsAreSame`](#err-sourceAndTargetAccountsAreSame)
            * [`transferCoreLimitExceeded`](#err-transferCoreLimitExceeded)
          x-apiture-errors:
            - duplicateTransfer
            - endDateIsEarlierThanStartDate
            - sourceAndTargetAccountsAreSame
            - transferCoreLimitExceeded
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/errorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
      requestBody:
        content:
          application/hal+json:
            schema:
              $ref: '#/components/schemas/createScheduledTransfer'
          application/json:
            schema:
              $ref: '#/components/schemas/createScheduledTransfer'
        description: The data necessary to create a new transfer.
        required: true
  '/scheduledTransfers/{scheduledTransferId}':
    get:
      summary: Fetch a representation of this transfer
      description: >-
        Return a [HAL](https://developer.apiture.com/docs/concepts/hal) representation of this transfer resource.

        To also receive the full account number when fetching an account, include the `?unmasked=true` option. When linking an external account, the
        full account number should be in the `accountNumbers.full` property in the request.
      operationId: getScheduledTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/read
      tags:
        - Scheduled Transfer
      parameters:
        - $ref: '#/components/parameters/scheduledTransferIdPathParam'
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
        - $ref: '#/components/parameters/unmaskedQueryParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this transfer resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
            application/json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
        '304':
          $ref: '#/components/responses/304'
        '404':
          $ref: '#/components/responses/404ScheduledTransfer'
    delete:
      summary: Delete this scheduled transfer
      description: >-
        Delete this transfer. Any processing transfers may complete; future scheduled transfers, if this is a recurring transfer, will be canceled.
        After deleting a transfer, there is no direct access to the transactions or transaction errors.
      operationId: deleteScheduledTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/delete
      tags:
        - Scheduled Transfer
      parameters:
        - $ref: '#/components/parameters/ifMatchHeaderParam'
        - $ref: '#/components/parameters/scheduledTransferIdPathParam'
      responses:
        '204':
          description: No Content
        '404':
          $ref: '#/components/responses/404ScheduledTransfer'
        '412':
          $ref: '#/components/responses/412'
    patch:
      summary: Update this scheduled transfer
      description: >-
        Perform a partial update of this transfer. Fields which are omitted are not updated. Nested `_embedded` and `_links` are ignored if included.
        If the `state` of the transfer allows, this operation may change the `description`, `amount`, and `schedule`; the source and target accounts
        and `_embedded` objects may not be changed. In the schedule, the user may not changed the `count`. The user may not change the `state`.


        This update operation is subject to the same constraints defined in the `createTransfer` (`POST /transfers/transfers`) operation.
      operationId: patchScheduledTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/write
      tags:
        - Scheduled Transfer
      parameters:
        - $ref: '#/components/parameters/scheduledTransferIdPathParam'
        - $ref: '#/components/parameters/ifMatchHeaderParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this transfer resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
            application/json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404ScheduledTransfer'
        '409':
          description: >-
            Conflict. A conflict can occur if another existing transfer matches the request exactly. If similar transfers are desired, ensure at least
            the `description` is unique.
        '412':
          $ref: '#/components/responses/412'
        '422':
          $ref: '#/components/responses/422ScheduledTransfer'
      requestBody:
        content:
          application/hal+json:
            schema:
              $ref: '#/components/schemas/scheduledTransfer'
          application/json:
            schema:
              $ref: '#/components/schemas/scheduledTransfer'
        required: true
  /suspendedScheduledTransfers:
    post:
      summary: Suspend a scheduled transfer
      description: >-
        Suspend a scheduled recurring transfer. This disables future recurring transfers until the scheduled transfer is either resumed or canceled.
        Any transfers that would have occurred on dates that passed while suspended will not be processed on those dates.  Use the `apiture:resume` or
        `apiture:cancel` links on the instance to resume or cancel the remaining transfers. This operation is only valid on scheduled transfers which
        are in `recurring` state, and only if the underlying bank core support suspending transfers.


        This operation is invoked by submitting a `POST` to the `href` in the scheduled transfer's *`apiture:suspend`* link. The service includes the
        *`apiture:suspend`* link in the scheduled recurring transfer _if and only if_ the user may suspend the transfer _and_ if the banking core
        allows suspending. If the banking core does not allow suspending a recurring transfer, the user should instead
        [`cancel`](#op-cancelScheduledTransfer) the transfer and create a new one.


        A client can check if the institution supports suspending transfers by accessing the `suspendScheduledTransfersEnabled` property in the
        `basic` [`getConfigurationGroupValue`](#op-getConfigurationGroupValue).
      operationId: suspendScheduledTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/write
      x-apiture-implemented: true
      tags:
        - Scheduled Transfer
      parameters:
        - $ref: '#/components/parameters/scheduledTransferQueryParam'
        - $ref: '#/components/parameters/scheduledTransferUriQueryParam'
        - $ref: '#/components/parameters/ifMatchHeaderParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this transfer resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
            application/json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
        '400':
          description: |-
            Bad Request. The `scheduledTransferUri` was malformed or does not refer to a scheduled transfer.

            This error response may have one of the following `type` values:
            * [`malformedTransferUri`](#err-malformedTransferUri)
          x-apiture-errors:
            - malformedTransferUri
        '409':
          description: >-
            Conflict. The specified scheduled transfer is in a state that does not allow suspending, or the banking core does not allow suspending
            transfers.


            This error response may have one of the following `type` values:

            * [`updateTransferInvalidState`](#err-updateTransferInvalidState)

            * [`transferCannotBeSuspended`](#err-transferCannotBeSuspended)
          x-apiture-errors:
            - updateTransferInvalidState
            - transferCannotBeSuspended
        '412':
          $ref: '#/components/responses/412'
        '422':
          $ref: '#/components/responses/422ScheduledTransfer'
        '500':
          $ref: '#/components/responses/500ScheduledTransfer'
  /resumedScheduledTransfers:
    post:
      summary: Resume a suspended scheduled transfer
      description: >-
        `POST` the URI of a suspended scheduled transfer to resume it. This enables future recurring transfers. Any transfers that would have occurred
        on dates that passed while suspended will not be processed on those dates. See also the `extendSchedule` query parameter on this operation.
        This operation is only valid on scheduled transfers which are in the `suspended` state.


        This operation is invoked by submitting a `POST` to the `href` in the scheduled transfer's *`apiture:resume`* link, The link will be present
        if the transfer can be resumed.
      operationId: resumeScheduledTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/write
      x-apiture-implemented: true
      tags:
        - Scheduled Transfer
      parameters:
        - $ref: '#/components/parameters/scheduledTransferQueryParam'
        - $ref: '#/components/parameters/scheduledTransferUriQueryParam'
        - $ref: '#/components/parameters/ifMatchHeaderParam'
        - name: extendSchedule
          description: >-
            If true, the `schedule.end` will be extended if necessary so that the `maximumCount` number of transfers will be made (based on the
            periods in `every`).  The default value (`false`) prevents processing transfers that the user may not expect based on the original
            schedule. (The user may still update the `schedule.end` via `PATCH` to the scheduled transfer.)
          in: query
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this transfer resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
            application/json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
        '400':
          description: |-
            Bad Request. The `scheduledTransferUri` was malformed or does not refer to a scheduled transfer.

            This error response may have one of the following `type` values:
            * [`malformedTransferUri`](#err-malformedTransferUri)
          x-apiture-errors:
            - malformedTransferUri
        '409':
          description: |-
            Conflict. The specified scheduled transfer is in a state that does not allow resuming.

            This error response may have one of the following `type` values:
            * [`resumeTransferStateInvalidState`](#err-resumeTransferStateInvalidState)
            * [`updateTransferInvalidState`](#err-updateTransferInvalidState)
          x-apiture-errors:
            - resumeTransferStateInvalidState
            - updateTransferInvalidState
        '412':
          $ref: '#/components/responses/412'
        '422':
          $ref: '#/components/responses/422ScheduledTransfer'
        '500':
          $ref: '#/components/responses/500ScheduledTransfer'
  /canceledScheduledTransfers:
    post:
      summary: Cancel a scheduled transfer
      description: >-
        `POST` the URI of a scheduled transfer to cancel it. This cancels all future recurring transfers. Any transfers that would have occurred on
        future dates will be canceled. This operation is only valid on scheduled transfers which are in the `scheduled`, `recurring`, or `suspended`
        state. It may also be allowed if the transfer state is `processing`  and the optional cutoff time has not passed.


        This operation is invoked by submitting a `POST` to the `href` in the scheduled transfer's *`apiture:cancel`* link, The link will be present
        if the transfer can be canceled.
      operationId: cancelScheduledTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/write
      x-apiture-implemented: true
      tags:
        - Scheduled Transfer
      parameters:
        - $ref: '#/components/parameters/scheduledTransferQueryParam'
        - $ref: '#/components/parameters/scheduledTransferUriQueryParam'
        - $ref: '#/components/parameters/ifMatchHeaderParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this transfer resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
            application/json:
              schema:
                $ref: '#/components/schemas/scheduledTransfer'
        '400':
          description: |-
            Bad Request. The `scheduledTransferUri` was malformed or does not refer to a scheduled transfer.

            This error response may have one of the following `type` values:
            * [`malformedTransferUri`](#err-malformedTransferUri)
          x-apiture-errors:
            - malformedTransferUri
        '409':
          description: |-
            Conflict. The specified scheduled transfer is in a state that does not allow cancellation.

            This error response may have one of the following `type` values:
            * [`updateTransferInvalidState`](#err-updateTransferInvalidState)
          x-apiture-errors:
            - updateTransferInvalidState
        '412':
          $ref: '#/components/responses/412'
        '422':
          $ref: '#/components/responses/422ScheduledTransfer'
        '500':
          $ref: '#/components/responses/500ScheduledTransfer'
  /pastTransfers:
    get:
      summary: Return a collection of past transfers
      description: >-
        Return a [paginated](https://developer.apiture.com/docs/concepts/pagination) [sortable](https://developer.apiture.com/docs/concepts/sorting)
        [filterable](https://developer.apiture.com/docs/concepts/filtering) [searchable](https://developer.apiture.com/docs/concepts/searchable)
        collection of past transfers. The [links](https://developer.apiture.com/docs/concepts/links) in the response include pagination links.


        Past transfers are transfers which have been processed or canceled.
      operationId: getPastTransfers
      security:
        - apiKey: []
          accessToken:
            - banking/read
      tags:
        - Past Transfer
      x-apiture-traits:
        sortBy:
          - state
          - name
          - description
          - createdAt
          - start
        itemSchema: pastTransfer
        filters:
          account:
            filter:
              - eq
              - in
          sourceAccount:
            filter:
              - eq
              - in
          targetAccount:
            filter:
              - eq
              - in
          state:
            filter:
              - eq
              - ne
              - in
          name:
            filter:
              - eq
              - ne
              - lt
              - le
              - gt
              - ge
              - startsWith
              - endsWith
              - contains
              - search
          _id:
            filter:
              - eq
              - in
      parameters:
        - name: start
          in: query
          description: The zero-based index of the first transfer item to include in this page. The default 0 denotes the beginning of the collection.
          schema:
            type: integer
            format: int64
            default: 0
        - name: limit
          in: query
          description: The maximum number of transfer representations to return in this page.
          schema:
            type: integer
            format: int32
            default: 100
        - name: sortBy
          in: query
          description: >-
            Optional sort criteria. See [sort criteria format](https://developer.apiture.com/docs/concepts/sorting), such as
            `?sortBy=field1,-field2`.<br>This collection may be sorted by following properties:<br>&bullet; `state`<br>&bullet; `name`<br>&bullet;
            `description`<br>&bullet; `createdAt`<br>&bullet; `start`
          schema:
            type: string
        - name: filter
          in: query
          description: >-
            Optional filter criteria. See [filtering](https://developer.apiture.com/docs/concepts/filtering).<br>This collection may be filtered by
            following properties and functions:<br>&bullet;  Property `account` using functions `eq`,  `in`<br>&bullet;  Property `sourceAccount`
            using functions `eq`,  `in`<br>&bullet;  Property `targetAccount` using functions `eq`,  `in`<br>&bullet;  Property `state` using
            functions `eq`,  `ne`,  `in`<br>&bullet;  Property `name` using functions `eq`,  `ne`,  `lt`,  `le`,  `gt`,  `ge`,  `startsWith`, 
            `endsWith`,  `contains`,  `search`<br>&bullet;  Property `_id` using functions `eq`,  `in`
          schema:
            type: string
        - $ref: '#/components/parameters/qQueryParam'
        - $ref: '#/components/parameters/stateQueryParam'
        - $ref: '#/components/parameters/nameQueryParam'
        - $ref: '#/components/parameters/accountQueryParam'
        - $ref: '#/components/parameters/sourceAccountQueryParam'
        - $ref: '#/components/parameters/targetAccountQueryParam'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/pastTransfers'
            application/json:
              schema:
                $ref: '#/components/schemas/pastTransfers'
        '400':
          $ref: '#/components/responses/400'
        '422':
          $ref: '#/components/responses/422'
  '/pastTransfers/{pastTransferId}':
    get:
      summary: Fetch a representation of this past transfer
      description: 'Return a [HAL](https://developer.apiture.com/docs/concepts/hal) representation of this transfer resource.'
      operationId: getPastTransfer
      security:
        - apiKey: []
          accessToken:
            - banking/read
      tags:
        - Past Transfer
      parameters:
        - $ref: '#/components/parameters/pastTransferIdPathParam'
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
        - $ref: '#/components/parameters/unmaskedQueryParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this transfer resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/pastTransfer'
            application/json:
              schema:
                $ref: '#/components/schemas/pastTransfer'
        '304':
          $ref: '#/components/responses/304'
        '404':
          $ref: '#/components/responses/404PastTransfer'
  /configurations:
    get:
      summary: Configuration definition for this API
      description: Returns the configuration for this API
      operationId: getConfiguration
      security:
        - apiKey: []
          accessToken:
            - admin/read
      x-apiture-implemented: true
      tags:
        - Configuration
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/configuration'
            application/json:
              schema:
                $ref: '#/components/schemas/configuration'
  /configurations/groups:
    get:
      summary: Return a collection of configuration groups
      description: >-
        Return a [paginated](https://developer.apiture.com/docs/concepts/pagination) [sortable](https://developer.apiture.com/docs/concepts/sorting)
        [filterable](https://developer.apiture.com/docs/concepts/filtering) [searchable](https://developer.apiture.com/docs/concepts/searchable)
        collection of configuration groups. The [links](https://developer.apiture.com/docs/concepts/links) in the response include pagination links.
      operationId: getConfigurationGroups
      security:
        - apiKey: []
          accessToken:
            - admin/read
      tags:
        - Configuration
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/configurationGroups'
            application/json:
              schema:
                $ref: '#/components/schemas/configurationGroups'
        '400':
          $ref: '#/components/responses/400'
        '422':
          $ref: '#/components/responses/422'
  '/configurations/groups/{groupName}':
    get:
      summary: Fetch a representation of this configuration group
      description: 'Return a [HAL](https://developer.apiture.com/docs/concepts/hal) representation of this configuration group resource.'
      operationId: getConfigurationGroup
      security:
        - apiKey: []
          accessToken:
            - admin/read
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/configurationGroupNamePathParam'
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which may be provided in an `If-None-Match` request header for *`GET`* operations
                for this configuration group resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/configurationGroup'
            application/json:
              schema:
                $ref: '#/components/schemas/configurationGroup'
        '304':
          $ref: '#/components/responses/304'
        '404':
          $ref: '#/components/responses/404ConfigurationGroup'
  '/configurations/groups/{groupName}/schema':
    get:
      summary: Fetch the schema for this configuration group
      description: 'Return a [HAL](https://developer.apiture.com/docs/concepts/hal) representation of this configuration group schema resource.'
      operationId: getConfigurationGroupSchema
      security:
        - apiKey: []
          accessToken:
            - admin/read
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/configurationGroupNamePathParam'
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`*
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/configurationSchema'
            application/json:
              schema:
                $ref: '#/components/schemas/configurationSchema'
        '304':
          $ref: '#/components/responses/304'
        '404':
          $ref: '#/components/responses/404ConfigurationGroup'
  '/configurations/groups/{groupName}/values':
    get:
      summary: Fetch the values for the specified configuration group
      description: Return a representation of this configuration group values resource.
      operationId: getConfigurationGroupValues
      security:
        - apiKey: []
          accessToken:
            - admin/read
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/configurationGroupNamePathParam'
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`*
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/configurationValues'
            application/json:
              schema:
                $ref: '#/components/schemas/configurationValues'
        '304':
          $ref: '#/components/responses/304'
        '404':
          $ref: '#/components/responses/404ConfigurationGroup'
    put:
      summary: Update the values for the specified configuration group
      description: Perform a complete replacement of this set of values. This operation is reserved for administrators.
      operationId: updateConfigurationGroupValues
      security:
        - apiKey: []
          accessToken:
            - admin/write
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/configurationGroupNamePathParam'
        - $ref: '#/components/parameters/ifMatchHeaderParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`*
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/configurationValues'
            application/json:
              schema:
                $ref: '#/components/schemas/configurationValues'
        '400':
          $ref: '#/components/responses/400'
        '403':
          description: Access denied. Only administrators may use this operation.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/errorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        '404':
          $ref: '#/components/responses/404ConfigurationGroup'
        '412':
          $ref: '#/components/responses/412'
        '422':
          description: Unprocessable Entity. The input does not conform to the required schema.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/errorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
      requestBody:
        content:
          application/hal+json:
            schema:
              $ref: '#/components/schemas/configurationValues'
          application/json:
            schema:
              $ref: '#/components/schemas/configurationValues'
        required: true
  '/configurations/groups/{groupName}/values/{valueName}':
    get:
      summary: Fetch a single value associated with the specified configuration group
      description: >-
        Fetch a single value associated with this configuration group. This provides convenient access to the individual values` of the configuration
        group.


        The response is always a JSON value which can be parsed with a strict JSON parser. The response may be
         * a primitive number, boolean, or quoted JSON string.
         * a JSON array.
         * a JSON object.
         * `null`.


        Examples:
          * `"a string configuration value"`
          * `120`
          * `true`
          * `null`
          * `{ "borderWidth": 8, "foregroundColor": "blue" }`


        To update a specific value, use `PUT /transfers/configurations/groups/{groupName}/values/{valueName}` (operation
        `updateConfigurationGroupValue`).
      operationId: getConfigurationGroupValue
      security:
        - apiKey: []
          accessToken:
            - admin/read
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/configurationGroupNamePathParam'
        - $ref: '#/components/parameters/configurationGroupValueNamePathParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this configuration group resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                type: object
            application/json:
              schema:
                type: object
        '404':
          $ref: '#/components/responses/404ConfigurationGroupOrValue'
    put:
      summary: Update a single value associated with the specified configuration group
      description: >-
        Update a single value associated with this configuration group. This provides convenient access to individual `values` of the configuration
        group as defined in the configuration group's `schema`. The request body must conform to  the configuration group's schema for the named
        `{valueName}`. This operation is idempotent.


        The request body must be a JSON value which can be parsed with a strict JSON parser. The response may be
         * a primitive number, boolean, or quoted JSON string.
         * a JSON array.
         * a JSON object.
         * `null`.


        Examples:
          * `"a string configuration value"`
          * `120`
          * `true`
          * `null`
          * `{ "borderWidth": 8, "foregroundColor": "blue" }`


        To fetch specific value, use `GET /transfers/configurations/groups/{groupName}/values/{valueName}` (operation `getConfigurationGroupValue`).


        This operation is reserved for administrators.
      operationId: updateConfigurationGroupValue
      security:
        - apiKey: []
          accessToken:
            - admin/write
      tags:
        - Configuration
      parameters:
        - $ref: '#/components/parameters/configurationGroupNamePathParam'
        - $ref: '#/components/parameters/configurationGroupValueNamePathParam'
      responses:
        '200':
          description: OK
          headers:
            ETag:
              description: >-
                The `ETag` response header specifies an entity tag which must be provided in an `If-Match` request header for *`PUT`* or *`PATCH`*
                operations which update this configuration group resource.
              schema:
                type: string
          content:
            application/hal+json:
              schema:
                type: string
            application/json:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/400'
        '403':
          description: Access denied. Only administrators may use this operation.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/errorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        '422':
          description: Unprocessable Entity. The input does not conform to the required schema.
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/errorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
      requestBody:
        content:
          application/hal+json:
            schema:
              type: string
          application/json:
            schema:
              type: string
        description: >-
          The request body must a valid JSON value and should be parsable with a JSON parser. The result may be a string, number, boolean, array, or
          object.
        required: true
  /:
    get:
      summary: Top-level resources and operations in this API
      description: Return links to the top-level resources and operations in this API.
      operationId: getApi
      security:
        - apiKey: []
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/root'
            application/json:
              schema:
                $ref: '#/components/schemas/root'
      tags:
        - API
  /apiDoc:
    get:
      summary: Return API definition document
      description: Return the OpenAPI document that describes this API.
      security:
        - apiKey: []
      operationId: getApiDoc
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
            application/openapi+json;version=2.0:
              schema:
                type: object
            application/openapi+yaml;version=2.0:
              schema:
                type: object
            application/hal+json:
              schema:
                type: object
      tags:
        - API
  /labels:
    get:
      summary: Localized Labels
      description: |-
        Return a JSON object which defines labels
        for enumeration types defined by the schemas
        defined in this API.


        The labels in the response may not all match the
        requested language; some may be in the default
        language (`en-us`).
      operationId: getLabels
      security:
        - apiKey: []
      x-apiture-implemented: true
      parameters:
        - name: Accept-Language
          in: header
          description: >-
            The weighted language tags which indicate the user's preferred natural language for the localized labels in the response, as per [RFC
            7231](https://tools.ietf.org/html/rfc7231#section-5.3.5).
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/labelGroups'
            application/json:
              schema:
                $ref: '#/components/schemas/labelGroups'
      tags:
        - API
x-apiture-errors:
  invalidAccountId:
    description: No Accounts were found for the specified accountId
    remediation: Check to make sure that the supplied accountId corresponds to an apiture account resource
  sourceAndTargetAccountsAreSame:
    description: Source account and target account are the same account
    remediation: Check to make sure that source account is different from target account
  endDateIsEarlierThanStartDate:
    description: Scheduled transfer end date is earlier than start date
    remediation: Check to make sure that your scheduled end date is later than scheduled start date
  invalidFundingTransferStateChange:
    description: A transfer that is funding the opening of a new account cannot be canceled or deleted
    remediation: Ensure the transfer you are trying to change is not an account funding transfer
  invalidScheduledTransferId:
    description: No scheduledTransfers were found for the specified scheduledTransferId
    remediation: Check to make sure that the supplied scheduledTransferId corresponds to an apiture scheduledTransfer resource
  invalidPastTransferId:
    description: No pastTransfers were found for the specified pastTransferId
    remediation: Check to make sure that the supplied pastTransferId corresponds to an apiture pastTransfer resource
  invalidGroupName:
    description: No configurationGroup was found for the specified groupName
    remediation: Check to make sure that the supplied groupName corresponds to an apiture transfer configuration group resource
  invalidValueName:
    description: No configurationName was found for the specified valueName
    remediation: Check to make sure that the supplied valueName corresponds to an apiture transfer configuration value resource
  invalidConfigurationGroup:
    description: The request body did not conform to the schema for this configuration group
    remediation: Check the schema for the configuration group and resubmit the operation
  invalidConfigurationValue:
    description: The request body did not conform to the schema for this configuration group value
    remediation: Check the schema for the configuration group value and resubmit the operation
  invalidScheduledTransfer:
    description: The request to create a scheduled transfer was not valid
    remediation: Check to make sure the schedule exists and that the start date also exists. Also make sure the start date is a future date or time
  invalidScheduleStart:
    description: The requested transfer start date is an unprocessable date or the requested start date is today and the cutoff time has passed
    remediation: Check the transfers configuration values for both unprocessable days and cutoff time
  invalidFirstLastTransfer:
    description: first and last may not both be true when scheduling a recurring transfer
    remediation: Set at least one of first or last to false and resubmit the operation
  invalidDate:
    description: The start date that was specified in the transfer is not valid
    remediation: Resubmit the operation with a valid start date in the ISO 8601 format
  inactiveAccount:
    description: The given account is not currently active
    remediation: Make sure the source and target accounts are active accounts and resubmit the operation
  invalidExternalAccount:
    description: 'The external account that was specified in transfer request is invalid, as it either does not exist or does not contain links'
    remediation: Resubmit the operation with an existing external account that contains links
  externalAccountIsNotVerified:
    description: The external account in the transfer request is not verified.
    remediation: Resubmit the operation with a verified external account in the request
  missingAccountInTransfer:
    description: 'Either the source, target, or both accounts are missing in the transfer request'
    remediation: Resubmit the request with a valid source and target account in the links
  undefinedTransferId:
    description: The transferId that was passed into the update was undefinedTransferIdBadRequest
    remediation: Resubmit the operation with a transferId
  transferDailyLimitExceeded:
    description: The value of the transfer exceeds the daily transfer limit allowed for this user
    remediation: Resubmit the request with a valid amount
  transferSingleLimitExceeded:
    description: The value of the transfer exceeds the single transfer limit allowed for this user
    remediation: Resubmit the request with a valid amount
  transferCoreLimitExceeded:
    description: The value of the transfer exceeds a transfer limit allowed by the banking core
    remediation: Resubmit the request with a valid amount
  transferCannotBeToAndFromExternal:
    description: A transfer cannot take place between two external accounts
    remediation: 'Ensure that the source and target accounts in the request are correct, and resubmit with at least one internal account'
  malformedAccountUri:
    description: The supplied accountUri was malformed
    remediation: Check to make sure that the supplied accountUri corresponds to an apiture account resource
  malformedSourceAccountUri:
    description: The supplied sourceAccountUri was malformed
    remediation: Check to make sure that the supplied sourceAccountUri corresponds to an apiture account resource
  malformedTargetAccountUri:
    description: The supplied targetAccountUri was malformed
    remediation: Check to make sure that the supplied targetAccountUri corresponds to an apiture account resource
  malformedTransferUri:
    description: The supplied scheduledTransferUri was malformed
    remediation: Check to make sure that the supplied ScheduledTransferUri corresponds to an apiture transfer resource and the uri is in the correct format
  malformedRequestBody:
    description: The supplied request body was malformed
    remediation: Check to make sure that your request body exists and that it does not contain syntax errors
  missingAccountInformationForTransfer:
    description: The linked source and target accounts are missing fields required to make a transfer
    remediation: Update the accounts to have valid values for all required fields
    attributes:
      properties:
        requiredFields:
          description: A list of the required fields that must be passed in the createScheduledTransfer request.
          type: array
          items: string
  malformedEveryField:
    description: Required field "schedule.every" must conform to the ISO 8601 standard for durations
    remediation: Resubmit the operation with a ISO 8601 valid date
  resumeTransferStateInvalidState:
    description: The specified scheduled transfer is in a state that does not allow resuming. Only suspended transfers can be resumed
    remediation: Check the state of the transfer and the applicable allowed state transitions in the Transfers API documentation
    attributes:
      properties:
        requiredStates:
          description: The transfer must be in one of these states in order to perform the requested action.
          type: array
          items:
            type: string
            description: One of the required states
          example:
            - suspended
  updateTransferInvalidState:
    description: The specified scheduled transfer is in a state that does not allow this action
    remediation: Check the state of the transfer and the applicable allowed state transitions in the Transfers API documentation
  transferCannotBeSuspended:
    description: The transfer cannot be suspended due to constraints in the banking core.
    remediation: Cancel the recurring transfer and create a new one.
  duplicateTransfer:
    description: The given transfer is a duplicate of a transfer that already exists
    remediation: 'Check to make sure that the transfer does not already exist. If this is intentional, resubmit with a different transfer description'
  invalidTransferState:
    description: 'A transfers state can only be patched if it is in a scheduled, recurring, or suspended state'
    remediation: Check the state of the transfer and the applicable allowed state transitions in the Transfers API documentation
  setStatusFailed:
    description: Could not resolve scheduled transfer resource set status
    remediation: 'Perform a get to make sure the state update did not occur. Resubmit the operation, if it did not'
  updateTransferFailed:
    description: A server issue occurred while updating the transfer
    remediation: 'Perform a get to make sure the update did not occur. Resubmit the operation, if it did not'
  transferAmountBelowMinimum:
    description: The transfer amount must be greater than or equal to any stated minimums
    remediation: 'A transfer must have an amount that is greater than 0.00, check your submitted amount'
    attributes:
      properties:
        minimum:
          type: string
          description: >-
            The minimum transfer amount in whole dollars. The numeric value is represented as a string so that it can be exact with no loss of
            precision.
          example: '0.00'
x-apiture-traits:
  - api:
      links:
        - getApi
        - getApiDoc
        - getLabels
        - createScheduledTransfer
        - getScheduledTransfers
        - getPastTransfers
x-apiture-annotated-at: '2020-10-23T16:50:18.372Z'
components:
  schemas:
    transferFields:
      title: Common Transfer Fields (v1.0.0)
      description: 'Fields of the transfer resource, used to build other model schema.'
      x-apiture-fragment: true
      properties:
        amount:
          description: >-
            The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds.
            Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance.
          allOf:
            - $ref: '#/components/schemas/positiveMoney'
          example:
            value: '345.50'
            currency: USD
        description:
          description: A description of this transfer.
          type: string
          maxLength: 4096
          example: Car payment
        schedule:
          description: Describes when the transfer is scheduled to occur.
          allOf:
            - $ref: '#/components/schemas/schedule'
        type:
          description: >-
            The type of transfer.


            An `internal` transfer is one where both the source and target account reside within the current financial institution. `ach` (Automated
            Clearinghouse) is for standard cross-institution, U.S. only transfers. `ach` transfers are typically processed in batches. `wire`
            transfers (not implemented in this release), can be processed faster (they may not depend on batch processing) and can also involve
            financial institution outside the U.S. However, wire transfers have higher fees.


            This field is optional, but immutable after being set. The default is `ach` if either the source or target account is external, and
            `internal` if both accounts are internal. It is an error to set the type to `ach` or `wire` for transfers between internal accounts, or to
            set `type` to `internal` if either the source or target account is external.
          allOf:
            - $ref: '#/components/schemas/transferType'
        initialFunding:
          description: >-
            If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This
            field is immutable after creating a transfer. This must be false for recurring transfers.
          type: boolean
          example: false
        visibility:
          description: >-
            The transfer may be `visible` or `hidden`. Some transfers are _micro-deposit_ ACH transfers into a local account from an external account
            as part of external account verification. These transfers are _hidden_ from the user: the user may only see the transfer amounts by
            viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the
            `/scheduledTransfers` and `/pastTransfers` collections. Financial institution administrators, however, can view hidden transfers.
          allOf:
            - $ref: '#/components/schemas/transferVisibility'
        confirmationId:
          type: string
          readOnly: true
          description: The confirmation id that the transfer request was received for processing.
          example: '573165972'
        attributes:
          description: Additional unstructured application metadata about the transfer.
          allOf:
            - $ref: '#/components/schemas/attributes'
      x-apiture-version: 1.0.0
      type: object
      x-apiture-flattened: true
    transferDerivedFields:
      title: Tranfer Derived Fields (v1.0.0)
      description: Properties used in scheduled transfer schemas.
      x-apiture-fragment: true
      properties:
        state:
          description: >-
            The state of the transfer. This is a _derived_ and _immutable_ value. The Transfers service processing updates the `state`.


            The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via `POST` to the
            `/suspendedScheduledTransfers`; resuming a suspended recurring transaction via `POST` to the `/resumedScheduledTransfers`; canceling a
            scheduled transaction via `POST` to the `/canceledScheduledTransfers`. These operations are available with the `apiture:suspend`,
            `apiture:resume`, `apiture:cancel` links, respectively, on an instance. canceled by `POST`ing to `/canceledTransfers`. No request body is
            used on these operations.
          allOf:
            - $ref: '#/components/schemas/transferState'
        _id:
          description: The unique identifier for this transfer resource. This is an immutable opaque string.
          readOnly: true
          type: string
      x-apiture-version: 1.0.0
      type: object
      x-apiture-flattened: true
    transferType:
      title: Transfer Type (v1.0.0)
      description: |-
        The type of transfer.

        <strong><code>transferType</code></strong> strings may have one of the following
        [enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):

        <table>
        <tr>
          <th>Value</th><th>Description</th>
        </tr>

        <tr>
            <td><strong><code>internal</code></strong></td><td>Internal: An transfer where both the source and target account reside within the current financial institution.</td>
            </tr>
        <tr>
            <td><strong><code>ach</code></strong></td><td>Ach: `ach` (_Automated Clearinghouse_) is for standard cross-institution, U.S. only transfers. `ach` transfers are typically processed in batches after the financial institution's daily cut-off date, and usually not on weekends or holidays.</td>
            </tr>
        <tr>
            <td><strong><code>wire</code></strong></td><td>Wire: `wire` transfers (not yet implemented) can be processed faster (they may not depend on batch processing) and can also involve financial institution outside the U.S. However, wire transfers have higher fees.</td>
            </tr>
        </table>


        These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
        named `transferType` in the response from the [`getLabels`](#op-getLabels) operation.
      x-apiture-enum: transferType
      type: string
      enum:
        - internal
        - ach
        - wire
      x-apiture-version: 1.0.0
      x-apiture-flattened: true
    transferVisibility:
      title: Transfer Visibility (v1.0.0)
      description: >-
        The transfer may be visible or hidden. Some transfers are _micro-deposit_ ACH transfers into a local account from an external account as part
        of external account verification. These transfers are _hidden_ from the user: the user may only see the transfer amounts by viewing their
        external account (via that external financial institution). Hidden transfers are by default omitted from the `/scheduledTransfers` and
        `/pastTransfers` collections. Financial institution administrators, however, can view hidden transfers.


        <strong><code>transferVisibility</code></strong> strings may have one of the following

        [enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):


        <table>

        <tr>
          <th>Value</th><th>Description</th>
        </tr>


        <tr>
            <td><strong><code>visible</code></strong></td><td>Visible</td>
            </tr>
        <tr>
            <td><strong><code>hidden</code></strong></td><td>Hidden: As part of external account verification, micro-deposit ACH transfers from an external account into a local account are _hidden_ from the user.</td>
            </tr>
        </table>



        These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)

        named `transferVisibility` in the response from the [`getLabels`](#op-getLabels) operation.
      x-apiture-enum: transferVisibility
      type: string
      enum:
        - visible
        - hidden
      x-apiture-version: 1.0.0
      x-apiture-flattened: true
    createScheduledTransfer:
      title: Create Scheduled Transfer (v1.0.0)
      required:
        - _links
        - amount
        - schedule
      description: >-
        Representation used to schedule a new transfer. The request includes the amount of the transfer and the schedule in the body, and the source
        and target accounts in the request's `_links` via the link relations `apiture:source` and `apiture:target`, and the user who scheduled the
        transfer in the request's `_links` via the link relation `apiture:creator`.
      example:
        _profile: 'https://api.apiture.com/schemas/transfers/createScheduledTransfer/v1.0.0/profile.json'
        amount:
          value: '345.50'
          currency: USD
        description: Car payment
        initialFunding: false
        schedule:
          start: '2018-02-05'
          maximumCount: 36
          every: P1M
          end: '2021-04-05'
        _links:
          'apiture:source':
            href: /accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2
          'apiture:target':
            href: /accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9
          'apiture:creator':
            href: /users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6
      x-apiture-version: 1.0.0
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - $ref: '#/components/schemas/transferFields'
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        amount:
          description: >-
            The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds.
            Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance.
          allOf:
            - $ref: '#/components/schemas/positiveMoney'
          example:
            value: '345.50'
            currency: USD
        description:
          description: A description of this transfer.
          type: string
          maxLength: 4096
          example: Car payment
        schedule:
          description: Describes when the transfer is scheduled to occur.
          allOf:
            - $ref: '#/components/schemas/schedule'
        type:
          description: >-
            The type of transfer.


            An `internal` transfer is one where both the source and target account reside within the current financial institution. `ach` (Automated
            Clearinghouse) is for standard cross-institution, U.S. only transfers. `ach` transfers are typically processed in batches. `wire`
            transfers (not implemented in this release), can be processed faster (they may not depend on batch processing) and can also involve
            financial institution outside the U.S. However, wire transfers have higher fees.


            This field is optional, but immutable after being set. The default is `ach` if either the source or target account is external, and
            `internal` if both accounts are internal. It is an error to set the type to `ach` or `wire` for transfers between internal accounts, or to
            set `type` to `internal` if either the source or target account is external.
          allOf:
            - $ref: '#/components/schemas/transferType'
        initialFunding:
          description: >-
            If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This
            field is immutable after creating a transfer. This must be false for recurring transfers.
          type: boolean
          example: false
        visibility:
          description: >-
            The transfer may be `visible` or `hidden`. Some transfers are _micro-deposit_ ACH transfers into a local account from an external account
            as part of external account verification. These transfers are _hidden_ from the user: the user may only see the transfer amounts by
            viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the
            `/scheduledTransfers` and `/pastTransfers` collections. Financial institution administrators, however, can view hidden transfers.
          allOf:
            - $ref: '#/components/schemas/transferVisibility'
        confirmationId:
          type: string
          readOnly: true
          description: The confirmation id that the transfer request was received for processing.
          example: '573165972'
        attributes:
          description: Additional unstructured application metadata about the transfer.
          allOf:
            - $ref: '#/components/schemas/attributes'
      type: object
      x-apiture-flattened: true
    summaryScheduledTransfer:
      title: Scheduled Transfer Summary (v1.1.0)
      description: >
        Summary representation of a scheduled transfer resource. The summary includes the transfer ID, description, amount, state, and schedule, and
        the `_links` indicate the source and target accounts. This representation normally does not contain any `_embedded` objects. If needed, call
        the `GET` operation on the item's `self` link to get `_embedded` objects. For transfers which have failed, the `_error` object will describe
        the error circumstances.



        <h3 class='schema-links' id="summaryScheduledTransfer-links" >Links</h3>


        Response and request bodies using this <strong><code>summaryScheduledTransfer</code></strong> schema may contain

        the following <a href='https://developer.apiture.com/docs/concepts/links'>links</a>:


        <table>

        <tr>
          <th>Rel</th><th>Summary</th><th>Method</th>
        </tr>


        <tr>

        <td><a href='#op-getScheduledTransfer'><strong><code>self</code></strong></a></td><td>Fetch a representation of this
        transfer</td><td><code>GET</code></td>

        </tr>


        <tr>

        <td><strong><code>apiture:source</code></strong></td>

        <td>The source account where funds will be debited.</td><td><code>GET</code></td>


        <tr>

        <td><strong><code>apiture:target</code></strong></td>

        <td>The target account where funds will be credited.</td><td><code>GET</code></td>

        </table>
      x-apiture-version: 1.1.0
      x-apiture-links:
        - rel: self
          operationId: getScheduledTransfer
        - rel: 'apiture:source'
          title: The source account where funds will be debited.
          method: get
        - rel: 'apiture:target'
          title: The target account where funds will be credited.
          method: get
      example:
        _id: 0399abed-fd3d-4830-a88b-30f38b8a365c
        _profile: 'https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.1.0/profile.json'
        _links:
          self:
            href: /transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c
          'apiture:source':
            href: /accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2
          'apiture:target':
            href: /accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9
        state: recurring
        amount:
          value: '345.50'
          currency: USD
        description: Car payment
        initialFunding: false
        schedule:
          start: '2018-02-05'
          maximumCount: 36
          count: 11
          every: P1M
          end: '2021-04-05'
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - $ref: '#/components/schemas/transferFields'
        - $ref: '#/components/schemas/transferDerivedFields'
        - properties:
            - editable
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        amount:
          description: >-
            The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds.
            Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance.
          allOf:
            - $ref: '#/components/schemas/positiveMoney'
          example:
            value: '345.50'
            currency: USD
        description:
          description: A description of this transfer.
          type: string
          maxLength: 4096
          example: Car payment
        schedule:
          description: Describes when the transfer is scheduled to occur.
          allOf:
            - $ref: '#/components/schemas/schedule'
        type:
          description: >-
            The type of transfer.


            An `internal` transfer is one where both the source and target account reside within the current financial institution. `ach` (Automated
            Clearinghouse) is for standard cross-institution, U.S. only transfers. `ach` transfers are typically processed in batches. `wire`
            transfers (not implemented in this release), can be processed faster (they may not depend on batch processing) and can also involve
            financial institution outside the U.S. However, wire transfers have higher fees.


            This field is optional, but immutable after being set. The default is `ach` if either the source or target account is external, and
            `internal` if both accounts are internal. It is an error to set the type to `ach` or `wire` for transfers between internal accounts, or to
            set `type` to `internal` if either the source or target account is external.
          allOf:
            - $ref: '#/components/schemas/transferType'
        initialFunding:
          description: >-
            If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This
            field is immutable after creating a transfer. This must be false for recurring transfers.
          type: boolean
          example: false
        visibility:
          description: >-
            The transfer may be `visible` or `hidden`. Some transfers are _micro-deposit_ ACH transfers into a local account from an external account
            as part of external account verification. These transfers are _hidden_ from the user: the user may only see the transfer amounts by
            viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the
            `/scheduledTransfers` and `/pastTransfers` collections. Financial institution administrators, however, can view hidden transfers.
          allOf:
            - $ref: '#/components/schemas/transferVisibility'
        confirmationId:
          type: string
          readOnly: true
          description: The confirmation id that the transfer request was received for processing.
          example: '573165972'
        attributes:
          description: Additional unstructured application metadata about the transfer.
          allOf:
            - $ref: '#/components/schemas/attributes'
        state:
          description: >-
            The state of the transfer. This is a _derived_ and _immutable_ value. The Transfers service processing updates the `state`.


            The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via `POST` to the
            `/suspendedScheduledTransfers`; resuming a suspended recurring transaction via `POST` to the `/resumedScheduledTransfers`; canceling a
            scheduled transaction via `POST` to the `/canceledScheduledTransfers`. These operations are available with the `apiture:suspend`,
            `apiture:resume`, `apiture:cancel` links, respectively, on an instance. canceled by `POST`ing to `/canceledTransfers`. No request body is
            used on these operations.
          allOf:
            - $ref: '#/components/schemas/transferState'
        _id:
          description: The unique identifier for this transfer resource. This is an immutable opaque string.
          readOnly: true
          type: string
        editable:
          description: 'If `true`, the user who requested this transfer resource is entitled to edit the transfer attributes.'
          type: boolean
          readOnly: true
      type: object
      x-apiture-flattened: true
    transferState:
      title: Transfer State (v1.0.0)
      description: |-
        The state of the transfer.

        <strong><code>transferState</code></strong> strings may have one of the following
        [enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):

        <table>
        <tr>
          <th>Value</th><th>Description</th>
        </tr>

        <tr>
            <td><strong><code>scheduled</code></strong></td><td>Scheduled: A transfer is `scheduled` after a new one-time transfer is approved; it is scheduled to occur in the future.</td>
            </tr>
        <tr>
            <td><strong><code>recurring</code></strong></td><td>Recurring: A transfer is `recurring` after a new recurring transfer is approved; it is scheduled to start in the future.</td>
            </tr>
        <tr>
            <td><strong><code>pendingApproval</code></strong></td><td>Pending Approval: The source or target account is an external account which has not been verified. The financial institution may review the transfer and approve or deny it (the state will change to `scheduled` or `failed`).</td>
            </tr>
        <tr>
            <td><strong><code>processing</code></strong></td><td>Processing: A transfer which has been begun and is currently being processed. A processing transfer can be modified as long as the transfer cutoff time has not passed.  Once the cutoff time passes, the transfer cannot be modified (the amount or schedule may not be changed). To change a recurring transfer after the cutoff time, wait for the state to change back to `recurring`.</td>
            </tr>
        <tr>
            <td><strong><code>suspended</code></strong></td><td>Suspended: A scheduled recurring transfer which is temporarily suspended or paused. No further transfer of funds will occur until it is resumed. If it is resumed, any missed transfers will not be performed.</td>
            </tr>
        <tr>
            <td><strong><code>canceled</code></strong></td><td>Canceled: A transfer which has been canceled. No further transfer of funds will occur.  Canceled transfers cannot be restarted; create a new one instead, or suspend/resume them instead of canceling. A canceled transfer cannot be modified. **Note**: There is no way to cancel specific transfers within a recurring transfer; instead, suspend the transfer and resume it after the desired date has passed.</td>
            </tr>
        <tr>
            <td><strong><code>failed</code></strong></td><td>Failed: A transfer which failed. The `_error` will indicate the cause. A completed transfer cannot be modified.</td>
            </tr>
        <tr>
            <td><strong><code>completed</code></strong></td><td>Completed: A transfer which has completed successfully. A completed transfer cannot be modified.</td>
            </tr>
        </table>


        These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)
        named `transferState` in the response from the [`getLabels`](#op-getLabels) operation.
      x-apiture-enum: transferState
      type: string
      readOnly: true
      enum:
        - scheduled
        - recurring
        - pendingApproval
        - processing
        - suspended
        - completed
        - canceled
        - failed
      example: scheduled
      x-apiture-version: 1.0.0
      x-apiture-flattened: true
    summaryPastTransfer:
      title: Past Transfer Summary (v1.0.0)
      description: >
        Summary representation of a past transfer resource. The summary includes the transfer ID, description, amount, state, and schedule, and the
        `_links` indicate the source and target accounts. This representation normally does not contain any `_embedded` objects. If needed, call the
        `GET` operation on the item's `self` link to get `_embedded` objects. For transfers which have failed, the `_error` object will describe the
        error circumstances.



        <h3 class='schema-links' id="summaryPastTransfer-links" >Links</h3>


        Response and request bodies using this <strong><code>summaryPastTransfer</code></strong> schema may contain

        the following <a href='https://developer.apiture.com/docs/concepts/links'>links</a>:


        <table>

        <tr>
          <th>Rel</th><th>Summary</th><th>Method</th>
        </tr>


        <tr>

        <td><a href='#op-getPastTransfer'><strong><code>self</code></strong></a></td><td>Fetch a representation of this past
        transfer</td><td><code>GET</code></td>

        </tr>


        <tr>

        <td><strong><code>apiture:source</code></strong></td>

        <td>The source account where funds will be debited.</td><td><code>GET</code></td>


        <tr>

        <td><strong><code>apiture:target</code></strong></td>

        <td>The target account where funds will be credited.</td><td><code>GET</code></td>

        </table>
      x-apiture-links:
        - rel: self
          operationId: getPastTransfer
        - rel: 'apiture:source'
          title: The source account where funds will be debited.
          method: get
        - rel: 'apiture:target'
          title: The target account where funds will be credited.
          method: get
      x-apiture-version: 1.0.0
      x-apiture-composition:
        - $ref: '#/components/schemas/transferFields'
        - $ref: '#/components/schemas/transferDerivedFields'
      properties:
        amount:
          description: >-
            The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds.
            Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance.
          allOf:
            - $ref: '#/components/schemas/positiveMoney'
          example:
            value: '345.50'
            currency: USD
        description:
          description: A description of this transfer.
          type: string
          maxLength: 4096
          example: Car payment
        schedule:
          description: Describes when the transfer is scheduled to occur.
          allOf:
            - $ref: '#/components/schemas/schedule'
        type:
          description: >-
            The type of transfer.


            An `internal` transfer is one where both the source and target account reside within the current financial institution. `ach` (Automated
            Clearinghouse) is for standard cross-institution, U.S. only transfers. `ach` transfers are typically processed in batches. `wire`
            transfers (not implemented in this release), can be processed faster (they may not depend on batch processing) and can also involve
            financial institution outside the U.S. However, wire transfers have higher fees.


            This field is optional, but immutable after being set. The default is `ach` if either the source or target account is external, and
            `internal` if both accounts are internal. It is an error to set the type to `ach` or `wire` for transfers between internal accounts, or to
            set `type` to `internal` if either the source or target account is external.
          allOf:
            - $ref: '#/components/schemas/transferType'
        initialFunding:
          description: >-
            If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This
            field is immutable after creating a transfer. This must be false for recurring transfers.
          type: boolean
          example: false
        visibility:
          description: >-
            The transfer may be `visible` or `hidden`. Some transfers are _micro-deposit_ ACH transfers into a local account from an external account
            as part of external account verification. These transfers are _hidden_ from the user: the user may only see the transfer amounts by
            viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the
            `/scheduledTransfers` and `/pastTransfers` collections. Financial institution administrators, however, can view hidden transfers.
          allOf:
            - $ref: '#/components/schemas/transferVisibility'
        confirmationId:
          type: string
          readOnly: true
          description: The confirmation id that the transfer request was received for processing.
          example: '573165972'
        attributes:
          description: Additional unstructured application metadata about the transfer.
          allOf:
            - $ref: '#/components/schemas/attributes'
        state:
          description: >-
            The state of the transfer. This is a _derived_ and _immutable_ value. The Transfers service processing updates the `state`.


            The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via `POST` to the
            `/suspendedScheduledTransfers`; resuming a suspended recurring transaction via `POST` to the `/resumedScheduledTransfers`; canceling a
            scheduled transaction via `POST` to the `/canceledScheduledTransfers`. These operations are available with the `apiture:suspend`,
            `apiture:resume`, `apiture:cancel` links, respectively, on an instance. canceled by `POST`ing to `/canceledTransfers`. No request body is
            used on these operations.
          allOf:
            - $ref: '#/components/schemas/transferState'
        _id:
          description: The unique identifier for this transfer resource. This is an immutable opaque string.
          readOnly: true
          type: string
      type: object
      x-apiture-flattened: true
    transferAccount:
      title: Transfer Account (v1.0.0)
      description: Summary properties of the source and target account for a transfer.
      x-apiture-version: 1.0.0
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - properties:
            - accountTitle
            - title
            - institutionName
            - routingNumber
            - accountNumbers
            - ifxType
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        accountTitle:
          description: >-
            The title of the account. Traditionally, this is the name of the account holder. This field is deprecated and will be removed in a future
            release; use `title` instead.
          maxLength: 512
          type: string
          example: John Smith
        title:
          description: 'The title of the account. Traditionally, this is the name of the account holder.'
          maxLength: 512
          type: string
          example: John Smith
        institutionName:
          description: The name of the financial institution.
          type: string
          minLength: 2
          maxLength: 128
          example: 3rd Party Bank
          readOnly: true
        routingNumber:
          description: >-
            The account routing number which identifies the financial institution. The full routing number and full account number are required to
            fully identify the account.
          type: string
          minLength: 9
          maxLength: 9
          example: '021000021'
          readOnly: true
        accountNumbers:
          description: The account numbers for this account
          type: object
          allOf:
            - $ref: '#/components/schemas/accountNumbers'
          readOnly: true
        ifxType:
          description: 'A code which identifies the product type. This is one of the [IFX AcctType](https://ifxforum.org) values.'
          allOf:
            - $ref: '#/components/schemas/ifxType'
          readOnly: true
      type: object
      x-apiture-flattened: true
    transferAttribution:
      title: Transfer Derived Fields (v1.2.0)
      description: 'Fields of transfers which are derived, used to build other schemas.'
      x-apiture-version: 1.2.0
      x-apiture-fragment: true
      properties:
        createdBy:
          description: The user who created/scheduled the transfer.
          type: string
          example: lucille-4700
        createdAt:
          description: 'The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was scheduled/created.'
          type: string
          format: date-time
          example: '2018-05-08T13:37:57.375Z'
        modifiedBy:
          description: >-
            The user who last modified the scheduled transfer.<br>**Warning**: The property `modifiedBy` was deprecated on version `v1.2.0` of the
            schema. Use `updatedBy` instead. `modifiedBy` will be removed on version `v2.0.0` of the schema.
          type: string
          example: lucille-4700
          x-apiture-deprecated:
            since: 1.2.0
            replacement: '`updatedBy`'
            removeOn: 2.0.0
        updatedBy:
          description: The user who last modified the scheduled transfer.
          type: string
          example: lucille-4700
        modifiedAt:
          description: >-
            The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was last modified.<br>**Warning**: The property
            `modifiedAt` was deprecated on version `v1.2.0` of the schema. Use `updatedAt` instead. `modifiedAt` will be removed on version `v2.0.0`
            of the schema.
          type: string
          format: date-time
          example: '2018-05-18T16:42:57.000Z'
          x-apiture-deprecated:
            since: 1.2.0
            replacement: '`updatedAt`'
            removeOn: 2.0.0
        updatedAt:
          description: 'The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was last modified.'
          type: string
          format: date-time
          example: '2018-05-18T16:42:57.000Z'
        sourceAccount:
          description: Summary properties of the source account for a transfer
          type: object
          allOf:
            - $ref: '#/components/schemas/transferAccount'
        targetAccount:
          description: Summary properties of the target account for a transfer
          type: object
          allOf:
            - $ref: '#/components/schemas/transferAccount'
      type: object
      x-apiture-flattened: true
    scheduledTransfer:
      title: Scheduled Transfer (v1.2.0)
      description: >
        Representation of a transfer resource: a transfer of funds from one account to another.  A transfer consists of an amount, a source account, a
        target account, and a schedule which specifies a one-time transfer or a recurring transfer.


        The `_embedded` object contains `transactions`, which contains the first page of transactions matching this transfer, and the summary
        representations of the  `source` and `target` accounts.



        <h3 class='schema-links' id="scheduledTransfer-links" >Links</h3>


        Response and request bodies using this <strong><code>scheduledTransfer</code></strong> schema may contain

        the following <a href='https://developer.apiture.com/docs/concepts/links'>links</a>:


        <table>

        <tr>
          <th>Rel</th><th>Summary</th><th>Method</th>
        </tr>


        <tr>

        <td><a href='#op-getScheduledTransfer'><strong><code>self</code></strong></a></td><td>Fetch a representation of this
        transfer</td><td><code>GET</code></td>

        </tr>


        <tr>

        <td><strong><code>apiture:source</code></strong></td>

        <td>The source account where funds will be debited.</td><td><code>GET</code></td>


        <tr>

        <td><strong><code>apiture:target</code></strong></td>

        <td>The target account where funds will be credited.</td><td><code>GET</code></td>


        <tr>

        <td><a href='#op-cancelScheduledTransfer'><strong><code>apiture:cancel</code></strong></a></td><td>Cancel a scheduled
        transfer</td><td><code>POST</code></td>

        </tr>


        <tr>

        <td><a href='#op-suspendScheduledTransfer'><strong><code>apiture:suspend</code></strong></a></td><td>Suspend a scheduled
        transfer</td><td><code>POST</code></td>

        </tr>


        <tr>

        <td><a href='#op-resumeScheduledTransfer'><strong><code>apiture:resume</code></strong></a></td><td>Resume a suspended scheduled
        transfer</td><td><code>POST</code></td>

        </tr>

        </table>
      x-apiture-version: 1.2.0
      x-apiture-links:
        - rel: self
          operationId: getScheduledTransfer
        - rel: 'apiture:source'
          title: The source account where funds will be debited.
          method: get
        - rel: 'apiture:target'
          title: The target account where funds will be credited.
          method: get
        - rel: 'apiture:cancel'
          operationId: cancelScheduledTransfer
        - rel: 'apiture:suspend'
          operationId: suspendScheduledTransfer
        - rel: 'apiture:resume'
          operationId: resumeScheduledTransfer
      example:
        _id: 0399abed-fd3d-4830-a88b-30f38b8a365c
        _profile: 'https://api.apiture.com/schemas/transfers/scheduledTransfer/v1.2.0/profile.json'
        createdBy: lucille-4700
        createdAt: '2018-05-08T13:37:57.375Z'
        modifiedBy: lucille-4700
        updatedBy: lucille-4700
        modifiedAt: '2018-05-18T16:42:57.000Z'
        updatedAt: '2018-05-18T16:42:57.000Z'
        _links:
          self:
            href: /transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c
          'apiture:source':
            href: /accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2
          'apiture:target':
            href: /accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9
          'apiture:creator':
            href: /users/users/d076e102-facf-46e2-8ecf-bcdb531cd9e6
          'apiture:transactions':
            href: /transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c
        _embedded:
          transactions:
            start: 0
            count: 3
            items:
              anyOf:
                - _id: da8682e3-cc0b-4a1a-b8d2-8ce4dc45bf36
                  occurredAt: '2018-02-05T11:10:00.375Z'
                  amount:
                    value: '345.50'
                    currency: USD
                    description: Car payment
                - _id: a847c5c7-4a34-4464-b514-5ca1680cc00d
                  occurredAt: '2018-03-05T11:11:17.375Z'
                  amount:
                    value: '345.50'
                    currency: USD
                    description: Car payment
                - _id: d9ab0002-2cbb-4a4c-a01f-c3ce3ad20782
                  occurredAt: '2018-04-05T11:11:17.375Z'
                  amount:
                    value: '345.50'
                    currency: USD
                    description: Car payment
          source:
            _id: 34f8bec8-3939-4b7e-9ad5-10ee059ab250
            _profile: 'https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json'
            name: Personal Savings
            productName: Basic Personal Savings
            type: Personal Savings
            subtype: Basic Personal Savings
            state: active
            balance:
              current: '3450.30'
              available: '3450.30'
              currency: USD
            _links:
              self:
                href: 'https://api.apiture.com/accounts/34f8bec8-3939-4b7e-9ad5-10ee059ab250'
          target:
            _id: c9839d60-73e5-47ba-9676-ca8138e9494d
            _profile: 'https://api.apiture.com/schemas/accounts/summaryAccount/v1.0.0/profile.json'
            name: My Basic Checking
            productName: Basic Personal Checking
            type: Personal Checking
            subtype: Basic Personal Checking
            state: active
            balance:
              current: '450.12'
              available: '450.12'
              currency: USD
            _links:
              self:
                href: 'https://api.apiture.com/accounts/c9839d60-73e5-47ba-9676-ca8138e9494d'
          _links:
            self:
              href: /transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c
        amount:
          value: '345.50'
          currency: USD
        description: Car payment
        state: recurring
        schedule:
          start: '2018-02-05'
          count: 3
          every: P1M
          end: '2021-04-05'
      x-apiture-composition:
        - $ref: '#/components/schemas/summaryScheduledTransfer'
        - $ref: '#/components/schemas/transferAttribution'
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        amount:
          description: >-
            The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds.
            Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance.
          allOf:
            - $ref: '#/components/schemas/positiveMoney'
          example:
            value: '345.50'
            currency: USD
        description:
          description: A description of this transfer.
          type: string
          maxLength: 4096
          example: Car payment
        schedule:
          description: Describes when the transfer is scheduled to occur.
          allOf:
            - $ref: '#/components/schemas/schedule'
        type:
          description: >-
            The type of transfer.


            An `internal` transfer is one where both the source and target account reside within the current financial institution. `ach` (Automated
            Clearinghouse) is for standard cross-institution, U.S. only transfers. `ach` transfers are typically processed in batches. `wire`
            transfers (not implemented in this release), can be processed faster (they may not depend on batch processing) and can also involve
            financial institution outside the U.S. However, wire transfers have higher fees.


            This field is optional, but immutable after being set. The default is `ach` if either the source or target account is external, and
            `internal` if both accounts are internal. It is an error to set the type to `ach` or `wire` for transfers between internal accounts, or to
            set `type` to `internal` if either the source or target account is external.
          allOf:
            - $ref: '#/components/schemas/transferType'
        initialFunding:
          description: >-
            If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This
            field is immutable after creating a transfer. This must be false for recurring transfers.
          type: boolean
          example: false
        visibility:
          description: >-
            The transfer may be `visible` or `hidden`. Some transfers are _micro-deposit_ ACH transfers into a local account from an external account
            as part of external account verification. These transfers are _hidden_ from the user: the user may only see the transfer amounts by
            viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the
            `/scheduledTransfers` and `/pastTransfers` collections. Financial institution administrators, however, can view hidden transfers.
          allOf:
            - $ref: '#/components/schemas/transferVisibility'
        confirmationId:
          type: string
          readOnly: true
          description: The confirmation id that the transfer request was received for processing.
          example: '573165972'
        attributes:
          description: Additional unstructured application metadata about the transfer.
          allOf:
            - $ref: '#/components/schemas/attributes'
        state:
          description: >-
            The state of the transfer. This is a _derived_ and _immutable_ value. The Transfers service processing updates the `state`.


            The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via `POST` to the
            `/suspendedScheduledTransfers`; resuming a suspended recurring transaction via `POST` to the `/resumedScheduledTransfers`; canceling a
            scheduled transaction via `POST` to the `/canceledScheduledTransfers`. These operations are available with the `apiture:suspend`,
            `apiture:resume`, `apiture:cancel` links, respectively, on an instance. canceled by `POST`ing to `/canceledTransfers`. No request body is
            used on these operations.
          allOf:
            - $ref: '#/components/schemas/transferState'
        _id:
          description: The unique identifier for this transfer resource. This is an immutable opaque string.
          readOnly: true
          type: string
        editable:
          description: 'If `true`, the user who requested this transfer resource is entitled to edit the transfer attributes.'
          type: boolean
          readOnly: true
        createdBy:
          description: The user who created/scheduled the transfer.
          type: string
          example: lucille-4700
        createdAt:
          description: 'The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was scheduled/created.'
          type: string
          format: date-time
          example: '2018-05-08T13:37:57.375Z'
        modifiedBy:
          description: >-
            The user who last modified the scheduled transfer.<br>**Warning**: The property `modifiedBy` was deprecated on version `v1.2.0` of the
            schema. Use `updatedBy` instead. `modifiedBy` will be removed on version `v2.0.0` of the schema.
          type: string
          example: lucille-4700
          x-apiture-deprecated:
            since: 1.2.0
            replacement: '`updatedBy`'
            removeOn: 2.0.0
        updatedBy:
          description: The user who last modified the scheduled transfer.
          type: string
          example: lucille-4700
        modifiedAt:
          description: >-
            The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was last modified.<br>**Warning**: The property
            `modifiedAt` was deprecated on version `v1.2.0` of the schema. Use `updatedAt` instead. `modifiedAt` will be removed on version `v2.0.0`
            of the schema.
          type: string
          format: date-time
          example: '2018-05-18T16:42:57.000Z'
          x-apiture-deprecated:
            since: 1.2.0
            replacement: '`updatedAt`'
            removeOn: 2.0.0
        updatedAt:
          description: 'The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was last modified.'
          type: string
          format: date-time
          example: '2018-05-18T16:42:57.000Z'
        sourceAccount:
          description: Summary properties of the source account for a transfer
          type: object
          allOf:
            - $ref: '#/components/schemas/transferAccount'
        targetAccount:
          description: Summary properties of the target account for a transfer
          type: object
          allOf:
            - $ref: '#/components/schemas/transferAccount'
      type: object
      x-apiture-flattened: true
    pastTransfer:
      title: Past Transfer (v1.1.0)
      description: >
        Represents a transfer that has been processed or canceled (one that is no longer scheduled).


        If the `state` of the processed transfer is `failed`, the `_error` object will contain details of the failure, including a `message`. The
        `_error.type` field will be an identifier string, one of:
         * **`insufficientFunds`** - the source account did not have sufficient
         funds at the time the transfer was processed.
         * **`frozenAccount`** - The source or target account was frozen
         at the time the transfer was processed. The `_error.attributes.account`
         will indicate which account, one of `source` or `target`.
         * **`amountOutOfRange`** - The transfer amount was outside the
         account minimum and maximum
         at the time the transfer was processed. The `_error.attributes.minimum`
         and `_error.attributes.maximum` will indicate the allowed range
         (these values are positiveMoney/currency objects).
         * **`inactiveAccount`** - The source or target account was inactive
         at the time the transfer was processed. The `_error.attributes.account`
         will indicate which account, one of `source` or `target`.
         * **`invalidAccount`** - The source or target account was invalid
         for some other reason at the time the transfer was processed.
         The `_error.attributes.account` will indicate which account,
         one of `source` or `target`.
         * **`inactiveUser`** - The user account was inactive
         at the time the transfer was processed.
         * **`missingAccountNumber`** - The account number was missing
         for the source or target account at the time the transfer was processed.
         The `_error.attributes.account` will indicate which account,
         one of `source` or `target`.


        <h3 class='schema-links' id="pastTransfer-links" >Links</h3>


        Response and request bodies using this <strong><code>pastTransfer</code></strong> schema may contain

        the following <a href='https://developer.apiture.com/docs/concepts/links'>links</a>:


        <table>

        <tr>
          <th>Rel</th><th>Summary</th><th>Method</th>
        </tr>


        <tr>

        <td><a href='#op-getPastTransfer'><strong><code>self</code></strong></a></td><td>Fetch a representation of this past
        transfer</td><td><code>GET</code></td>

        </tr>


        <tr>

        <td><strong><code>apiture:source</code></strong></td>

        <td>The source account where funds will be debited.</td><td><code>GET</code></td>


        <tr>

        <td><strong><code>apiture:target</code></strong></td>

        <td>The target account where funds will be credited.</td><td><code>GET</code></td>

        </table>
      x-apiture-version: 1.1.0
      x-apiture-links:
        - rel: self
          operationId: getPastTransfer
        - rel: 'apiture:source'
          title: The source account where funds will be debited.
          method: get
        - rel: 'apiture:target'
          title: The target account where funds will be credited.
          method: get
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - $ref: '#/components/schemas/summaryPastTransfer'
        - $ref: '#/components/schemas/transferAttribution'
        - properties:
            - confirmationId
            - completedAt
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        amount:
          description: >-
            The amount of the transfer. For a transfer, the amount must be positive. The funding account must have sufficient available funds.
            Financial institutions may impose an upper limit on the amount in a transfer which may be lower than the available balance.
          allOf:
            - $ref: '#/components/schemas/positiveMoney'
          example:
            value: '345.50'
            currency: USD
        description:
          description: A description of this transfer.
          type: string
          maxLength: 4096
          example: Car payment
        schedule:
          description: Describes when the transfer is scheduled to occur.
          allOf:
            - $ref: '#/components/schemas/schedule'
        type:
          description: >-
            The type of transfer.


            An `internal` transfer is one where both the source and target account reside within the current financial institution. `ach` (Automated
            Clearinghouse) is for standard cross-institution, U.S. only transfers. `ach` transfers are typically processed in batches. `wire`
            transfers (not implemented in this release), can be processed faster (they may not depend on batch processing) and can also involve
            financial institution outside the U.S. However, wire transfers have higher fees.


            This field is optional, but immutable after being set. The default is `ach` if either the source or target account is external, and
            `internal` if both accounts are internal. It is an error to set the type to `ach` or `wire` for transfers between internal accounts, or to
            set `type` to `internal` if either the source or target account is external.
          allOf:
            - $ref: '#/components/schemas/transferType'
        initialFunding:
          description: >-
            If true, the transfer is for funding a new account. Initial funding transfers have different transfer limits and schedule validation. This
            field is immutable after creating a transfer. This must be false for recurring transfers.
          type: boolean
          example: false
        visibility:
          description: >-
            The transfer may be `visible` or `hidden`. Some transfers are _micro-deposit_ ACH transfers into a local account from an external account
            as part of external account verification. These transfers are _hidden_ from the user: the user may only see the transfer amounts by
            viewing their external account (via that external financial institution). Hidden transfers are by default omitted from the
            `/scheduledTransfers` and `/pastTransfers` collections. Financial institution administrators, however, can view hidden transfers.
          allOf:
            - $ref: '#/components/schemas/transferVisibility'
        confirmationId:
          description: A unique transaction confirmation ID.
          type: string
          example: 6e5413df-9574-4568-b0c4-dfd96bbb454b
        attributes:
          description: Additional unstructured application metadata about the transfer.
          allOf:
            - $ref: '#/components/schemas/attributes'
        state:
          description: >-
            The state of the transfer. This is a _derived_ and _immutable_ value. The Transfers service processing updates the `state`.


            The client may change state in a limited number of ways: suspending a scheduled or recurring transaction via `POST` to the
            `/suspendedScheduledTransfers`; resuming a suspended recurring transaction via `POST` to the `/resumedScheduledTransfers`; canceling a
            scheduled transaction via `POST` to the `/canceledScheduledTransfers`. These operations are available with the `apiture:suspend`,
            `apiture:resume`, `apiture:cancel` links, respectively, on an instance. canceled by `POST`ing to `/canceledTransfers`. No request body is
            used on these operations.
          allOf:
            - $ref: '#/components/schemas/transferState'
        _id:
          description: The unique identifier for this transfer resource. This is an immutable opaque string.
          readOnly: true
          type: string
        createdBy:
          description: The user who created/scheduled the transfer.
          type: string
          example: lucille-4700
        createdAt:
          description: 'The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was scheduled/created.'
          type: string
          format: date-time
          example: '2018-05-08T13:37:57.375Z'
        modifiedBy:
          description: >-
            The user who last modified the scheduled transfer.<br>**Warning**: The property `modifiedBy` was deprecated on version `v1.2.0` of the
            schema. Use `updatedBy` instead. `modifiedBy` will be removed on version `v2.0.0` of the schema.
          type: string
          example: lucille-4700
          x-apiture-deprecated:
            since: 1.2.0
            replacement: '`updatedBy`'
            removeOn: 2.0.0
        updatedBy:
          description: The user who last modified the scheduled transfer.
          type: string
          example: lucille-4700
        modifiedAt:
          description: >-
            The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was last modified.<br>**Warning**: The property
            `modifiedAt` was deprecated on version `v1.2.0` of the schema. Use `updatedAt` instead. `modifiedAt` will be removed on version `v2.0.0`
            of the schema.
          type: string
          format: date-time
          example: '2018-05-18T16:42:57.000Z'
          x-apiture-deprecated:
            since: 1.2.0
            replacement: '`updatedAt`'
            removeOn: 2.0.0
        updatedAt:
          description: 'The [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC date-time when the transfer was last modified.'
          type: string
          format: date-time
          example: '2018-05-18T16:42:57.000Z'
        sourceAccount:
          description: Summary properties of the source account for a transfer
          type: object
          allOf:
            - $ref: '#/components/schemas/transferAccount'
        targetAccount:
          description: Summary properties of the target account for a transfer
          type: object
          allOf:
            - $ref: '#/components/schemas/transferAccount'
        completedAt:
          description: The date/time when the transfer was completed.
          type: string
          format: date-time
          example: '2018-05-08T14:08:50.375Z'
      type: object
      x-apiture-flattened: true
    scheduledTransfers:
      title: Scheduled Transfer Collection (v1.1.0)
      description: >-
        Collection of scheduled transfers. The items in the collection are ordered in the `_embedded` object with name `items`. The top-level `_links`
        object may contain pagination links (`self`, `next`, `prev`, `first`, `last`, `collection`).
      x-apiture-version: 1.1.0
      example:
        _profile: 'https://api.apiture.com/schemas/transfers/scheduledTransfers/v1.1.0/profile.json'
        start: 10
        limit: 10
        count: 67
        name: transfers
        _links:
          self:
            href: /transfers/scheduledTransfers?start=10&limit=10
          first:
            href: /transfers/scheduledTransfers?start=0&limit=10
          next:
            href: /transfers/scheduledTransfers?start=20&limit=10
          collection:
            href: /transfers/scheduledTransfers
        _embedded:
          items:
            anyOf:
              - _id: 0399abed-fd3d-4830-a88b-30f38b8a365c
                _profile: 'https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.0.0/profile.json'
                amount:
                  value: '345.50'
                  currency: USD
                description: Car payment
                state: recurring
                schedule:
                  start: '2018-02-05'
                  count: 3
                  every: P1M
                  end: '2021-04-05'
                _links:
                  'apiture:source':
                    href: /accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2
                  'apiture:target':
                    href: /accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9
                  'apiture:transactions':
                    href: /transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c
                  self:
                    href: /transfers/scheduledTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c
              - _id: a3bbba3c-d26b-497d-87b7-09eb47b24d77
                _profile: 'https://api.apiture.com/schemas/transfers/summaryScheduledTransfer/v1.0.0/profile.json'
                amount:
                  value: '120.0'
                  currency: USD
                description: Monthly allowance for Suzy's college expenses and meals
                state: recurring
                schedule:
                  start: '2018-08-01'
                  count: 24
                  every: P1M
                  end: '2020-05-15'
                _links:
                  'apiture:source':
                    href: /accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2
                  'apiture:target':
                    href: /accounts/externalAccounts/4fda6275-0a3b-49ad-ad12-5ebcd7013362
                  'apiture:transactions':
                    href: /transaction?transfer=/transfers/transfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77
                  self:
                    href: /transfers/scheduledTransfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77
      x-apiture-composition:
        - $ref: '#/components/schemas/collection'
        - properties:
            - _embedded
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          type: object
          description: Embedded objects.
          properties:
            items:
              description: An array containing a page of transfer items.
              type: array
              items:
                $ref: '#/components/schemas/summaryScheduledTransfer'
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        count:
          description: >-
            The number of items in the collection. This value is _optional_ and may be omitted if the count is not computable efficiently. If a filter
            is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the
            filter.
          type: integer
        start:
          description: The start index of this page of items.
          type: integer
        limit:
          description: The maximum number of items per page.
          type: integer
        name:
          description: The name of the collection.
          type: string
      type: object
      x-apiture-flattened: true
    pastTransfers:
      title: Past Transfers Collection (v1.0.0)
      description: >-
        Collection of past transfers. The items in the collection are ordered in the `_embedded` object with name `items`. The top-level `_links`
        object may contain pagination links (`self`, `next`, `prev`, `first`, `last`, `collection`).
      example:
        _profile: 'https://api.apiture.com/schemas/transfers/pastTransfers/v1.0.0/profile.json'
        start: 10
        limit: 10
        count: 67
        name: transfers
        _links:
          self:
            href: /transfers/pastTransfers?start=10&limit=10
          first:
            href: /transfers/pastTransfers?start=0&limit=10
          next:
            href: /transfers/pastTransfers?start=20&limit=10
          collection:
            href: /transfers/pastTransfers
        _embedded:
          items:
            anyOf:
              - _id: 0399abed-fd3d-4830-a88b-30f38b8a365c
                _profile: 'https://api.apiture.com/schemas/transfers/summaryPastTransfer/v1.0.0/profile.json'
                amount:
                  value: '345.50'
                  currency: USD
                description: Car payment
                state: recurring
                schedule:
                  start: '2018-02-05'
                  count: 3
                  every: P1M
                  end: '2021-04-05'
                _links:
                  'apiture:source':
                    href: /accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2
                  'apiture:target':
                    href: /accounts/externalAccounts/599b8ab5-6925-4f58-90c5-f6aa5b05f9d9
                  'apiture:transactions':
                    href: /transaction?transfer=/transfers/transfers/0399abed-fd3d-4830-a88b-30f38b8a365c
                  self:
                    href: /transfers/pastTransfers/0399abed-fd3d-4830-a88b-30f38b8a365c
              - _id: a3bbba3c-d26b-497d-87b7-09eb47b24d77
                _profile: 'https://api.apiture.com/schemas/transfers/summaryPastTransfer/v1.0.0/profile.json'
                amount:
                  value: '120.0'
                  currency: USD
                description: Monthly allowance for Suzy's college expenses and meals
                state: recurring
                schedule:
                  start: '2018-08-01'
                  count: 24
                  every: P1M
                  end: '2020-05-15'
                _links:
                  'apiture:source':
                    href: /accounts/accounts/46a31698-7398-4538-a9c9-9496010da2c2
                  'apiture:target':
                    href: /accounts/externalAccounts/4fda6275-0a3b-49ad-ad12-5ebcd7013362
                  'apiture:transactions':
                    href: /transaction?transfer=/transfers/transfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77
                  self:
                    href: /transfers/pastTransfers/a3bbba3c-d26b-497d-87b7-09eb47b24d77
      x-apiture-version: 1.0.0
      x-apiture-composition:
        - $ref: '#/components/schemas/collection'
        - properties:
            - _embedded
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          type: object
          description: Embedded objects.
          properties:
            items:
              description: An array containing a page of transfer items.
              type: array
              items:
                $ref: '#/components/schemas/summaryPastTransfer'
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        count:
          description: >-
            The number of items in the collection. This value is _optional_ and may be omitted if the count is not computable efficiently. If a filter
            is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the
            filter.
          type: integer
        start:
          description: The start index of this page of items.
          type: integer
        limit:
          description: The maximum number of items per page.
          type: integer
        name:
          description: The name of the collection.
          type: string
      type: object
      x-apiture-flattened: true
    schedule:
      title: Schedule (v1.0.0)
      description: >-
        A definition for a one-time or recurring scheduled transfer. Some financial institutions may limit scheduled transfers such that the transfer
        must be within 365 days.
      properties:
        start:
          description: >-
            When the transfer occurs, or when a recurring transfer begins. This is a date-time in [RFC 3339](https://tools.ietf.org/html/rfc3339)
            `yyyy-mm-ddTHH:MM:SSZ` format. If present, the time portion is a *hint*; the financial institution may not be able to schedule events at
            specific times. If `start` is not provided, the current date will be used. If `start` is after the end of processing for the current day,
            the event may be scheduled for the next processing day.
          type: string
          format: date-time
          example: '2020-01-29T15:00:00.00Z'
        every:
          description: >-
            The `every` period indicates the interval at which the transfer recurs, such as every week, every month, every 3 months. If omitted or
            empty, this transfer is a one-time transfer.  `every` is **required** if either `maximumCount` is greater than 1 or if `end` is greater
            than `start`.


            This value is an [ISO 8601 duration](https://en.wikipedia.org/wiki/ISO_8601#Durations) string of the form `P[n]Y[n]M[n]D` to specify the
            number of years/months/days between transfers. For example, use `P7D` to transfer every week, `P2M` to transfer every other month, `P4Y`
            to transfer every four years on the anniversary set by `start`. Time values in `every` are ignored but may be honored in the future. (That
            is, it is not possible to schedule a transfer every 8 hours; the minimum is `P1D`.) To specify semi-monthly or semi-annually, use `P0.5M`
            or `P0.5Y`. Fractional values are only allowed for month and year, and `0.5`  is the only allowed fractional value.


            Some financial institutions may limit recurring transfers such that the period must be a year (`P1Y`, `P12M`, `P365D`) or less.


            Scheduling may adjust transfer dates if `start` occurs near boundary dates which do occur not every year/month, such as `start:
            "2018-01-31", every: "P1M"`. For example, the next transfer may occur on the 30th for months which have only 30 days (Apr, Jun, Sep, Nov),
            or 29th or 28th for February. Actual transfer dates may also be adjusted to account for holidays or other days when processing does not
            occur.
          type: string
          example: P14D
        count:
          description: 'For a recurring transfer, this is the number of transfers which have been processed. It is a derived value and ignored on updates.'
          type: integer
          example: 5
          readOnly: true
        first:
          description: >-
            If `true` for a monthly, recurring transfer, this value indicates that  all future transfers in the series should be executed on the
            _first_  processing day of the month.  The first transfer in the series executes  according to the optional `start` date, if supplied.
            This value is ignored  if included on non-monthly recurring transfer series.  It is an error if  both `first` and `last` are true.
          type: boolean
          example: true
        last:
          description: >-
            If `true` for a monthly, recurring transfer, this value indicates that  all future transfers in the series should be executed on the
            _last_  processing day of the month.  The first transfer in the series executes  according to the optional `start` date, if supplied. This
            value is ignored  if included on non-monthly recurring transfer series.  It is an error if  both `first` and `last` are true.
          type: boolean
          example: false
        maximumCount:
          description: >-
            The maximum number of transfers to perform for a recurring transfer. (Transfers in the recurrence will stop if the current date is beyond
            that set by `end`, even if fewer than `maximumCount` transfers have occurred). The `every` period is required if `maximumCount` or `end`
            is set. It is an error (422) if `maximumCount` is anything other than 0 or 1 and `every` is not set.  If a schedule contains both `end`
            and `maximumCount`, the _earliest_ will determine when the recurrence ends. Otherwise, the Transfers service will compute the other field.
          type: integer
          example: 10
        end:
          description: |-
            The optional date when the recurring transfer ends (inclusive). Transfers recur
            until the `maximumCount` of transfers are met _or_ the next
            transfer is _after_ the `end` date.
            (The earliest of `maximumCount` or `end` wins). If specified,
            `end` must be no earlier than `start`.
            This is a date in [RFC 3339](https://tools.ietf.org/html/rfc3339) `yyyy-mm-dd` format.


            When scheduling a recurring transfer, the request should contain either `maximumCount` or `end`,
            but not both. The other field will be computed.
          type: string
          format: date
          example: '2018-08-01'
      x-apiture-version: 1.0.0
      type: object
      x-apiture-flattened: true
    positiveMoney:
      title: Positive Money (v1.0.0)
      description: 'An amount of money in a specific currency, supporting only positive amounts.'
      properties:
        value:
          description: >-
            The monetary value, supporting only positive amounts. The numeric value is  represented as a string so that it can be exact with no loss
            of precision.
          example: '3456.78'
          type: string
        currency:
          description: 'The [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) for this monetary value. This is always upper case ASCII.'
          x-apiture-todo: 'ISO 4217 defines three-character codes. However, ISO 4217 does not account for cryptocurrencies. Of note, `DASH` uses 4 characters.'
          type: string
          minLength: 3
          maxLength: 3
      x-apiture-version: 1.0.0
      type: object
      x-apiture-flattened: true
    errorResponse:
      x-apiture-version: 2.0.0
      title: Error Response (v2.0.0)
      description: |-
        Describes an error response, typically returned on 4xx or 5xx errors from API operations. The `_error` object contains the error details.

        This schema was resolved from [`common/errorResponse`](https://production.api.apiture.com/schemas/common/errorResponse/v2.0.0/model.json).
      example:
        _profile: 'https://api.apiture.com/schemas/common/errorResponse/v2.0.0/profile.json'
        _error:
          _id: 2eae46e1-575c-4d69-8a8f-0a7b0115a4b3
          message: The value for deposit must be greater than 0.
          statusCode: 422
          type: positiveNumberRequired
          attributes:
            value: -125.5
          remediation: Provide a value which is greater than 0
          occurredAt: '2018-01-25T05:50:52.375Z'
          _links:
            describedby:
              href: 'https://api.apiture.com/errors/positiveNumberRequired'
          _embedded:
            errors: []
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/errorResponse/v2.0.0/model.json'
      x-apiture-namespace: common
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
      type: object
      x-apiture-flattened: true
    configuration:
      x-apiture-version: 2.0.0
      title: Configuration
      description: >-
        Represents the configuration for various services.


        This schema was resolved from
        [`configurations/configuration`](https://production.api.apiture.com/schemas/configurations/configuration/v2.0.0/model.json).
      properties:
        _links:
          $ref: '#/components/schemas/links'
      example:
        _links:
          self:
            href: /configurations/configurations/
          'apiture:groups':
            href: /configurations/configurations/groups
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configuration/v2.0.0/model.json'
      x-apiture-namespace: configurations
      type: object
      x-apiture-flattened: true
    configurationGroups:
      x-apiture-version: 2.0.0
      title: Configuration Group Collection
      description: >-
        Collection of configuration groups. The items in the collection are ordered in the `_embedded` object with name `items`. The top-level
        `_links` object may contain pagination links (`self`, `next`, `prev`, `first`, `last`, `collection`).


        This schema was resolved from
        [`configurations/configurationGroups`](https://production.api.apiture.com/schemas/configurations/configurationGroups/v2.0.0/model.json).
      example:
        _profile: 'https://production.api.apiture.com/schemas/configurations/configurationGroups/v2.0.0/profile.json'
        start: 10
        limit: 10
        count: 67
        name: configurationGroups
        _links:
          self:
            href: /configurations/configurations/groups?start=10&limit=10
          first:
            href: /configurations/configurations/groups?start=0&limit=10
          next:
            href: /configurations/configurations/groups?start=20&limit=10
          collection:
            href: /configurations/configurations/groups
        _embedded:
          items:
            anyOf:
              - _profile: 'https://api.apiture.com/schemas/configurations/configurationGroup/v2.0.0/profile.json'
                _links:
                  self:
                    href: /configurations/groups/basic
                name: basic
                label: Basic Settings
                description: The basic settings for the Transfers API
              - _profile: 'https://api.apiture.com/schemas/configurations/configurationGroup/v2.0.0/profile.json'
                _links:
                  self:
                    href: /configurations/groups/calendar
                name: calendar
                label: Calendar
                description: 'A calendar that specifies which dates are valid for performing transfers (e.g., weekdays excluding federal holidays)'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configurationGroups/v2.0.0/model.json'
      x-apiture-namespace: configurations
      x-apiture-composition:
        - $ref: '#/components/schemas/collection'
        - properties:
            - _embedded
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: Embedded objects.
          type: object
          properties:
            items:
              description: An array containing a page of configuration group items.
              type: array
              items:
                $ref: '#/components/schemas/configurationGroupSummary'
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        count:
          description: >-
            The number of items in the collection. This value is _optional_ and may be omitted if the count is not computable efficiently. If a filter
            is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the
            filter.
          type: integer
        start:
          description: The start index of this page of items.
          type: integer
        limit:
          description: The maximum number of items per page.
          type: integer
        name:
          description: The name of the collection.
          type: string
      type: object
      x-apiture-flattened: true
    configurationGroup:
      x-apiture-version: 2.0.0
      title: Configuration Group
      description: >-
        Represents a configuration group.


        This schema was resolved from
        [`configurations/configurationGroup`](https://production.api.apiture.com/schemas/configurations/configurationGroup/v2.0.0/model.json).
      example:
        _profile: 'https://api.apiture.com/schemas/configurations/configurationGroup/v2.0.0/profile.json'
        _links:
          self:
            href: /configurations/groups/basic
        name: basic
        label: Basic Settings
        description: The basic settings for the Transfers API
        schema:
          type: object
          properties:
            dailyLimit:
              type: number
              description: The daily limit for the number of transfers
            cutoffTime:
              type: string
              format: time
              description: The cutoff time for scheduling transfers for the current day
        values:
          dailyLimit: 5
          cutoffTime: '17:30:00'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configurationGroup/v2.0.0/model.json'
      x-apiture-namespace: configurations
      x-apiture-composition:
        - $ref: '#/components/schemas/configurationGroupSummary'
        - properties:
            - schema
            - values
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        name:
          description: 'The name of this configuration group, must be unique within the set of all resources of this type.'
          type: string
          maxLength: 48
          minLength: 1
          pattern: '[a-zA-Z][-\w_]*'
          example: transfers
        label:
          description: 'The text label for this resource, suitable for presentation to the client.'
          type: string
          maxLength: 128
          minLength: 1
          example: Transfers Configuration
        description:
          description: 'The full description for this resource, suitable for presentation to the client.'
          type: string
          maxLength: 4096
          minLength: 1
          example: The configuration for the Transfers API.
        schema:
          $ref: '#/components/schemas/configurationSchema'
        values:
          $ref: '#/components/schemas/configurationValues'
      type: object
      x-apiture-flattened: true
    configurationSchema:
      x-apiture-version: 2.0.1
      title: Configuration Schema (v2.0.1)
      description: >-
        The schema which defines the name and types of the

        variables that are part of this configuration definition.

        Property names must be simple identifiers

        which follow the pattern `letter [letter | digit | - | _]*`.


        This is implicitly a schema for `type: object`

        and contains the properties.


        The `values` in a configuration conform to the schema.

        The names and types are described with a subset of

        [JSON Schema Core](https://tools.ietf.org/html/draft-zyp-json-schema-04)

        and [JSON Schema Validation](https://tools.ietf.org/html/draft-fge-json-schema-validation-00)

        similar to that used to define schemas in

        [OpenAPI Specification 2.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#schemaObject).


        This schema was resolved from
        [`configurations/configurationSchema`](https://production.api.apiture.com/schemas/configurations/configurationSchema/v2.0.1/model.json).
      type: object
      additionalProperties:
        $ref: '#/components/schemas/configurationSchemaValue'
      example:
        type: object
        properties:
          dailyLimit:
            type: number
            description: The daily limit for the number of transfers
          cutoffTime:
            type: string
            format: time
            description: The cutoff time for scheduling transfers for the current day
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configurationSchema/v2.0.1/model.json'
      x-apiture-namespace: configurations
      properties: {}
      x-apiture-flattened: true
    configurationValues:
      x-apiture-version: 2.0.0
      title: Configuration Values (v2.0.0)
      description: >-
        The data values associated with this configuration group:

        the group's variable names and values. These values must conform to this

        item's `schema`.



        *Note*: the `schema` may also contain `default` values

        which, if present, are used if a value is *not* set in the

        definition's `values`.



        For example, multiple configurations may use the same schema

        that defines values `a`, `b`, and `c`, but each configuration

        may have their own unique values for `a`, `b`, and `c`

        which is separate from the schema.


        This schema was resolved from
        [`configurations/configurationValues`](https://production.api.apiture.com/schemas/configurations/configurationValues/v2.0.0/model.json).
      type: object
      additionalProperties:
        $ref: '#/components/schemas/configurationValue'
      example:
        dailyLimit: 5
        cutoffTime: 63000
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configurationValues/v2.0.0/model.json'
      x-apiture-namespace: configurations
      properties: {}
      x-apiture-flattened: true
    root:
      x-apiture-version: 2.0.0
      title: API Root (v2.0.0)
      description: |-
        A HAL response, with hypermedia `_links` for the top-level resources and operations in API.

        This schema was resolved from [`common/root`](https://production.api.apiture.com/schemas/common/root/v2.0.0/model.json).
      example:
        id: apiName
        name: API name
        apiVersion: 1.0.0
        _profile: 'https://production.api.apiture.com/schemas/common/root/v2.0.0/profile.json'
        _links: {}
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/root/v2.0.0/model.json'
      x-apiture-namespace: common
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - properties:
            - _id
            - name
            - apiVersion
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        _id:
          description: This API's unique ID.
          readOnly: true
          type: string
        name:
          type: string
          description: This API's name.
        apiVersion:
          type: string
          description: This API's version.
      type: object
      x-apiture-flattened: true
    labelGroups:
      title: Label Groups (v1.0.1)
      description: >-
        A set of named groups of labels, each of which contains multiple item labels.


        The abbreviated example shows two groups, one named `structure` and one named `estimatedAnnualRevenue`. The first has items with names such as
        `corporation`, `llc` and `soleProprietorship`, with text labels for each in the default and in French. The second has items for estimated
        revenue *ranges* but no localized labels. For example, the item named `from1to10Million` has the `label` "$1M to $10M" and the range
        `[1000000.00,10000000.00)`.


        This schema was resolved from [`common/labelGroups`](https://production.api.apiture.com/schemas/common/labelGroups/v1.0.1/model.json).
      x-apiture-version: 1.0.1
      example:
        _profile: 'https://api.apiture.com/schemas/common/labelGroups/v1.0.1/profile.json'
        groups:
          structure:
            unknown:
              label: Unknown
              code: '0'
              hidden: true
            corporation:
              label: Corporation
              code: '1'
              variants:
                fr:
                  label: Soci\u00e9t\u00e9
            partnership:
              label: Partnership
              code: '2'
              variants:
                fr:
                  label: Partenariat
            llc:
              label: Limited Liability Company
              code: '2'
              variants:
                fr:
                  label: Soci\u00e9t\u00e9 \u00e9 Responsabilit\u00e9 Limit\u00e9e
            nonProfit:
              label: Non Profit
              code: '4'
              variants:
                fr:
                  label: Non Lucratif
            financialInstitution:
              label: Financial Institution
              code: '8'
              variants:
                fr:
                  label: Institution financi\u00e8re
            soleProprietorship:
              label: Sole Proprietorship
              code: '11'
              variants:
                fr:
                  label: Entreprise individuelle
            other:
              label: Other
              code: '254'
              variants:
                fr:
                  label: Autre
          estimatedAnnualRevenue:
            unknown:
              label: Unknown
              code: '0'
            under1Million:
              label: Under $1M
              code: '1'
              range: '[0,1000000.00)'
            from1to10Million:
              label: $1M to $10M
              code: '2'
              range: '[1000000.00,10000000.00)'
            from10to100Million:
              label: $10M to $100M
              code: '3'
              range: '[10000000.00,100000000.00)'
            over100Million:
              label: 'Over $100,000,000.00'
              code: '4'
              range: '[100000000.00,]'
            other:
              label: Other
              code: '254'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/labelGroups/v1.0.1/model.json'
      x-apiture-namespace: common
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - properties:
            - groups
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        groups:
          description: 'Groups of localized labels. This maps *group names* &rarr; [*a group of labels*](#schema-labelgroup) within that group.'
          x-apiture-key: groupName
          additionalProperties:
            $ref: '#/components/schemas/labelGroup'
      type: object
      x-apiture-flattened: true
    attributes:
      x-apiture-version: 2.0.0
      title: Attributes (v2.0.0)
      description: |-
        An optional map of name/value pairs which contains additional dynamic data about the resource.

        This schema was resolved from [`common/attributes`](https://production.api.apiture.com/schemas/common/attributes/v2.0.0/model.json).
      type: object
      x-apiture-key: attributeName
      additionalProperties:
        $ref: '#/components/schemas/attributeValue'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/attributes/v2.0.0/model.json'
      x-apiture-namespace: common
      properties: {}
      x-apiture-flattened: true
    abstractResource:
      x-apiture-version: 2.0.0
      title: Abstract Resource (v2.0.0)
      description: >-
        An abstract schema used to define other schemas for request and response bodies. This is a
        [HAL](https://tools.ietf.org/html/draft-kelly-json-hal-08) resource representation. This model contains hypermedia `_links`, and either
        optional domain object data with `_profile` and optional `_embedded` objects, or an `_error` object. In responses, if the operation was
        successful, this object will not include the `_error`, but if the operation was a 4xx or 5xx error, this object will not include `_embedded`
        or any data fields, only `_error` and optionally `_links`.


        This schema was resolved from
        [`common/abstractResource`](https://production.api.apiture.com/schemas/common/abstractResource/v2.0.0/model.json).
      example:
        _profile: 'https://production.api.apiture.com/schemas/common/abstractResource/v2.0.0/profile.json'
        _links:
          self:
            href: 'https://api.devbank.apiture.com/applications/application/328f6bf6-d762-422f-a077-ab91ca4d0b6f'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/abstractResource/v2.0.0/model.json'
      x-apiture-namespace: common
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractRequest'
        - properties:
            - _error
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
      type: object
      x-apiture-flattened: true
    accountNumbers:
      title: Account Numbers (v1.0.0)
      description: |-
        Different representations of an account number.

        This schema was resolved from [`common/accountNumbers`](https://production.api.apiture.com/schemas/common/accountNumbers/v1.0.0/model.json).
      properties:
        masked:
          description: >-
            A partial account number that does not contain all the digits of the full account number. This masked number appears in statements or in
            user experience presentation. It is sufficient for a user to differentiate this account from other accounts they hold, but is not
            sufficient for initiating transfers, etc. The first character is the mask character and is repeated; this does not indicate that the full
            account number is the same as the mask length. This value is derived and immutable.
          type: string
          minLength: 8
          maxLength: 32
          readOnly: true
          example: '*************3210'
        full:
          description: >-
            The full account number. This value only appears when `?unmasked=true` is passed on the `GET` request. Not included in the summary
            representation of the account that is included in account collection responses. This value is derived and immutable.
          type: string
          minLength: 4
          maxLength: 17
          example: '9876543210'
          readOnly: true
      x-apiture-version: 1.0.0
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/accountNumbers/v1.0.0/model.json'
      x-apiture-namespace: common
      type: object
      x-apiture-flattened: true
    ifxType:
      title: IFX Account Type (v1.0.0)
      description: >-
        A code which identifies the product type. This is one of the [IFX AcctType](https://ifxforum.org) values. Labels and descriptions for the
        enumeration values are in the `ifxType` key in the response of the `getLabels` operation.


        <strong><code>ifxType</code></strong> strings may have one of the following

        [enumerated values](https://developer.apiture.com/concepts/label-groups#enumerations):


        <table>

        <tr>
          <th>Value</th><th>Description</th>
        </tr>


        <tr>
            <td><strong><code>CCA</code></strong></td><td>Credit card account</td>
            </tr>
        <tr>
            <td><strong><code>CDA</code></strong></td><td>Certificate of deposit account (CD)</td>
            </tr>
        <tr>
            <td><strong><code>CLA</code></strong></td><td>Commercial loan account</td>
            </tr>
        <tr>
            <td><strong><code>CMA</code></strong></td><td>Cash management account</td>
            </tr>
        <tr>
            <td><strong><code>DDA</code></strong></td><td>Demand deposit account</td>
            </tr>
        <tr>
            <td><strong><code>EQU</code></strong></td><td>Home equity loan</td>
            </tr>
        <tr>
            <td><strong><code>GLA</code></strong></td><td>General ledger account</td>
            </tr>
        <tr>
            <td><strong><code>ILA</code></strong></td><td>Installment loan account</td>
            </tr>
        <tr>
            <td><strong><code>INV</code></strong></td><td>Investment account</td>
            </tr>
        <tr>
            <td><strong><code>IRA</code></strong></td><td>Individual retirement account</td>
            </tr>
        <tr>
            <td><strong><code>IRL</code></strong></td><td>Accounts held in Ireland</td>
            </tr>
        <tr>
            <td><strong><code>LOC</code></strong></td><td>Consumer line of credit</td>
            </tr>
        <tr>
            <td><strong><code>MLA</code></strong></td><td>Military Lending Account: Credit facility held by former US service member</td>
            </tr>
        <tr>
            <td><strong><code>MMA</code></strong></td><td>Money market account</td>
            </tr>
        <tr>
            <td><strong><code>PBA</code></strong></td><td>Packaged bank Account: Account with additional benefits that charges a fixed monthly fee.</td>
            </tr>
        <tr>
            <td><strong><code>PPA</code></strong></td><td>Private pension administrator</td>
            </tr>
        <tr>
            <td><strong><code>RWD</code></strong></td><td>Reward accounts</td>
            </tr>
        <tr>
            <td><strong><code>SDA</code></strong></td><td>Savings deposit account</td>
            </tr>
        </table>



        These enumeration values are further described by the [label group](https://developer.apiture.com/concepts/label-groups)

        named `ifxType` in the response from the [`getLabels`](#op-getLabels) operation.


        This schema was resolved from [`products/ifxType`](https://production.api.apiture.com/schemas/products/ifxType/v1.0.0/model.json).
      x-apiture-enum: ifxType
      type: string
      enum:
        - CCA
        - CDA
        - CLA
        - CMA
        - DDA
        - EQU
        - GLA
        - ILA
        - INV
        - IRA
        - IRL
        - LOC
        - MLA
        - MMA
        - PBA
        - PPA
        - RWD
        - SDA
      x-apiture-version: 1.0.0
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/products/ifxType/v1.0.0/model.json'
      x-apiture-namespace: products
      x-apiture-flattened: true
    collection:
      x-apiture-version: 2.0.0
      title: Collection (v2.0.0)
      description: |-
        A collection of resources. This is an abstract model schema which is extended to define specific resource collections.

        This schema was resolved from [`common/collection`](https://production.api.apiture.com/schemas/common/collection/v2.0.0/model.json).
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/collection/v2.0.0/model.json'
      x-apiture-namespace: common
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - properties:
            - count
            - start
            - limit
            - name
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        count:
          description: >-
            The number of items in the collection. This value is _optional_ and may be omitted if the count is not computable efficiently. If a filter
            is applied to the collection (either implicitly or explicitly), the count, if present, indicates the number of items that satisfy the
            filter.
          type: integer
        start:
          description: The start index of this page of items.
          type: integer
        limit:
          description: The maximum number of items per page.
          type: integer
        name:
          description: The name of the collection.
          type: string
      type: object
      x-apiture-flattened: true
    configurationGroupSummary:
      x-apiture-version: 2.0.0
      title: Configuration Group Summary (v2.0.0)
      description: >-
        A summary of the data contained within a configuration group resource.


        This schema was resolved from
        [`configurations/configurationGroupSummary`](https://production.api.apiture.com/schemas/configurations/configurationGroupSummary/v2.0.0/model.json).
      example:
        _profile: 'https://api.apiture.com/schemas/configurations/configurationGroupSummary/v2.0.0/profile.json'
        _links:
          self:
            href: /configurations/groups/basic
        name: basic
        label: Basic Settings
        description: The basic settings for the Transfers API
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configurationGroupSummary/v2.0.0/model.json'
      x-apiture-namespace: configurations
      x-apiture-composition:
        - $ref: '#/components/schemas/abstractResource'
        - properties:
            - name
            - label
            - description
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
        _error:
          description: An object which describes an error. This value is omitted if the operation succeeded without error.
          type: object
          allOf:
            - $ref: '#/components/schemas/error'
        name:
          description: 'The name of this configuration group, must be unique within the set of all resources of this type.'
          type: string
          maxLength: 48
          minLength: 1
          pattern: '[a-zA-Z][-\w_]*'
          example: transfers
        label:
          description: 'The text label for this resource, suitable for presentation to the client.'
          type: string
          maxLength: 128
          minLength: 1
          example: Transfers Configuration
        description:
          description: 'The full description for this resource, suitable for presentation to the client.'
          type: string
          maxLength: 4096
          minLength: 1
          example: The configuration for the Transfers API.
      type: object
      x-apiture-flattened: true
    attributeValue:
      x-apiture-version: 2.0.0
      title: Attribute Value (v2.0.0)
      description: |-
        The data associated with this attribute.

        This schema was resolved from [`common/attributeValue`](https://production.api.apiture.com/schemas/common/attributeValue/v2.0.0/model.json).
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/attributeValue/v2.0.0/model.json'
      x-apiture-namespace: common
      type: object
      properties: {}
      x-apiture-flattened: true
    labelGroup:
      title: Label Group (v1.0.0)
      description: >-
        A map that defines labels for the items in a group. This is a map from each item *name* &rarr; *a [`labelItem`](#schema-labelitem) object*.
        For example, consider a JSON response that includes a property named `revenueEstimate`; the values for `revenueEstimate` must be one of the
        items in the group named `estimatedAnnualRevenue`, with options ranging `under1Million`, to `over100Million`. The item name is used as the
        selected value in an Apiture representation, such as `{ ..., "revenueEstimate" : "from10to100Million" , ...}`, and the item with the name
        `from10to100Million` defines the presentation labels for that item, as well as other metadata about that choice: this is the range
        `[10000000.00,100000000.00)`.


        This allows the client to let the user select a value from a list, such as the following derivde from the labels in the example:

          * Unknown
          * Under $1M
          * $1M to $10M
          * $10M to $100M
          * $100M or more

        Note that the `other` item is hidden from the selection list, as that item is marked as `hidden`. For items which define numeric ranges, a
        client may instead let the customer *directly* enter their estimated annual revenue as a number, such as 4,500,000.00. The client can then
        match that number to one of ranges in the items and set the `revenueEstimate` to the corresponding item's name: `{ ..., "revenueEstimate" :
        "from1to10Million", ... }`.


        This schema was resolved from [`common/labelGroup`](https://production.api.apiture.com/schemas/common/labelGroup/v1.0.0/model.json).
      x-apiture-key: labelName
      x-apiture-version: 1.0.0
      additionalProperties:
        $ref: '#/components/schemas/labelItem'
      example:
        unknown:
          label: Unknown
          code: '0'
          hidden: true
        under1Million:
          label: Under $1M
          code: '1'
          range: '[0,1000000.00)'
          variants:
            fr:
              label: Moins de $1M
        from1to10Million:
          label: $1M to $10M
          code: '2'
          range: '[1000000.00,10000000.00)'
          variants:
            fr:
              label: $1M \u00e0 $10M
        from10to100Million:
          label: $10M to $100M
          code: '3'
          range: '[10000000.00,100000000.00)'
          variants:
            fr:
              - label $10M \u00e0 $100M
        over100Million:
          label: 'Over $100,000,000.00'
          code: '4'
          range: '[100000000.00,]'
          variants:
            fr:
              label: Plus de $10M
        other:
          label: Other
          code: 254
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/labelGroup/v1.0.0/model.json'
      x-apiture-namespace: common
      type: object
      properties: {}
      x-apiture-flattened: true
    configurationValue:
      x-apiture-version: 2.0.0
      title: Configuration Value (v2.0.0)
      description: >-
        The data associated with this configuration.


        This schema was resolved from
        [`configurations/configurationValue`](https://production.api.apiture.com/schemas/configurations/configurationValue/v2.0.0/model.json).
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configurationValue/v2.0.0/model.json'
      x-apiture-namespace: configurations
      type: object
      properties: {}
      x-apiture-flattened: true
    links:
      title: Links (v1.0.0)
      x-apiture-version: 1.0.0
      description: |-
        An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.

        This schema was resolved from [`common/links`](https://production.api.apiture.com/schemas/common/links/v1.0.0/model.json).
      type: object
      x-apiture-key: linkRelationName
      additionalProperties:
        $ref: '#/components/schemas/link'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/links/v1.0.0/model.json'
      x-apiture-namespace: common
      properties: {}
      x-apiture-flattened: true
    abstractRequest:
      x-apiture-version: 2.0.0
      title: Abstract Request (v2.0.0)
      description: >-
        An abstract schema used to define other request-only schemas. This is a [HAL](https://tools.ietf.org/html/draft-kelly-json-hal-08) resource
        representation, minus the `_error` defined in `abstractResource`.


        This schema was resolved from [`common/abstractRequest`](https://production.api.apiture.com/schemas/common/abstractRequest/v2.0.0/model.json).
      properties:
        _links:
          description: 'An optional map of links, mapping each link relation to a link object. This model defines the `_links` object of HAL representations.'
          allOf:
            - $ref: '#/components/schemas/links'
        _embedded:
          description: 'An optional map of nested resources, mapping each nested resource name to a nested resource representation.'
          type: object
        _profile:
          description: 'The URI of a [resource profile](https://developer.apiture.com/docs/concepts/profiles/) which describes the representation.'
          type: string
          format: uri
      example:
        _profile: 'https://api.apiture.com/schemas/common/abstractRequest/v2.0.0/profile.json'
        _links:
          self:
            href: 'https://api.devbank.apiture.com/applications/'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/abstractRequest/v2.0.0/model.json'
      x-apiture-namespace: common
      type: object
      x-apiture-flattened: true
    error:
      x-apiture-version: 2.0.0
      title: Error (v2.0.0)
      description: |-
        Describes an error in an API request or in a service called via the API.

        This schema was resolved from [`common/error`](https://production.api.apiture.com/schemas/common/error/v2.0.0/model.json).
      required:
        - message
      properties:
        message:
          type: string
          description: A localized message string describing the error condition.
        _id:
          description: >-
            A unique identifier for this error instance. This may be used as a correlation ID with the root cause error (i.e. this ID may be logged at
            the source of the error). This is is an opaque string.
          readOnly: true
          type: string
        statusCode:
          description: The HTTP status code associate with this error.
          type: integer
          minimum: 100
          maximum: 599
          example: 422
        type:
          type: string
          description: >-
            An error identifier which indicates the category of error and associate it with API support documentation or which the UI tier can use to
            render an appropriate message or hint. This provides a finer level of granularity than the `statusCode`. For example, instead of just 400
            Bad Request, the `type` may be much more specific. such as `integerValueNotInAllowedRange` or `numericValueExceedsMaximum` or
            `stringValueNotInAllowedSet`.
        occurredAt:
          type: string
          format: date-time
          description: 'An [RFC 3339](https://tools.ietf.org/html/rfc3339) UTC time stamp indicating when the error occurred.'
          example: '2018-02-02T03:37:15.375Z'
        attributes:
          description: >-
            Informative values or constraints which describe the error. For example, for a value out of range error, the attributes may specify the
            `minimum` and `maximum` values. This allows clients to present error messages as they see fit (the API does not assume the
            client/presentation tier). The set of attributes varies by error `type`.
          allOf:
            - $ref: '#/components/schemas/attributes'
        remediation:
          type: string
          description: An optional localized string which provides hints for how the user or client can resolve the error.
        errors:
          description: An optional array of nested error objects. This property is not always present.
          type: array
          items:
            $ref: '#/components/schemas/error'
        _links:
          $ref: '#/components/schemas/links'
      example:
        _id: 2eae46e1575c0a7b0115a4b3
        message: Descriptive error message...
        statusCode: 422
        type: errorType1
        remediation: Remediation string...
        occurredAt: '2018-01-25T05:50:52.375Z'
        errors:
          - _id: ccdbe2c5c938a230667b3827
            message: An optional embedded error
          - _id: dbe9088dcfe2460f229338a3
            message: Another optional embedded error
        _links:
          describedby:
            href: 'https://developer.apiture.com/errors/errorType1'
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/error/v2.0.0/model.json'
      x-apiture-namespace: common
      type: object
      x-apiture-flattened: true
    configurationSchemaValue:
      x-apiture-version: 2.0.0
      title: Configuration Schema Value (v2.0.0)
      description: >-
        The data associated with this configuration schema.


        This schema was resolved from
        [`configurations/configurationSchemaValue`](https://production.api.apiture.com/schemas/configurations/configurationSchemaValue/v2.0.0/model.json).
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/configurations/configurationSchemaValue/v2.0.0/model.json'
      x-apiture-namespace: configurations
      type: object
      properties: {}
      x-apiture-flattened: true
    labelItem:
      title: Label Item (v1.0.0)
      description: >-
        An item in a [`labelGroup`](#schema-labelgroup), with a set of `variants` which contains different localized labels for the item. Each
        ([`simpleLabel`](#schema-simpleLabel)) variant defines the presentation text label and optional description for a language. Items may also
        have a lookup `code` to map to external syststems, a numeric range, and a `hidden` boolean to indicate the item is normally hidden in the UI.


        This schema was resolved from [`common/labelItem`](https://production.api.apiture.com/schemas/common/labelItem/v1.0.0/model.json).
      x-apiture-version: 1.0.0
      example:
        over100Million:
          label: 'Over $100,000,000.00'
          code: '4'
          range: '[100000000.00,]'
          variants:
            fr:
              label: Plus de $10M
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/labelItem/v1.0.0/model.json'
      x-apiture-namespace: common
      x-apiture-composition:
        - $ref: '#/components/schemas/simpleLabel'
        - properties:
            - variants
            - code
            - hidden
            - range
      properties:
        label:
          type: string
          description: A label or title which may be used as labels or other UI controls which present a value.
          example: Board of Directors
        description:
          type: string
          description: A more detailed localized description of a localizable label.
        variants:
          description: >-
            The language-specific variants of this label. The keys in this object are [RFC 7231](https://tools.ietf.org/html/rfc7231#section-3.1.3.1)
            language codes.
          x-apiture-key: languageCode
          type: object
          additionalProperties:
            $ref: '#/components/schemas/simpleLabel'
          example:
            en:
              label: More then $10M
            es:
              label: Mas de $10M
            fr:
              label: Plus de $10M
        code:
          type: string
          description: 'If the localized value is associated with an external standard or definition, this is a lookup code or key or URI for that value.'
          example: '3'
          minLength: 1
        hidden:
          type: boolean
          description: 'If `true`, this item is normally hidden from the User Interface.'
        range:
          description: >-
            The range of values, if the item describes a bounded numeric value. This is range notation such as `[min,max]`, `(exclusiveMin,max]`,
            `[min,exclusiveMax)`, or `(exclusiveMin,exclusiveMax)`. For example, `[0,100)` is the range greater than or equal to 0 and less than 100.
            If the *min* or *max* value are omitted, that end of the range is unbounded. For example, `(,1000.00)` means less than 1000.00 and
            `[20000.00,]` means 20000.00 or more. The ranges do not overlap or have gaps.
          type: string
          pattern: '^[\[\(](-?(0|[1-9][0-9]*)(\.[0-9]+)?)?,(-?(0|[1-9][0-9]*)(\.[0-9]+)?)?[\]\)]$'
      type: object
      x-apiture-flattened: true
    link:
      x-apiture-version: 1.0.0
      title: Link (v1.0.0)
      description: >-
        Describes a hypermedia link within a `_links` object in HAL representations. In Apiture APIs, links are [HAL
        links](https://developer.apiture.com/docs/concepts/links), but Apiture APIs do not use the `name` or `hreflang` properties of HAL. Apiture
        links _may_ include a `method` property.


        This schema was resolved from [`common/link`](https://production.api.apiture.com/schemas/common/link/v1.0.0/model.json).
      required:
        - href
      properties:
        href:
          type: string
          format: uri
          description: The URI or URI template for the resource/operation this link refers to.
        type:
          type: string
          description: The media type for the resource.
        templated:
          type: boolean
          description: 'If true, the link''s href is a [URI template](https://tools.ietf.org/html/rfc6570).'
        title:
          type: string
          description: An optional human-readable localized title for the link.
        deprecation:
          type: string
          format: uri
          description: 'If present, the containing link is deprecated and the value is a URI which provides human-readable text information about the deprecation.'
        profile:
          type: string
          format: uri
          description: 'The URI of a profile document, a JSON document which describes the target resource/operation.'
      example:
        href: 'https://api.devbank.apiture.com/applications/application/328f6bf6-d762-422f-a077-ab91ca4d0b6f'
        title: Application
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/link/v1.0.0/model.json'
      x-apiture-namespace: common
      type: object
      x-apiture-flattened: true
    simpleLabel:
      title: Simple Label (v1.0.0)
      description: |-
        A text label and optional description.

        This schema was resolved from [`common/simpleLabel`](https://production.api.apiture.com/schemas/common/simpleLabel/v1.0.0/model.json).
      x-apiture-version: 1.0.0
      type: object
      required:
        - label
      properties:
        label:
          type: string
          description: A label or title which may be used as labels or other UI controls which present a value.
          example: Board of Directors
        description:
          type: string
          description: A more detailed localized description of a localizable label.
      x-apiture-resolved-from: 'https://production.api.apiture.com/schemas/common/simpleLabel/v1.0.0/model.json'
      x-apiture-namespace: common
      x-apiture-flattened: true
  responses:
    '304':
      description: Not Modified. The resource has not been modified since it was last fetched.
    '400':
      description: >-
        Bad Request.  The request body or one or more of the query parameters was not well formed.  The `_error` field in the response will contain
        details about the request error.


        This error response may have one of the following `type` values:

        * [`externalAccountIsNotVerified`](#err-externalAccountIsNotVerified)

        * [`inactiveAccount`](#err-inactiveAccount)

        * [`invalidConfigurationGroup`](#err-invalidConfigurationGroup)

        * [`invalidConfigurationValue`](#err-invalidConfigurationValue)

        * [`invalidDate`](#err-invalidDate)

        * [`invalidExternalAccount`](#err-invalidExternalAccount)

        * [`invalidScheduledTransfer`](#err-invalidScheduledTransfer)

        * [`invalidScheduleStart`](#err-invalidScheduleStart)

        * [`invalidFundingTransferStateChange`](#err-invalidFundingTransferStateChange)

        * [`malformedAccountUri`](#err-malformedAccountUri)

        * [`malformedSourceAccountUri`](#err-malformedSourceAccountUri)

        * [`malformedTargetAccountUri`](#err-malformedTargetAccountUri)

        * [`malformedEveryField`](#err-malformedEveryField)

        * [`malformedRequestBody`](#err-malformedRequestBody)

        * [`malformedTransferUri`](#err-malformedTransferUri)

        * [`missingAccountInTransfer`](#err-missingAccountInTransfer)

        * [`transferDailyLimitExceeded`](#err-transferDailyLimitExceeded)

        * [`transferSingleLimitExceeded`](#err-transferSingleLimitExceeded)

        * [`transferCannotBeToAndFromExternal`](#err-transferCannotBeToAndFromExternal)

        * [`undefinedTransferId`](#err-undefinedTransferId)

        * [`invalidFirstLastTransfer`](#err-invalidFirstLastTransfer)
      x-apiture-errors:
        - externalAccountIsNotVerified
        - inactiveAccount
        - invalidConfigurationGroup
        - invalidConfigurationValue
        - invalidDate
        - invalidExternalAccount
        - invalidScheduledTransfer
        - invalidScheduleStart
        - invalidFundingTransferStateChange
        - malformedAccountUri
        - malformedSourceAccountUri
        - malformedTargetAccountUri
        - malformedEveryField
        - malformedRequestBody
        - malformedTransferUri
        - missingAccountInTransfer
        - transferDailyLimitExceeded
        - transferSingleLimitExceeded
        - transferCannotBeToAndFromExternal
        - undefinedTransferId
        - invalidFirstLastTransfer
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    '412':
      description: >-
        Precondition Failed. The supplied `if-Match` header value does not match the most recent `ETag` response header value. The resource has
        changed in the interim.
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    '422':
      description: >-
        Unprocessable Entity. One or more of the query parameters was well formed but otherwise invalid. The `_error` field in the response will
        contain details about the request error.
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    404ScheduledTransfer:
      description: |-
        Not Found. There is no such resource at the specified `{Id}` The `_error` field in the response will contain details about the request error.

        This error response may have one of the following `type` values:
        * [`invalidAccountId`](#err-invalidAccountId)
        * [`invalidScheduledTransferId`](#err-invalidScheduledTransferId)
      x-apiture-errors:
        - invalidAccountId
        - invalidScheduledTransferId
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    404PastTransfer:
      description: >-
        Not Found. There is no such past transfer resource at the specified `{transferId}` The `_error` field in the response will contain details
        about the request error.


        This error response may have one of the following `type` values:

        * [`invalidPastTransferId`](#err-invalidPastTransferId)
      x-apiture-errors:
        - invalidPastTransferId
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    404ConfigurationGroup:
      description: >-
        Not Found. There is no such configuration group resource at the specified `{groupName}` The `_error` field in the response will contain
        details about the request error.


        This error response may have one of the following `type` values:

        * [`invalidGroupName`](#err-invalidGroupName)
      x-apiture-errors:
        - invalidGroupName
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    404ConfigurationGroupOrValue:
      description: >-
        Not Found. There is either no such configuration group resource at the specified `{groupName}` or no such value at the specified
        `{valueName}`. The `_error` field in the response will contain details about the request error.


        This error response may have one of the following `type` values:

        * [`invalidValueName`](#err-invalidValueName)
      x-apiture-errors:
        - invalidValueName
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    422ScheduledTransfer:
      description: >-
        Unprocessable Entity. One or more of the query parameters was well formed but otherwise invalid. The `_error` field in the response will
        contain details about the request error.


        This error response may have one of the following `type` values:

        * [`invalidTransferState`](#err-invalidTransferState)

        * [`missingAccountInformationForTransfer`](#err-missingAccountInformationForTransfer)

        * [`transferAmountBelowMinimum`](#err-transferAmountBelowMinimum)
      x-apiture-errors:
        - invalidTransferState
        - missingAccountInformationForTransfer
        - transferAmountBelowMinimum
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
    500ScheduledTransfer:
      description: |-
        Server Error. The server encountered an unexpected condition that prevented it from  fulfilling the request.

        This error response may have one of the following `type` values:
        * [`setStatusFailed`](#err-setStatusFailed)
        * [`updateTransferFailed`](#err-updateTransferFailed)
      x-apiture-errors:
        - setStatusFailed
        - updateTransferFailed
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/errorResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/errorResponse'
  parameters:
    pastTransferIdPathParam:
      name: pastTransferId
      description: The unique identifier of this scheduled transfer. This is an opaque string.
      in: path
      required: true
      schema:
        type: string
    accountQueryParam:
      name: account
      in: query
      required: false
      description: >-
        Filter the result to transfers from or to the account named by this parameter. The value is the `_id` (not the account number) of an external
        or internal account. This parameter is ignored if both `?sourceAccount=` and `?targetAccount=` are supplied. For security purposes, note that
        this is not the same as the account number.
      schema:
        type: string
    sourceAccountQueryParam:
      name: sourceAccount
      in: query
      required: false
      description: >-
        Filter the result to transfers _from_ the account named by this parameter. The value is the `_id` (not the account number) of the source
        external or internal account. For security purposes, note that this is not the same as the account number.
      schema:
        type: string
    targetAccountQueryParam:
      name: targetAccount
      in: query
      required: false
      description: >-
        Filter the result to transfers _to_ the account named by this parameter. The value is the `_id` (not the account number) of the target
        external or internal account. For security purposes, note that this is not the same as the account number.
      schema:
        type: string
    configurationGroupNamePathParam:
      name: groupName
      description: The unique name of this configuration group.
      in: path
      required: true
      schema:
        type: string
    configurationGroupValueNamePathParam:
      name: valueName
      description: >-
        The unique name of a value in a configuration group. This is the name of the value in the `schema`. A `{valueName}` must be a simple
        identifier following the pattern _`letter [letter | digit | '-' | '_']*`_
      in: path
      required: true
      schema:
        type: string
    scheduledTransferIdPathParam:
      name: scheduledTransferId
      description: The unique identifier of this scheduled transfer. This is an opaque string.
      in: path
      required: true
      schema:
        type: string
    scheduledTransferUriQueryParam:
      name: scheduledTransferUri
      description: >-
        The URI of a scheduled transfer resource. This parameter is **deprecated** and will be removed in the next version. Use `?scheduledTransfer=`
        instead.
      in: query
      schema:
        type: string
    scheduledTransferQueryParam:
      name: scheduledTransfer
      description: A server-generated key which identifies a scheduled transfer resource.
      in: query
      required: true
      schema:
        type: string
    filterQueryParam:
      name: filter
      in: query
      description: 'Optional filter criteria. See [filtering](https://developer.apiture.com/docs/concepts/filtering).'
      schema:
        type: string
    qQueryParam:
      name: q
      in: query
      description: 'Optional search string. See [searching](https://developer.apiture.com/docs/concepts/searching).'
      schema:
        type: string
    stateQueryParam:
      name: state
      in: query
      description: >-
        Subset the transfers collection to those whose `state` matches this value. Use `|` to separate multiple values. For example, `?state=pending`
        matches only items whose `state` is `pending`; `?state=removed|inactive` matches items whose `state` is `removed` or `inactive`. This is
        combined with an implicit `and` with other filters if they are used. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
      schema:
        type: array
        items:
          type: string
          enum:
            - scheduled
            - recurring
            - pendingApproval
            - processing
            - suspended
            - completed
            - canceled
            - failed
    nameQueryParam:
      name: name
      in: query
      description: >-
        Subset the transfers collection to those with this name value. Use `|` to separate multiple values. For example, `?name=Bartell` will match
        only items whose name is `Bartell`; `?name=Bartell|kirsten` will match items whose name is `Bartell` or `kirsten`. This is combined with an
        implicit `and` with other filters if they are used. See [filtering](https://developer.apiture.com/docs/concepts/filtering).
      schema:
        type: string
    ifMatchHeaderParam:
      name: If-Match
      description: The entity tag that was returned in the `ETag` response. This must match the current entity tag of the resource.
      in: header
      schema:
        type: string
    ifNoneMatchHeaderParam:
      name: If-None-Match
      description: >-
        The entity tag that was returned in the `ETag` response. If the resource's current entity tag matches, the `GET` will return 304 (Not
        Modified) and no response body, else the resource representation will be returned.
      in: header
      schema:
        type: string
    unmaskedQueryParam:
      name: unmasked
      description: >-
        When requesting a transfer, the full account number of the source and target accounts is not included in the response by default, for security
        reasons. Include this query parameter, with a value of `true`, to request that the response body includes the full account number. Such
        requests are auditable.
      in: query
      required: false
      schema:
        type: boolean
        default: false
  securitySchemes:
    apiKey:
      type: apiKey
      name: API-Key
      in: header
      description: >-
        API Key based authentication. Each client application must pass its private, unique API key, allocated in the developer portal, via the
        `API-Key: {api-key}` request header.
    accessToken:
      type: oauth2
      description: >-
        OAuth2 client access token authentication. The client authenticates against the server at `authorizationUrl`, passing the client's private
        `clientId` (and optional `clientSecret`) as part of this flow. The client obtains an access token from the server at `tokenUrl`. It then
        passes the received access token via the `Authorization: Bearer {access-token}` header in subsequent API calls. The authorization process also
        returns a refresh token which the client should use to renew the access token before it expires.
      flows:
        authorizationCode:
          authorizationUrl: 'https://auth.apiture.com/oauth2/authorize'
          tokenUrl: 'http://auth.apiture.com/auth/oauth2/token'
          scopes:
            banking/read: Read access to accounts and account-related resources such as transfers and transactions.
            banking/write: Write (update) access to accounts and account-related resources such as transfers and transactions.
            banking/delete: Delete access to deletable accounts and account-related resources such as transfers.
            banking/readBalance: >-
              Read access to account balances. This must be granted in addition to the `banking/read` scope in order to view balances, but is included
              in the `banking/full` scope.
            banking/full: Full access to accounts and account-related resources such as transfers and transactions.
            admin/read: Read access to system configuration.
            admin/write: Write (update) access to system configuration.
            admin/full: Full access to system configuration.
