openapi: 3.1.0
info:
  title: Admin Insights
  description: |-
    The Insights API manages visual presentation of analytic results related to the financial institution's data. By utilizing this API, administrative consumers at a financial institution can gain valuable insights into customer behavior and make informed business decisions. Insights are defined and provided by a data provider.

    *Insight Types* are templates of visual data presentations that analysts use to create insights instances they see in the application. Insight Types are analogous to items in a tool palette. Data scientists define the Insight Types that analysts may chose from when building dashboards or reports.

    An Insight Type consists of a `visualType`, one of `chart`, `metric`, or `table`. Charts offer graphical representation of data, helping users visualize patterns, trends, and correlations. Metrics provide numeric measurements, such as average funding amount or average customer age. Tables comprise of columns and rows that contain specific values.

    An Insight Category tells which measure the Insight or Insight Type corresponds to. These categories are used to group insights based on the insight's underlying data source. When users create their own dashboards, they can add Insights to a dashboard based on its category or ID.
  version: 0.19.0
  contact:
    name: Apiture
    url: https://developer.apiture.com/help/support/
    email: api@apiture.com
  termsOfService: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
  license:
    name: Apiture API License
    url: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
x-apiture-namespace: bankingAdminInsights
servers:
  - url: /bankingAdmin
tags:
  - name: Insight Types
    description: Templates Used to Create Insight Instances
  - name: Insights
    description: Visual Presentations of Banking Analytics
  - name: Insight Categories
    description: Insight Categories
paths:
  /insightTypes:
    get:
      summary: Return a list of insight types
      description: Return a collection of insight types.
      operationId: listInsightTypes
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightTypes
      tags:
        - Insight Types
      parameters:
        - name: q
          in: query
          description: Optional search string. This search is case insensitive and will return insight types where any part of the label or description matches the search string. See "Using Search Strings" in the Admin Search API for details on searching for multiple words.
          schema:
            type: string
            format: text
            minLength: 1
            maxLength: 1000
        - name: label
          in: query
          description: Return insight types whose `label` equals the given value, ignoring case. See also the `q` query parameter to search for insight types based on substrings.
          schema:
            type: string
            format: text
            minLength: 4
            maxLength: 128
        - name: category
          description: Return insight types whose category.id equals the given `category` value.
          in: query
          schema:
            $ref: '#/components/schemas/resourceId'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightTypes'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - accessToken:
            - adminData/read
      x-apiture-permission: listInsightTypes
    post:
      summary: Create a new insight type
      description: Create a new insight type.
      operationId: createInsightType
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightTypes
      tags:
        - Insight Types
      security:
        - accessToken:
            - adminData/write
      requestBody:
        description: The data necessary to create a new insight type.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/newInsightType'
          application/vnd.restful+json:
            schema:
              $ref: '#/components/schemas/newInsightType'
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightType'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/insightType'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            Location:
              description: The URI of the new insight type.
              schema:
                type: string
                format: uri-reference
                maxLength: 128
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          $ref: '#/components/responses/409InsightType'
        '422':
          $ref: '#/components/responses/422InsightType'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      x-apiture-permission: createInsightType
  /insightTypes/{insightTypeId}:
    parameters:
      - $ref: '#/components/parameters/insightTypeIdPathParam'
    get:
      summary: Fetch a representation of this insight type
      description: Return the JSON representation of this insight type resource.
      operationId: getInsightType
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightTypes
      tags:
        - Insight Types
      security:
        - accessToken:
            - adminData/read
      parameters:
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightType'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '304':
          $ref: '#/components/responses/304'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404InsightType'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      x-apiture-permission: getInsightType
    patch:
      summary: Update this insight type
      description: Perform a partial update of this insight type as per [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7396) format and processing rules. Only fields in the request body are updated on the resource; fields which are omitted are not updated.
      operationId: patchInsightType
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightTypes
      tags:
        - Insight Types
      security:
        - accessToken:
            - adminData/write
      parameters:
        - $ref: '#/components/parameters/ifMatchHeaderParam'
      requestBody:
        description: The insight type parameters to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/insightTypePatch'
          application/vnd.restful+json:
            schema:
              $ref: '#/components/schemas/insightTypePatch'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightType'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/insightType'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404InsightType'
        '409':
          $ref: '#/components/responses/409InsightType'
        '412':
          $ref: '#/components/responses/412'
        '422':
          $ref: '#/components/responses/422InsightType'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      x-apiture-permission: patchInsightType
  /recommendedInsightTypes:
    get:
      summary: Fetch a representation of the recommended insight types
      description: Returns insights based on current users preferred topics. These are matched using the Insight's topicType.
      operationId: getRecommendedInsightTypes
      x-apiture-api: bankingAdminInsights
      x-apiture-group: recommendedInsightTypes
      tags:
        - Insight Types
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightTypes'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - accessToken:
            - adminData/read
      x-apiture-permission: getRecommendedInsightTypes
  /insightVisuals:
    post:
      summary: Fetch a visual representation of an insight
      description: 'Fetch a visual representation of an insight using the data provider. This operation is idempotent: an insight visual will not change unless it is changed in the data provider.'
      operationId: getInsightVisual
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightVisuals
      tags:
        - Insights
      requestBody:
        required: true
        description: The fields required to retrieve an insight visual from the data provider.
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/insightVisualParameters'
          application/json:
            schema:
              $ref: '#/components/schemas/insightVisualParameters'
      responses:
        '200':
          description: OK. The response is an HTML element that the client can use to embed visuals in the application.
          content:
            text/html:
              schema:
                type: string
                format: text
                maxLength: 5000000
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      security:
        - accessToken:
            - adminData/read
      x-apiture-permission: getInsightVisual
  /insightCategories:
    get:
      summary: Return a list of insight categories
      description: Return a collection of insight categories.
      operationId: listInsightCategories
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightCategories
      tags:
        - Insight Categories
      security:
        - accessToken:
            - adminData/read
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightCategories'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/insightCategories'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      x-apiture-permission: listInsightCategories
  /insightCategories/{insightCategoryId}:
    parameters:
      - $ref: '#/components/parameters/insightCategoryIdPathParam'
    get:
      summary: Fetch a representation of this insight category
      description: Return the JSON representation of this insight category resource.
      operationId: getInsightCategory
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightCategories
      tags:
        - Insight Categories
      security:
        - accessToken:
            - adminData/read
      parameters:
        - $ref: '#/components/parameters/ifNoneMatchHeaderParam'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightCategory'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/insightCategory'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '304':
          $ref: '#/components/responses/304'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404InsightCategory'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      x-apiture-permission: getInsightCategory
    patch:
      summary: Update this insight category
      description: Perform a partial update of this insight category as per [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7396) format and processing rules. Only fields in the request body are updated on the resource; fields which are omitted are not updated.
      operationId: patchInsightCategory
      x-apiture-api: bankingAdminInsights
      x-apiture-group: insightCategories
      tags:
        - Insight Categories
      security:
        - accessToken:
            - adminData/write
      parameters:
        - $ref: '#/components/parameters/ifMatchHeaderParam'
      requestBody:
        description: The insight category parameters to update.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/insightCategoryPatch'
          application/vnd.restful+json:
            schema:
              $ref: '#/components/schemas/insightCategoryPatch'
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/insightCategory'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/insightCategory'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404InsightCategory'
        '409':
          description: |
            Conflict.

            This problem response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/duplicateInsightCategoryLabel/v1.0.0`](https://static.api.apiture.com/errors/duplicateInsightCategoryLabel/v1.0.0)<br>
              The given `label` is already in use by another insight category.
              Remediation: Resubmit the request with a unique `label`.
          x-apiture-errors:
            - duplicateInsightCategoryLabel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '412':
          $ref: '#/components/responses/412'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
      x-apiture-permission: patchInsightCategory
components:
  securitySchemes:
    accessToken:
      type: openIdConnect
      description: OpenId Connect (OIDC) authentication/authorization. The client uses the `authorization_endpoint` and `token_endpoint` to obtain an access token to pass in the `Authorization` header. Those endpoints are available via the OIDC Configuration URL. The actual URL may vary with each financial institution. See details at [Secure Access](https://dx.apiture.com/docs/api/concepts/api-keys/).
      openIdConnectUrl: https://auth.apiture.com/oidc/.well-known/openid-configuration
      x-resolved-from: ../../common/openapi.yaml#/components/securitySchemes/accessToken
  responses:
    '304':
      description: Not Modified. The resource has not been modified since it was last fetched.
      x-resolved-from: ../../common/openapi.yaml#/components/responses/304
    '400':
      description: |
        Bad Request. The request body, request headers, and/or query parameters are not well-formed.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/badRequest/v1.0.0`](https://static.api.apiture.com/errors/badRequest/v1.0.0)<br>
          The request body and/or parameters was not well-formed.
          Remediation: Correct any syntax or schema errors in the request body or parameters.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/badRequest'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/badRequest/v1.0.0
              title: Bad Request
              status: 400
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: Input did not parse as JSON
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/badRequest/v1.0.0
              title: Bad Request
              status: 400
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: Input did not parse as JSON
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/400
    '401':
      description: |
        Unauthorized. The operation requires authentication but no authentication or insufficient authentication was given.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/unauthorized/v1.0.0`](https://static.api.apiture.com/errors/unauthorized/v1.0.0)<br>
          The request lacks valid authentication credentials for the target resource or operation.
          Remediation: Authenticate the user and pass the required authorization with the request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/unauthorized'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unauthorized/v1.0.0
              title: Unauthorized
              status: 401
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request lacks valid authentication credentials
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unauthorized/v1.0.0
              title: Unauthorized
              status: 401
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request lacks valid authentication credentials
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/401
    '403':
      description: |
        Forbidden. The authenticated caller is not authorized to perform the requested operation.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/forbidden/v1.0.0`](https://static.api.apiture.com/errors/forbidden/v1.0.0)<br>
          The user or agent is not allowed to perform this operation; authentication credentials were provided in the request, but the server considers them insufficient to grant access.
          Remediation: Check the user's permissions and entitlements before attempting the operation.

        * [`https://static.api.apiture.com/errors/customerDisabled/v1.0.0`](https://static.api.apiture.com/errors/customerDisabled/v1.0.0)<br>
          The customer is disabled.
          Remediation: Have the customer contact the financial institution for support.

        * [`https://static.api.apiture.com/errors/antiMalwareRequired/v1.0.0`](https://static.api.apiture.com/errors/antiMalwareRequired/v1.0.0)<br>
          The financial institution requires the customer to have anti-malware software installed.
          Remediation: Direct the user to the software requirements guide to install the correct anti-malware software.

        * [`https://static.api.apiture.com/errors/modificationForbidden/v1.0.0`](https://static.api.apiture.com/errors/modificationForbidden/v1.0.0)<br>
          The customer is properly authenticated but not authorized to create, modify, or delete resources.
          Remediation: Avoid modification operation for customers with read-only authorization.

        * [`https://static.api.apiture.com/errors/challengeRequired/v1.0.0`](https://static.api.apiture.com/errors/challengeRequired/v1.0.0)<br>
          The operation requires the customer to complete an identity challenge.
          Remediation: Complete the challenge as per the problem response, and add an additional `Challenge` header to the call.
        The `attributes` object in the error may have the properties defined by the [`requiredIdentityChallenge` schema](#schema-requiredIdentityChallenge).
        * [`https://static.api.apiture.com/errors/challengeBlocked/v1.0.0`](https://static.api.apiture.com/errors/challengeBlocked/v1.0.0)<br>
          The user has failed challenges too many times and is blocked from attempting more or performing operations which require additional authentication.
          Remediation: Have the user end their login session and login again.

        * [`https://static.api.apiture.com/errors/noIdentityChallengeFactors/v1.0.0`](https://static.api.apiture.com/errors/noIdentityChallengeFactors/v1.0.0)<br>
          This operation requires an identity challenge, but the user does not have the necessary registered authentication factors.
          Remediation: Have the user register one or more challenge security code delivery factors.

        * [`https://static.api.apiture.com/errors/invalidIdentityChallengeHeader/v1.0.0`](https://static.api.apiture.com/errors/invalidIdentityChallengeHeader/v1.0.0)<br>
          The additional on-time `Challenge` header in this request is expired, already used, or otherwise invalid.
          Remediation: Supply a valid, unexpired, unclaimed `Challenge` header in the request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/forbidden'
        - $ref: '#/components/x-apiture-errors/customerDisabled'
        - $ref: '#/components/x-apiture-errors/antiMalwareRequired'
        - $ref: '#/components/x-apiture-errors/modificationForbidden'
        - $ref: '#/components/x-apiture-errors/challengeRequired'
        - $ref: '#/components/x-apiture-errors/challengeBlocked'
        - $ref: '#/components/x-apiture-errors/noIdentityChallengeFactors'
        - $ref: '#/components/x-apiture-errors/invalidIdentityChallengeHeader'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/forbidden/v1.0.0
              title: Forbidden
              status: 403
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request has valid authentication, but the authenticated agent is forbidden from accessing this resource or operation
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/forbidden/v1.0.0
              title: Forbidden
              status: 403
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request has valid authentication, but the authenticated agent is forbidden from accessing this resource or operation
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/403
    '412':
      description: |
        Precondition Failed. One or more conditions given in the request header fields evaluated to false when tested on the server.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/preconditionFailed/v1.0.0`](https://static.api.apiture.com/errors/preconditionFailed/v1.0.0)<br>
          One or more conditions given in the request header fields evaluated to false when tested on the server.
          Remediation: Update resources and use it's most recent ETag or modification time stamp.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/preconditionFailed'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
      x-resolved-from: ../../common/openapi.yaml#/components/responses/412
    '422':
      description: |
        Unprocessable Entity. The request body and/or query parameters were well-formed but otherwise invalid.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0`](https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0)<br>
          The syntax of the request entity is correct but was unable to process the contained instructions.
          Remediation: Provide a semantically correct request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/unprocessableEntity'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0
              title: Unprocessable Entity
              status: 422
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request body and/or query parameters were well-formed but otherwise invalid.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0
              title: Unprocessable Entity
              status: 422
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request body and/or query parameters were well-formed but otherwise invalid.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/422
    '429':
      description: |
        Too Many Requests. The client has sent too many requests in a given amount of time.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/tooManyRequests/v1.0.0`](https://static.api.apiture.com/errors/tooManyRequests/v1.0.0)<br>
          The client has sent too many requests in a given amount of time, exceeding rate limiting.
          Remediation: Slow down the rate of API calls.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/tooManyRequests'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/tooManyRequests/v1.0.0
              title: Too Many Requests
              status: 429
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The user has sent too many requests in a given amount of time.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/tooManyRequests/v1.0.0
              title: Too Many Requests
              status: 429
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The user has sent too many requests in a given amount of time.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/429
    404InsightType:
      description: Not Found. There is no such insight type resource at the specified `{insightTypeId}`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
    404InsightCategory:
      description: Not Found. There is no such insight category resource at the specified `{insightTypeId}`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
    409InsightType:
      description: |
        Conflict.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/duplicateInsightTypeLabel/v1.0.0`](https://static.api.apiture.com/errors/duplicateInsightTypeLabel/v1.0.0)<br>
          The given `label` is already in use by another insight type.
          Remediation: Resubmit the request with a unique `label`.
      x-apiture-errors:
        - duplicateInsightTypeLabel
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/vnd.restful+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
    422InsightType:
      description: |
        Unprocessable Entity. The request body and/or query parameters were well formed but otherwise invalid.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/incompleteDomoAnalyticsProvider/v1.0.0`](https://static.api.apiture.com/errors/incompleteDomoAnalyticsProvider/v1.0.0)<br>
          When creating or updating an insight type, `referenceId`, `tableName`, and either a `pageId` or `cardId` must be provided for the domo analytics provider.
          Remediation: Resubmit the request such that `referenceId`, `tableName`, and `pageId` or `cardId` are populated on the insight type.

        * [`https://static.api.apiture.com/errors/invalidInsightCategory/v1.0.0`](https://static.api.apiture.com/errors/invalidInsightCategory/v1.0.0)<br>
          The given insight category is invalid or does not exist.
          Remediation: Pass the `id` of a valid insight category.

        * [`https://static.api.apiture.com/errors/invalidInsightTopic/v1.0.0`](https://static.api.apiture.com/errors/invalidInsightTopic/v1.0.0)<br>
          The given insight topic is invalid or does not exist.
          Remediation: Pass the `id` of a valid insight topic.
      x-apiture-errors:
        - incompleteDomoAnalyticsProvider
        - invalidInsightCategory
        - invalidInsightTopic
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
    4XX:
      description: Client Request Problem. The client request had a problem not listed under another specific 400-level HTTP response code. View the `detail` in the problem response for additional details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/methodNotAllowed/v1.0.0
              title: Method Not Allowed
              status: 405
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: This HTTP method is not allowed for the given resource URL.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/methodNotAllowed/v1.0.0
              title: Method Not Allowed
              status: 405
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: This HTTP method is not allowed for the given resource URL.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/4XX
    5XX:
      description: Server Problem. The server encountered a problem not listed under another specific 500-level HTTP response code. View the `detail` in the problem response for additional details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/gatewayTimeout/v1.0.0
              title: Insufficient Storage
              status: 507
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The server is unable to store the representation needed to successfully complete the request.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/gatewayTimeout/v1.0.0
              title: Insufficient Storage
              status: 507
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The server is unable to store the representation needed to successfully complete the request.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/5XX
  schemas:
    insightReference:
      title: Customer Audience Insight Reference (v1.0.0)
      description: Simplified representation of the insight a customer audience was created from.
      type: object
      required:
        - id
      properties:
        id:
          description: The unique identifier for this insight type resource. This is an immutable opaque string.
          $ref: '#/components/schemas/readOnlyResourceId'
        insightTypeName:
          description: The human-readable label for this insight type.
          type: string
          minLength: 4
          maxLength: 128
          format: text
        insightCategoryName:
          description: The label of the insight category.
          type: string
          format: text
          maxLength: 512
      x-apiture-version: 1.0.0
    insightTypeFields:
      x-apiture-version: 4.0.0
      title: Insight Type Fields (v4.0.0)
      description: Common fields of the insight type resource used to build other model schemas.
      type: object
      x-apiture-fragment: true
      properties:
        label:
          description: The human-readable label for this insight type.
          type: string
          minLength: 4
          maxLength: 128
          format: text
        description:
          description: A description of the insight type.
          type: string
          format: text
          maxLength: 512
        category:
          $ref: '#/components/schemas/insightCategory'
        topic:
          $ref: '#/components/schemas/dataTopicReference'
        visualType:
          $ref: '#/components/schemas/insightVisualType'
        tags:
          $ref: '#/components/schemas/tagsArray'
        provider:
          $ref: '#/components/schemas/analyticsProvider'
        allows:
          $ref: '#/components/schemas/insightTypeAllows'
    newInsightType:
      x-apiture-version: 2.0.0
      title: New Insight Type (v2.0.0)
      description: Representation used to create a new insight type.
      required:
        - label
        - description
        - category
        - topic
        - visualType
        - provider
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/insightTypeFields'
      example:
        label: e-statement Enrollment
        description: Percentage of customer account types enrolled in e-statements.
        category:
          id: 14ba12de-a1bd
          label: Accounts
          description: Accounts insights provide information on banking products such as which account types are growing and the interest rates on loans.
        topic:
          id: 1cd2f01c-a9d9
          label: Feature Usage
          description: Learn about how customers use banking features.
        visualType: chart
        tags:
          - Efficiency
          - Marketing
        provider:
          name: domo
          domo:
            cardId: qjRQ2
            pageId: BgnKQ
            referenceId: 32
            tableName: ACCOUNT_PORTFOLIO
    insightTypeItem:
      x-apiture-version: 4.0.0
      title: Insight Type Item (v4.0.0)
      description: Summary representation of an insight type resource in the insight types collections. To fetch the full representation of the `insightType`, use the [`getInsightType`](#op-getInsightType) operation, passing this item's `id` field as the `insightTypeId` path parameter.
      required:
        - id
        - label
        - category
        - visualType
        - provider
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/insightTypeFields'
        - type: object
          properties:
            id:
              description: The unique identifier for this insight type resource. This is an immutable opaque string.
              $ref: '#/components/schemas/readOnlyResourceId'
            publishedAt:
              description: The timestamp when the insight type was published to the data provider, in [RFC3339](https://tools.ietf.org/html/rfc3339) UTC `YYYY-MM-DDThh:mm:ss.sssZ` date-time format.
              $ref: '#/components/schemas/readOnlyTimestamp'
      example:
        id: 0399abed-fd3d
        label: e-statement Enrollment
        description: Percentage of customer account types enrolled in e-statements
        category:
          id: 1ac441bb-b4ae
          label: Customers
          description: Customer insights let you know which customers are your highest earners, who is paying fees and more
        topic:
          id: 1cd2f01c-a9d9
          label: Feature Usage
          description: Learn about how customers use banking features.
        allows:
          createAudience: true
        visualType: chart
        tags:
          - Efficiency
          - Marketing
        provider:
          name: domo
          domo:
            cardId: qjRQ2
            pageId: BgnKQ
            referenceId: 32
            tableName: ACCOUNT_PORTFOLIO
        publishedAt: '2023-04-24T06:32:24.508Z'
    insightVisualType:
      title: Insight Visual Type (v1.0.0)
      description: |+
        The visual presentation type of the insight type.

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

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

        <tr>
            <td><strong><code>metric</code></strong></td><td>Metric: <p>A numeric measure of a key performance metric</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>chart</code></strong></td><td>Chart: <p>A chart view of insight data</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>table</code></strong></td><td>Table: <p>A table of insight data</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: insightVisualType
      enum:
        - metric
        - chart
        - table
      x-apiture-version: 1.0.0
    insightType:
      x-apiture-version: 4.0.0
      title: Insight Type (v4.0.0)
      description: An insight type stores the metadata needed to retrieve data and provide information for insights of that type.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/insightTypeItem'
      example:
        id: 0399abed-fd3d
        label: e-statement Enrollment
        description: Percentage of customer account types enrolled in e-statements.
        category:
          id: 14ba12de-a1bd
          label: Accounts
          description: Accounts insights provide information on banking products such as which account types are growing and the interest rates on loans.
        topic:
          id: 1cd2f01c-a9d9
          label: Feature Usage
          description: Learn about how customers use banking features.
        allows:
          createAudience: true
        visualType: chart
        tags:
          - Efficiency
          - Marketing
        provider:
          name: domo
          domo:
            cardId: qjRQ2
            pageId: BgnKQ
            referenceId: 32
            tableName: ACCOUNT_PORTFOLIO
        publishedAt: '2023-04-24T06:32:24.508Z'
    insightTypes:
      x-apiture-version: 4.0.0
      title: Insight Type Collection (v4.0.0)
      description: Collection of insight types. The items in the collection are ordered in the `items` array.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          required:
            - items
          properties:
            items:
              description: An array containing a page of insight type items.
              type: array
              maxItems: 10000
              items:
                $ref: '#/components/schemas/insightTypeItem'
      example:
        items:
          - id: 0399abed-fd3d
            label: e-statement Enrollment
            description: Percentage of customer account types enrolled in e-statements.
            category:
              id: 14ba12de-a1bd
              label: Accounts
              description: Accounts insights provide information on banking products such as which account types are growing and the interest rates on loans.
            topic:
              id: 1cd2f01c-a9d9
              label: Feature Usage
              description: Learn about how customers use banking features.
            allows:
              createAudience: true
            visualType: chart
            tags:
              - Efficiency
              - Marketing
            filters:
              operator: and
              primitiveFilters:
                - filterType:
                    id: 30e5979cbb91316427a9
                    name: newCustomersWithin60Days
                  values:
                    - today
                - filterType:
                    id: 8f78da527d8135445136
                    name: customerAge
                  operator: between
                  values:
                    - '35'
                    - '49'
            provider:
              name: domo
              domo:
                cardId: qjRQ2
                pageId: BgnKQ
                referenceId: 32
                tableName: ENGAGEMENT_SESSION_ACTIVITY
            publishedAt: '2023-04-24T06:32:24.508Z'
          - id: d62c0701-0d74-4836-83f9-ebf3709442ea
            label: Customers
            description: Customer insights let you know which customers are your highest earners, who is paying fees, and more.
            category:
              id: 1ac441bb-b4ae
              label: Customers
              description: Customer insights let you know which customers are your highest earners, who is paying fees and more
            topic:
              id: 1cd2f01c-a9d9
              label: Feature Usage
              description: Learn about how customers use banking features.
            allow:
              createAudience: true
            visualType: metric
            tags:
              - Efficiency
              - Marketing
            filters:
              operator: and
              primitiveFilters:
                - filterType:
                    id: 30e5979cbb91316427a9
                    name: newCustomersWithin60Days
                  values:
                    - today
                - filterType:
                    id: 8f78da527d8135445136
                    name: customerAge
                  operator: between
                  values:
                    - '35'
                    - '49'
            provider:
              name: domo
              domo:
                cardId: qjRQ2
                pageId: BgnKQ
                referenceId: 32
                tableName: ACCOUNT_PORTFOLIO
            publishedAt: '2023-04-24T06:32:24.508Z'
    analyticsProvider:
      x-apiture-version: 2.0.0
      title: Analytics Provider (v2.0.0)
      description: Properties that are specific to the data provider.
      type: object
      x-apiture-fragment: true
      properties:
        name:
          description: The data provider name.
          type: string
          format: text
          maxLength: 80
        domo:
          $ref: '#/components/schemas/domoAnalyticsProvider'
    domoAnalyticsProvider:
      x-apiture-version: 2.0.0
      title: Domo Analytics Provider (v2.0.0)
      description: Properties that are returned when Domo is set as the data provider. When creating or updating an insight type where Domo is the provider, `referenceId`, `tableName`, and either `cardId` or `pageId` must be provided.
      type: object
      x-apiture-fragment: true
      properties:
        cardId:
          description: The ID that relates to the card visual.
          type: string
          format: text
          minLength: 1
          maxLength: 64
        pageId:
          description: The ID that relates to the page visual.
          type: string
          format: text
          minLength: 1
          maxLength: 64
        referenceId:
          description: The ID that relates to the domo dataset.
          type: number
          format: int32
          minimum: 1
          maximum: 100000
        tableName:
          description: The name of the table that the visual retrieves its data from.
          type: string
          format: text
          minLength: 1
          maxLength: 255
    insightVisualParameters:
      title: Insight Visual Parameters (v1.0.0)
      description: The parameters to retrieve an insight visual.
      type: object
      required:
        - id
        - type
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          properties:
            id:
              description: The ID of the existing visual insight provided by the analytics provider. This ID is retrieved directly from the analytics provider.
              type: string
              format: text
              maxLength: 64
            type:
              $ref: '#/components/schemas/insightVisualType'
            filters:
              description: An array that tells which filters should be applied to this visual.
              $ref: '#/components/schemas/compositeAnalyticFilter'
      x-apiture-version: 1.0.0
    insightTypePatch:
      x-apiture-version: 4.0.0
      title: Insight Type Patch (v4.0.0)
      description: Perform a partial update of this insight type as per [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7396) format and processing rules. Only fields in the request body are updated on the resource; fields which are omitted are not updated.
      allOf:
        - $ref: '#/components/schemas/insightTypeFields'
    insightTypeAllows:
      title: Insight Type Allows (v1.0.0)
      description: Flags which indicate the permissions the current authorized user has on this insight type.
      type: object
      properties:
        createAudience:
          description: If `true`, the currently authenticated user is authorized to create customer audiences.
          type: boolean
      x-apiture-version: 1.0.0
    insightCategoryFields:
      x-apiture-version: 1.2.0
      title: Insight Category Fields (v1.2.0)
      description: Common fields of the insight category resource used to build other model schemas.
      type: object
      x-apiture-fragment: true
      properties:
        label:
          description: The label of the insight category.
          type: string
          format: text
          maxLength: 512
        description:
          description: The description of the insight category.
          type: string
          format: text
          minLength: 3
          maxLength: 500
        showNavigationItem:
          description: Indicates that the client should display a navigation item for this insight category.
          type: boolean
          default: true
    insightCategoryPatch:
      x-apiture-version: 1.2.0
      title: Insight Category Patch (v1.2.0)
      description: Perform a partial update of this insight category as per [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7396) format and processing rules. Only fields in the request body are updated on the resource; fields which are omitted are not updated.
      allOf:
        - $ref: '#/components/schemas/insightCategoryFields'
    insightCategory:
      x-apiture-version: 2.1.0
      title: Insight Category (v2.1.0)
      description: The category of data that the insight type contains.
      type: object
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/insightCategoryFields'
        - type: object
          properties:
            id:
              description: The unique identifier for the insight category resource. This is an immutable opaque string.
              $ref: '#/components/schemas/readOnlyResourceId'
      example:
        id: 14ba12de-a1bd
        label: Accounts
        description: Accounts insights provide information on banking products such as which account types are growing and the interest rates on loans
        showNavigationItem: true
    insightCategoryItem:
      x-apiture-version: 1.2.0
      title: Insight Category Item (v1.2.0)
      description: Summary representation of an insight category resource in the insight categories collections. To fetch the full representation of the `insightCategory`, use the [`getInsightCategory`](#op-getInsightCategory) operation, passing this item's `id` field as the `insightCategoryId` path parameter.
      required:
        - id
        - label
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/insightCategoryFields'
        - type: object
          properties:
            id:
              description: The unique identifier for the insight category resource. This is an immutable opaque string.
              $ref: '#/components/schemas/readOnlyResourceId'
      example:
        id: 14ba12de-a1bd
        label: Accounts
        description: Accounts insights provide information on banking products such as which account types are growing and the interest rates on loans
        showNavigationItem: true
    insightCategories:
      x-apiture-version: 1.3.0
      title: Insight Category Collection (v1.3.0)
      description: Collection of insight categories. The items in the collection are ordered in the `items` array.
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - type: object
          required:
            - items
          properties:
            items:
              description: An array containing a page of insight categories.
              type: array
              maxItems: 1000
              items:
                $ref: '#/components/schemas/insightCategoryItem'
      example:
        items:
          - id: 14ba12de-a1bd
            label: Accounts
            description: Accounts insights provide information on banking products such as which account types are growing and the interest rates on loans.
            showNavigationItem: true
          - id: 1ac441bb-b4ae
            label: Customers
            description: Customer insights let you know which customers are your highest earners, who is paying fees and more
            showNavigationItem: false
    insightTypeReference:
      title: Insight Type Reference (v1.0.0)
      description: A reference to an insight type.
      type: object
      properties:
        id:
          description: The unique identifier for the insight type resource. This is an immutable opaque string.
          $ref: '#/components/schemas/readOnlyResourceId'
        label:
          description: The human-readable label for the insight type.
          type: string
          minLength: 4
          maxLength: 128
          format: text
      x-apiture-version: 1.0.0
    resourceId:
      x-apiture-version: 1.0.1
      title: Resource Identifier (v1.0.1)
      description: The unique, opaque system identifier for a resource. This case-sensitive ID is also used as path parameters in URLs or in other properties or parameters that reference a resource by ID rather than URL.
      type: string
      pattern: ^[-_:.~$a-zA-Z0-9]{6,48}$
      minLength: 6
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/resourceId
    problemResponse:
      title: Problem Response (v0.4.1)
      x-apiture-version: 0.4.1
      description: API problem or error response, as per [RFC 9457 application/problem+json](https://tools.ietf.org/html/rfc9457).
      type: object
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/apiProblem'
      example:
        id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
        type: https://static.api.apiture.com/errors/noSuchAccount/v1.0.0
        title: Account Not Found
        status: 422
        occurredAt: '2022-04-25T12:42:21.375Z'
        detail: No account exists for the given account reference
        instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/problemResponse
    readOnlyResourceId:
      x-apiture-version: 1.0.1
      title: Read-only Resource Identifier (v1.0.1)
      description: The unique, opaque system-assigned identifier for a resource. This case-sensitive ID is also used in URLs as path parameters or in other properties or parameters that reference a resource by ID rather than URL. Resource IDs are immutable.
      readOnly: true
      allOf:
        - $ref: '#/components/schemas/resourceId'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/readOnlyResourceId
    dataTopicReference:
      title: Data Topic Reference (v1.0.0)
      description: A reference to the data topic resource.
      type: object
      required:
        - id
      allOf:
        - $ref: '#/components/schemas/dataTopicFields'
        - type: object
          properties:
            id:
              description: The ID of the data topic.
              $ref: '#/components/schemas/readOnlyResourceId'
      example:
        id: 1cd2f01c-a9d9
        label: Feature Usage
        description: Learn about how customers use banking features.
      x-resolved-from: ../../adminDataTopics/openapi.yaml#/components/schemas/dataTopicReference
      x-apiture-version: 1.0.0
    tagsArray:
      title: Tags Array (v1.0.0)
      description: An array of tags attached to a resource.
      type: array
      maxItems: 64
      items:
        $ref: '#/components/schemas/tag'
      example:
        - retail
        - customers
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/tagsArray
      x-apiture-version: 1.0.0
    abstractBody:
      title: Abstract Body (v0.2.0)
      x-apiture-version: 0.2.0
      description: An abstract schema used to define other request and response body model schemas.
      x-apiture-fragment: true
      type: object
      properties: {}
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/abstractBody
    readOnlyTimestamp:
      title: Read-Only Timestamp (v1.0.0)
      description: 'A readonly or derived timestamp (an instant in time) formatted in [RFC 3339](https://tools.ietf.org/html/rfc3339) `date-time` UTC format: `YYYY-MM-DDThh:mm:ss.sssZ`.'
      type: string
      minLength: 20
      maxLength: 30
      format: date-time
      readOnly: true
      example: '2021-10-30T19:06:04.250Z'
      x-apiture-since: 0.4.0
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/readOnlyTimestamp
      x-apiture-version: 1.0.0
    compositeAnalyticFilter:
      x-apiture-version: 2.1.0
      title: Composite Analytic Filter (v2.1.0)
      description: |-
        A composite of analytic filter that are combined with a logical operator (`and`, `or`, `not`). For example, if `primitiveFilters` contains 3 filters `p1`, `p2` and `p2` and `compositeFilters` contains 2 filters `c1`, `c2` and `operator` is `and`, the filter represents the expression `( p1 and p2 and p3 and c1 and c2 )`. The example is equivalent to
        ``` ( { customerType equals "retail" }
          or
          { customerAge between ["35", "49"] }
          or
          (
            { customerRegion in [ "NC", "SC", "GA", "FL" ]}
            and
            { balance greaterThan "250000.00" }
          )
        ) ```

        Note: there must be at least one item in either the `primitiveFilters` array or the `compositeFilters` array.
      type: object
      properties:
        operator:
          description: The logical operator (and, or, not) used to combine the contained filters.
          $ref: '#/components/schemas/compositeFilterOperator'
        primitiveFilters:
          description: An array of 1 or more primitive filters to be combined via the `operator` with each other and the `compositeFilters`.
          type: array
          minItems: 1
          maxItems: 100
          items:
            $ref: '#/components/schemas/primitiveAnalyticFilter'
        compositeFilters:
          description: An array of 0 or more composite filters to be combined via the `operator` with each other and the `primitiveFilters`.
          type: array
          maxItems: 100
          items:
            $ref: '#/components/schemas/compositeAnalyticFilter'
        ordinal:
          description: The ordinal value of the composite filter.
          $ref: '#/components/schemas/analyticFilterOrdinal'
      example:
        operator: or
        primitiveFilters:
          - filterType:
              id: 215eaed841368ce154d5
              name: customerType
            operator: equals
            values:
              - retail
            ordinal: 0
            includeMissingValues: false
          - filterType:
              id: 6b3927745edec398ad74
              name: customerAge
            operator: between
            values:
              - '35'
              - '49'
            ordinal: 1
            includeMissingValues: false
        compositeFilters:
          - operator: and
            ordinal: 2
            primitiveFilters:
              - filterType:
                  name: customerRegion
                  id: 01888d58e2424bf1c676
                operator: in
                values:
                  - NC
                  - SC
                  - GA
                  - FL
                ordinal: 0
                includeMissingValues: false
              - filterType:
                  name: accountBalance
                  id: 023cd8af6a9d46eec506
                operator: greaterThan
                values:
                  - '250000.00'
                ordinal: 1
                includeMissingValues: false
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/compositeAnalyticFilter
    apiProblem:
      x-apiture-version: 1.2.1
      title: API Problem (v1.2.1)
      description: API problem or error, as per [RFC 7807 application/problem+json](https://tools.ietf.org/html/rfc7807).
      type: object
      properties:
        type:
          type: string
          format: uri-reference
          description: |
            A [URI reference (RFC3986)](https://tools.ietf.org/html/rfc3986) that identifies the problem type. If present, this is the URL of human-readable HTML documentation for the problem type. When this member is not present, its value is assumed to be `"about:blank"`.
          example: https://static.api.apiture.com/errors/forbidden/v1.0.0
          maxLength: 2048
        title:
          type: string
          description: |
            A short, human-readable summary of the problem type. The title is usually the same for all problem with the same `type`.
          maxLength: 120
          format: text
          example: User is not authorized to perform the requested action or access the requested resource.
        status:
          type: integer
          format: int32
          description: |
            The [HTTP status code](https://datatracker.ietf.org/doc/html/rfc7231#section-6) for this occurrence of the problem.
          minimum: 100
          maximum: 599
          example: 403
        detail:
          type: string
          description: |
            A human-readable explanation specific to this occurrence of the problem.
          maxLength: 256
          format: text
          example: User is not authorized to perform this operation.
        instance:
          type: string
          format: uri-reference
          description: |
            A URI reference that identifies the specific occurrence of the problem. This is the URI of an API resource that the problem is related to, with a unique error correlation ID URI fragment
          example: https://prduction.api.apiture.com/banking/accounts/ad80fc3e722q5402a#189c13ff-c54c-45f7-b8e0-c88984ba724d
          maxLength: 2048
        id:
          description: The unique identifier for this problem. This is an immutable opaque string.
          $ref: '#/components/schemas/readOnlyResourceId'
        occurredAt:
          description: The timestamp when the problem occurred, in [RFC 3339](https://tools.ietf.org/html/rfc3339) date-time `YYYY-MM-DDThh:mm:ss.sssZ` format, UTC.
          $ref: '#/components/schemas/readOnlyTimestamp'
        problems:
          description: Optional root-causes if there are multiple problems in the request or API call processing.
          type: array
          maxItems: 128
          items:
            $ref: '#/components/schemas/apiProblem'
        attributes:
          type: object
          description: Additional optional attributes related to the problem. This data conforms to the schema associated with the error type.
      example:
        id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
        type: https://static.api.apiture.com/errors/accountNotFound/v1.0.0
        title: Account Not Found
        status: 422
        occurredAt: '2022-04-25T12:42:21.375Z'
        detail: No account exists at the given account_url
        instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/apiProblem
    entityTag:
      title: Entity Tag (v1.0.0)
      description: An strong or weak [HTTP Entity Tag (ETag)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag). Strong ETags take the form `"{printable-non-control-ASCII-characters}"` but for backwards compatibility the surrounding double quotes are optional. Weak ETags take the form `W/"{printable-non-control-ASCII-characters}"`.
      type: string
      minLength: 3
      maxLength: 512
      pattern: ^(([\x21\x23-\x7e]{1,512})|(W\/\"[\x21\x23-\x7e]{1,509}\"))$
      example: W/"325cf1cc-e370-4baf-8faf-c6db23f195a2"
      x-apiture-version: 1.0.0
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/entityTag
    dataTopicFields:
      title: Data Topic Fields (v1.0.0)
      description: Common fields of the data topic resource used to build other model schemas.
      type: object
      x-apiture-fragment: true
      properties:
        label:
          description: The label of the data topic.
          type: string
          format: text
          minLength: 3
          maxLength: 100
        description:
          description: The description of the data topic.
          type: string
          format: text
          minLength: 3
          maxLength: 500
      x-resolved-from: ../../adminDataTopics/openapi.yaml#/components/schemas/dataTopicFields
      x-apiture-version: 1.0.0
    tag:
      title: Tag (v1.0.0)
      description: A string used as a resource tag.
      type: string
      format: text
      minLength: 1
      maxLength: 36
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/tag
      x-apiture-version: 1.0.0
    compositeFilterOperator:
      title: Composite Filter Operator (v1.0.0)
      description: |+
        An operator for combining filters in a composite filter.

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

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

        <tr>
            <td><strong><code>and</code></strong></td><td>And: <p>A filter is true if all the nested filters evaluate to true.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>or</code></strong></td><td>Or: <p>A filter is true if any one or more of the nested filters evaluate to true.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>not</code></strong></td><td>Not: <p>A filter is true if none of the nested filters evaluate to true.</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: compositeFilterOperator
      enum:
        - and
        - or
        - not
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/compositeFilterOperator
      x-apiture-version: 1.0.0
    primitiveAnalyticFilter:
      x-apiture-version: 1.2.0
      title: Primitive Analytic Filter (v1.2.0)
      description: A primitive analytic filter that compares constant values to a data measurement within an audience data measure and returns a boolean value.
      type: object
      required:
        - filterType
        - operator
        - values
      properties:
        filterType:
          description: The name and `id` of the filter type that this filter is an instance of.
          $ref: '#/components/schemas/analyticFilterTypeReference'
        operator:
          description: The name of the filter operator to apply to the measure associated with the filter type and the optional filter `values`. This is one of the `operators` in the corresponding filter type.
          $ref: '#/components/schemas/analyticFilterOperatorType'
        values:
          description: The constant values to compare the measure to. The number of values in this array must be within the `minimumValues` and `maximumValues` constraints in the named filter type. Thus array is required but may be an empty array `[]` if the corresponding analytic filter's `minimumValues` is `0`.
          type: array
          maxItems: 1000
          items:
            $ref: '#/components/schemas/analyticFilterValue'
        ordinal:
          description: The ordinal value of the composite filter.
          $ref: '#/components/schemas/analyticFilterOrdinal'
        includeMissingValues:
          description: If `true`, unconditionally include records with missing values for the selected `filterType` as part of the filtered result.
          type: boolean
      example:
        filterType:
          id: 6b3927745edec398ad74
          name: customerAge
        operator: between
        values:
          - '35'
          - '49'
        ordinal: 0
        includeMissingValues: false
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/primitiveAnalyticFilter
    analyticFilterOrdinal:
      title: Analytic Filter Ordinal (v1.0.0)
      description: An integer that represents this filter's importance relative to other filters, to allow the client to order filters by importance. This value may pertain to a primitive or composite filter. Filters with lower ordinal values are considered more important compared to those with higher values.
      type: integer
      format: int16
      minimum: 0
      maximum: 200
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/analyticFilterOrdinal
      x-apiture-version: 1.0.0
    requiredIdentityChallenge:
      x-apiture-version: 1.2.3
      title: Required Challenge (v1.2.3)
      description: A request from the service for the user to verify their identity. This contains a challenge ID, the corresponding operation ID, and a list of challenge factors for identity verification. The user must complete one of these challenge factors to satisfy the challenge. This schema defines the attributes in the 401 [Unauthorized problem response](#schema-apiProblem) when the 401 problem type name is `challengeRequired`. See the "Challenge API" for details.
      type: object
      required:
        - operationId
        - challengeId
        - factors
      properties:
        operationId:
          $ref: '#/components/schemas/challengeOperationId'
        challengeId:
          description: The unique ID of this challenge instance. This is an opaque string. This is passed when starting a challenge factor or when validating the identity challenge responses.
          $ref: '#/components/schemas/readOnlyResourceId'
        factors:
          description: 'A list of challenge factors. The user must complete one of these challenge factors. The `labels` in each factor identify one or more channels the user may use, such as a list of email addresses the system may use to send a one-time passcode to the user. ***Note**: The same channel may be used by multiple factors in the array of factors. For example, the user''s primary mobile phone number may be used for both an `sms` factor and a `voice` factor.'
          type: array
          minItems: 1
          maxItems: 8
          items:
            $ref: '#/components/schemas/challengeFactor'
      example:
        operationId: createTransfer
        challengeId: 0504076c566a3cf7009c
        factors:
          - type: sms
            labels:
              - '9876'
            id: 85c0ee5753fcd0b0953f
          - type: voice
            labels:
              - '9876'
            id: d089e10a80a8627df37b
          - type: voice
            labels:
              - '6754'
            id: 10506ecf9d1c2ee00403
          - type: email
            labels:
              - an****nk@example.com
              - an****98@example.com
            id: e917d671cb2f030b56f1
          - type: authenticatorToken
            labels:
              - Acme fob
            id: fe6c452d7da0bbb4e407
          - type: securityQuestions
            securityQuestions:
              questions:
                - id: q1
                  prompt: What is your mother's maiden name?
                - id: q4
                  prompt: What is your high school's name?
                - id: q9
                  prompt: What is the name of your first pet?
            id: df33c6f88a37d6b3f0a6
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/requiredIdentityChallenge
    analyticFilterTypeReference:
      x-apiture-version: 1.0.2
      title: Analytic Filter Type Reference (v1.0.2)
      description: An object that reference and Analytic Filter Type by its `id` and `name`.
      type: object
      required:
        - id
      properties:
        id:
          description: The unique identifier for this analytic filter type resource. This is an immutable opaque string.
          $ref: '#/components/schemas/resourceId'
        name:
          description: The name of the filter type. This is for informational purposes only.
          $ref: '#/components/schemas/analyticFilterTypeName'
      example:
        id: 3752cfec9b06fae15c9e
        name: customerAge
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/analyticFilterTypeReference
    analyticFilterOperatorType:
      title: Analytic Filter Operator Type (v1.0.0)
      description: |+
        Indicates the type of the comparison operator used by an analytic filter.

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

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

        <tr>
            <td><strong><code>equals</code></strong></td><td>Equals: <p>The measure is equal to a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>notEquals</code></strong></td><td>Not Equals: <p>The measure not equal to a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>lessThan</code></strong></td><td>Less Than: <p>The measurement less than a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>lessThanOrEqualTo</code></strong></td><td>Less Than or Equal To: <p>The measure less than or equal a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>greaterThan</code></strong></td><td>Greater Than: <p>The measure is greater than a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>greaterThanOrEqualTo</code></strong></td><td>Greater Than or Equal To: <p>The measure greater than or equal to a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>between</code></strong></td><td>Between: <p>The measure is Between a minimum and maximum value. A filter using this operator requires exactly 2 values.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>notBetween</code></strong></td><td>Not Between: <p>Measure not between a minimum and maximum value. A filter using this operator requires exactly 2 values.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>before</code></strong></td><td>Before: <p>Date measure before or on a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>after</code></strong></td><td>After: <p>Date measure on or after a value. A filter using this operator requires exactly 1 value.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>in</code></strong></td><td>In: <p>The measure is in a set of values. A filter using this operator requires at least 2 values.</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>notIn</code></strong></td><td>Not In: <p>The measure is not in a set of values. A filter using this operator requires exactly 2 values.</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: analyticFilterOperatorType
      enum:
        - equals
        - notEquals
        - lessThan
        - lessThanOrEqualTo
        - greaterThan
        - greaterThanOrEqualTo
        - before
        - after
        - between
        - notBetween
        - in
        - notIn
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/analyticFilterOperatorType
      x-apiture-version: 1.0.0
    analyticFilterValue:
      title: Analytic Filter Value (v1.0.0)
      description: A constant value used in a filter, such as `25` in a filter `{ customerAge greater than 25 }`. This value is compared to the measure defined by the filter.
      type: string
      maxLength: 200
      format: text
      example: 25-to-49
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/analyticFilterValue
      x-apiture-version: 1.0.0
    challengeOperationId:
      x-apiture-version: 1.0.1
      title: Challenge Operation ID (v1.0.1)
      description: The ID of an operation/action for which the user must verify their identity via an identity challenge. This is passed when starting a challenge factor or when validating the identity challenge responses.
      type: string
      pattern: ^[-a-zA-Z0-9$_]{6,48}$
      minLength: 6
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeOperationId
    challengeFactor:
      x-apiture-version: 1.2.1
      title: Challenge Factor (v1.2.1)
      description: A challenge factor. See [`requiredIdentityChallenge`](#schema-requiredIdentityChallenge) for multiple examples.
      type: object
      required:
        - type
      properties:
        id:
          description: |-
            The ID of an a challenge factor. This ID is unique within the challenge factors associated with a challenge. The client should pass this `id` value as the `factorId` when starting or verifying a challenge factor.

            *Note*: The `id` will become `required` in a future update to this schema.
          $ref: '#/components/schemas/challengeFactorId'
        type:
          $ref: '#/components/schemas/challengeFactorType'
        labels:
          description: A list of text label which identifies the channel(s) through which the user completes the challenge. For an `sms` or `voice` challenge, the only label item is the last four digits of the corresponding phone number. For an `email` challenge, each label is the masked email address.
          type: array
          minItems: 1
          maxItems: 4
          items:
            type: string
            maxLength: 300
            format: text
        securityQuestions:
          $ref: '#/components/schemas/challengeSecurityQuestions'
      example:
        type: sms
        labels:
          - '9876'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactor
    analyticFilterTypeName:
      x-apiture-version: 1.0.2
      title: Analytic Filter Type Name (v1.0.2)
      description: The name of an analytic filter type.
      type: string
      format: text
      minLength: 2
      maxLength: 100
      x-resolved-from: ../../adminAnalyticFilters/openapi.yaml#/components/schemas/analyticFilterTypeName
    challengeFactorId:
      title: Challenge Factor ID (v1.0.0)
      description: The ID of an a challenge factor. This ID is unique within the factors offered with a challenge.
      type: string
      pattern: ^[-a-zA-Z0-9$_]{3,48}$
      minLength: 3
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactorId
      x-apiture-version: 1.0.0
    challengeFactorType:
      title: Challenge Factor Type (v1.0.0)
      description: |+
        The name of challenge factor.

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

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

        <tr>
            <td><strong><code>sms</code></strong></td><td>SMS: <p>One-time passcode sent to the primary mobile phone number</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>email</code></strong></td><td>Email: <p>One-time passcode sent to the primary email address</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>voice</code></strong></td><td>Voice: <p>One-time passcode communicated via automated voice phone call</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>authenticatorToken</code></strong></td><td>authenticator Token: <p>One-time passcode issued by a pre-registered hardware device, such as a token key fob, or an authenticator app</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>securityQuestions</code></strong></td><td>Security Questions: <p>Prompt with the user&#39;s security questions registered with their security profile</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: challengeFactorType
      enum:
        - sms
        - email
        - voice
        - securityQuestions
        - authenticatorToken
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactorType
      x-apiture-version: 1.0.0
    challengeSecurityQuestions:
      x-apiture-version: 1.0.1
      title: Challenge Security Questions (v1.0.1)
      description: Describes a `securityQuestions` challenge. This is omitted if the challenge `type` is not `securityQuestions`.
      type: object
      required:
        - questions
      properties:
        questions:
          description: The array of security questions.
          type: array
          minItems: 1
          maxItems: 8
          items:
            $ref: '#/components/schemas/challengeSecurityQuestion'
      example:
        questions:
          - id: q1
            prompt: What is your mother's maiden name?
          - id: q4
            prompt: What is your high school's name?
          - id: q9
            prompt: What is the name of your first pet?
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeSecurityQuestions
    challengeSecurityQuestion:
      x-apiture-version: 1.0.1
      title: Challenge Security Question (v1.0.1)
      description: A single security question within the `questions` array of the [`challengeSecurityQuestions`](#schema-challengeSecurityQuestions)
      type: object
      required:
        - id
        - prompt
      properties:
        id:
          description: The unique ID of security question prompt. This should be included in the [`challengeVerification`](#schema-challengeVerification) response as the `promptId`.
          $ref: '#/components/schemas/challengePromptId'
        prompt:
          description: The text prompt of this security question.
          type: string
          format: text
          maxLength: 80
      example:
        id: 74699fa628911e762ea5
        prompt: What is your mother's maiden name?
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeSecurityQuestion
    challengePromptId:
      title: Challenge Prompt ID (v1.0.0)
      description: The unique ID of a prompt (such as a security question) in a challenge factor.
      type: string
      pattern: ^[-_:.~$a-zA-Z0-9]+$
      minLength: 1
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengePromptId
      x-apiture-version: 1.0.0
  parameters:
    insightTypeIdPathParam:
      name: insightTypeId
      description: The unique identifier of this insight type. This is an opaque string.
      in: path
      schema:
        $ref: '#/components/schemas/resourceId'
      required: true
    insightCategoryIdPathParam:
      name: insightCategoryId
      description: The unique identifier of this insight category. This is an opaque string.
      in: path
      schema:
        $ref: '#/components/schemas/resourceId'
      required: true
    ifNoneMatchHeaderParam:
      name: If-None-Match
      description: The entity tag that was returned in the `ETag` response header of a previous call. If the resource's current entity tag value matches this header value, the `GET` will return 304 (Not Modified) and no response body, else the current resource representation and updated `ETag` is returned.
      in: header
      schema:
        $ref: '#/components/schemas/entityTag'
      x-resolved-from: ../../common/openapi.yaml#/components/parameters/ifNoneMatchHeaderParam
    ifMatchHeaderParam:
      name: If-Match
      description: The entity tag that was returned in the `ETag` response header of a previous call. If passed, this must match the current entity tag of the resource, else the operation fails with a 412 Precondition Failed error.
      in: header
      schema:
        $ref: '#/components/schemas/entityTag'
      x-resolved-from: ../../common/openapi.yaml#/components/parameters/ifMatchHeaderParam
  headers:
    ETag:
      description: The value of this resource's _entity tag_, to be passed with `If-Match` and `If-None-Match` request headers in other conditional API calls for this resource.
      schema:
        $ref: '#/components/schemas/entityTag'
      x-resolved-from: ../../common/openapi.yaml#/components/headers/ETag
  x-apiture-errors:
    badRequest:
      description: The request body and/or parameters was not well-formed.
      remediation: Correct any syntax or schema errors in the request body or parameters.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/badRequest
    unauthorized:
      description: The request lacks valid authentication credentials for the target resource or operation.
      remediation: Authenticate the user and pass the required authorization with the request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/unauthorized
    forbidden:
      description: The user or agent is not allowed to perform this operation; authentication credentials were provided in the request, but the server considers them insufficient to grant access.
      remediation: Check the user's permissions and entitlements before attempting the operation.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/forbidden
    customerDisabled:
      description: The customer is disabled.
      remediation: Have the customer contact the financial institution for support.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/customerDisabled
    antiMalwareRequired:
      description: The financial institution requires the customer to have anti-malware software installed.
      remediation: Direct the user to the software requirements guide to install the correct anti-malware software.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/antiMalwareRequired
    modificationForbidden:
      description: The customer is properly authenticated but not authorized to create, modify, or delete resources.
      remediation: Avoid modification operation for customers with read-only authorization.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/modificationForbidden
    challengeRequired:
      description: The operation requires the customer to complete an identity challenge.
      remediation: Complete the challenge as per the problem response, and add an additional `Challenge` header to the call.
      attributes:
        $ref: '#/components/schemas/requiredIdentityChallenge'
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/challengeRequired
    challengeBlocked:
      description: The user has failed challenges too many times and is blocked from attempting more or performing operations which require additional authentication.
      remediation: Have the user end their login session and login again.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/challengeBlocked
    noIdentityChallengeFactors:
      description: This operation requires an identity challenge, but the user does not have the necessary registered authentication factors.
      remediation: Have the user register one or more challenge security code delivery factors.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/noIdentityChallengeFactors
    invalidIdentityChallengeHeader:
      description: The additional on-time `Challenge` header in this request is expired, already used, or otherwise invalid.
      remediation: Supply a valid, unexpired, unclaimed `Challenge` header in the request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/invalidIdentityChallengeHeader
    preconditionFailed:
      description: One or more conditions given in the request header fields evaluated to false when tested on the server.
      remediation: Update resources and use it's most recent ETag or modification time stamp.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/preconditionFailed
    unprocessableEntity:
      description: The syntax of the request entity is correct but was unable to process the contained instructions.
      remediation: Provide a semantically correct request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/unprocessableEntity
    tooManyRequests:
      description: The client has sent too many requests in a given amount of time, exceeding rate limiting.
      remediation: Slow down the rate of API calls.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/tooManyRequests
x-apiture-errors:
  duplicateInsightTypeLabel:
    description: The given `label` is already in use by another insight type.
    remediation: Resubmit the request with a unique `label`.
  duplicateInsightCategoryLabel:
    description: The given `label` is already in use by another insight category.
    remediation: Resubmit the request with a unique `label`.
  invalidInsightCategory:
    description: The given insight category is invalid or does not exist.
    remediation: Pass the `id` of a valid insight category.
  invalidInsightTopic:
    description: The given insight topic is invalid or does not exist.
    remediation: Pass the `id` of a valid insight topic.
  incompleteDomoAnalyticsProvider:
    description: When creating or updating an insight type, `referenceId`, `tableName`, and either a `pageId` or `cardId` must be provided for the domo analytics provider.
    remediation: Resubmit the request such that `referenceId`, `tableName`, and `pageId` or `cardId` are populated on the insight type.
x-apiture-traits:
  - resource:
      name: insightType
      immutable: true
      readOnly: true
      applied: true
  - singleton:
      name: recommended insight types
      immutable: true
      readOnly: true
      cursorPaged: true
      applied: true
  - security:
      baseScope: adminData
      applied: true
x-resolved-from: ../../adminInsights/status-codes-openapi.yaml
x-resolved-at: '2024-12-09T22:07:37.854Z'
x-apiture-annotated-at: '2024-12-09T22:07:38.105Z'
