openapi: 3.0.1
info:
  title: Card creation & servicing
  version: '1.0'
servers:
  - url: https://api.solaris-sandbox.de
    description: Sandbox
  - url: https://api.solarisbank.de
    description: Production
paths:
  /v1/persons/{person_id}/accounts/{account_id}/cards:
    post:
      tags:
        - Cards servicing
      summary: Create a card
      description: >
        Creates a card in the name of the person specified in the request URL
        and attaches it to the given account.


        Please note the following:

        * The cardholder name (i.e., the value of `line_1`) is **not**
        automatically generated. You must enter a value as close to the
        cardholder's actual name as possible.

        * The value of `line_1` and `line_2` may not exceed 21 characters.

        * You must enter a `/` between the cardholder's first and last name(s).
        Example: `ADAM AARON/SCHMIDT`

        * You may only use the following characters in the value of `line_1` and
        `line_2`: `ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 -/.`. Please convert
        accented characters to their non-accented equivalents (e.g., converting
        `Ö` to `OE`, `É` to `E`).

        * Card activation requests are blocked for the first 24 hours after card
        creation. In order to test on **Sandbox** with immediate activation,
        please include the string `WITHSTATICTOKEN` within the `line_1`
        property. See the request example on the right for information on how to
        use it.


        You can set an encrypted PIN for the card by completing the below
        steps: 

        1. In your backend, retrieve the encryption key in JWK format with the
        `GET Retrieve latest public key method` and make it available to the
        customer's device.

        2. On the customer's device, collect the customer's desired PIN through
        a text input in your frontend and store it as a string containing a
        JSON-formatted object `{"pin": "<NEW_PIN>"}`.

        3. On the customer's device, parse the received encryption key JWK from
        the first step (you may want to use a suitable library of your choice,
        e.g., [JOSESwift for iOS](https://github.com/airsidemobile/JOSESwift) or
        [Nimbus JOSE for
        Android](https://connect2id.com/products/nimbus-jose-jwt)).

        4. On the customer's device, encrypt the string containing the new PIN
        from step 2 into a JWE using the previously received encryption key and
        the following properties:
            1. Algorithm: `RSA-OAEP-256`.
            2. Encryption method: `A256CBC-HS512`.
            3. Key ID: `kid` property from the encryption key JWK.
        5. On the customer's device, generate the compact serialization of the
        JWE created in the previous step—this will be used as the
        `encrypted_pin` parameter.

        6. The `kid` property from `GET /v1/cards/pin_keys/latest` is the `kid`
        in the request.

        7. Call this endpoint from your backend.
      parameters:
        - $ref: '#/components/parameters/PersonId'
        - $ref: '#/components/parameters/AccountId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CardCreateRequest'
      responses:
        '201':
          description: Successful creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardCreateResponse'
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: c3a1ff40c31e428d8deaf77c71fe606eex
                    status: 400
                    code: type_error
                    title: Request parameter error
                    detail: Incorrect request parameter was provided
                    source:
                      field: card_account_id
                      message: Format is incorrect
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 403
                    code: unauthorized_action
                    title: Unauthorized Action
                    detail: Unauthorized action is not allowed.
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 404
                    code: model_not_found
                    title: Model Not Found
                    detail: >-
                      Could not find Solaris::Person for id
                      07662c38141d96dd215a9606b5a1b9b0cper.
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 500
                    code: generic_error
                    title: Generic Error
                    detail: There was an error.
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_card#create
  /v1/persons/{person_id}/cards:
    get:
      tags:
        - Cards servicing
      summary: List all cards for a person
      description: Returns all cards associated with the person provided in the request URL
      parameters:
        - name: person_id
          in: path
          required: true
          schema:
            type: string
        - name: filter[status]
          in: query
          description: Filter the results by the card status
          schema:
            type: string
        - name: page[number]
          in: query
          description: Page number to return
          schema:
            type: integer
            default: 1
        - name: page[size]
          in: query
          description: The number of results per page to return
          schema:
            type: integer
            default: 10
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Solaris_Decorators_Card'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_person_card#all
  /v1/businesses/{business_id}/cards:
    get:
      tags:
        - Cards servicing
      summary: List all cards for a business
      description: >-
        Returns all cards associated with the business specified in the request
        URL.
      parameters:
        - name: business_id
          in: path
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/PageNumber'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Solaris_Decorators_PublicCardWithCreationDateAndSiaAccountNumber
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_business_card#all
  /v1/accounts/{account_id}/cards:
    get:
      tags:
        - Cards servicing
      summary: List all cards for an account
      description: >-
        Returns all cards associated with the cardAccount specified in the
        request URL.
      parameters:
        - $ref: '#/components/parameters/AccountId'
        - $ref: '#/components/parameters/PageNumber'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Solaris_Decorators_PublicCardWithCreationDateAndSiaAccountNumber
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: c3a1ff40c31e428d8deaf77c71fe606eex
                    status: 400
                    code: type_error
                    title: Request parameter error
                    detail: Incorrect request parameter was provided
                    source:
                      field: card_account_id
                      message: Format is incorrect
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 403
                    code: unauthorized_action
                    title: Unauthorized Action
                    detail: Unauthorized action is not allowed.
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 404
                    code: model_not_found
                    title: Model Not Found
                    detail: >-
                      Could not find Solaris::Person for id
                      07662c38141d96dd215a9606b5a1b9b0cper.
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 500
                    code: generic_error
                    title: Generic Error
                    detail: There was an error.
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_account_card#all
  /v1/cards/{id}:
    get:
      tags:
        - Cards servicing
      summary: Show a card
      description: Returns information about the card specified in the request URL.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Solaris_Decorators_PublicCardWithCreationDateAndSiaAccountNumber
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_card#find
  /v1/cards:
    get:
      tags:
        - Cards servicing
      summary: List all cards
      description: Returns all cards associated with partner.
      parameters:
        - name: filter[business_id]
          in: query
          description: >-
            Filter the results by the ID of the business associated with the
            card.
          schema:
            type: string
        - name: filter[person_id]
          in: query
          description: Filter the results by the ID of the person associated with the card.
          schema:
            type: string
        - name: filter[person_uid]
          in: query
          description: Filter the results by the ID of the person associated with the card.
          deprecated: true
          schema:
            type: string
        - name: filter[account_id]
          in: query
          description: Filter on account id
          schema:
            type: string
        - name: filter[account_uid]
          in: query
          description: Filter on account id
          deprecated: true
          schema:
            type: string
        - name: filter[status]
          in: query
          description: Filter the results by the card status
          schema:
            type: string
        - name: filter[type]
          in: query
          description: Filter the results by the card type.
          schema:
            type: string
        - name: filter[masked_pan]
          in: query
          description: Filter the results by the card's masked PAN.
          schema:
            type: string
        - name: filter[line_1]
          in: query
          description: Filter the cards by the value of their address line 1.
          schema:
            type: string
        - name: filter[sia_account_number]
          in: query
          description: Filter the results by the SIA account number.
          schema:
            type: string
        - $ref: '#/components/parameters/PageNumber'
        - $ref: '#/components/parameters/PageSize'
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Solaris_Decorators_PublicCardWithCreationDateAndSiaAccountNumber
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_card#all_for_partner
  /v1/cards/{card_account_id}/activate:
    post:
      tags:
        - Cards servicing
      summary: Activate a card
      description: >-
        Activates the card with the ID specified in the request URL. Please note
        the following **preconditions**:<br> <ul>  <li>The **card** must have a
        status value of `ACTIVE` or `INACTIVE` (if activating a replacement
        card).</li> <li>The **account** to which the card is tied must have a
        blocking_status value of `NO_BLOCK`.</li> </ul> You can also include in
        the request the `pan_last_4_digit` and `expiry_date`. These are optional
        parameters you can collect from the cardholder upon receipt of their
        card in the mail, to ensure they are activating the right card. <br><br>
        You can then verify both parameters against the card details you have on
        file for the customer, before sending the activation request to Solaris.
        Solaris will then perform a validation of both parameters before
        accepting the request. <br><br><br> **Note**: Card activation requests
        are blocked for the first 24 hours after card creation. In order to test
        on **Sandbox** with immediate activation, please include the string
        WITHSTATICTOKEN within the `line_1` property when creating a card.
      parameters:
        - name: card_account_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivateCardRequest'
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Solaris_Decorators_CardLifeCycleResponse
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_public_card#activate
  /v1/cards/{card_account_id}/block:
    post:
      tags:
        - Cards servicing
      summary: Block a card
      description: >-
        Blocks the card with the ID specified in the request URL. Note that the
        card must have a status value of `ACTIVE` in order to be blocked.
      parameters:
        - name: card_account_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Solaris_Decorators_CardLifeCycleResponse'
                example:
                  status: BLOCKED
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_public_card#block
  /v1/cards/{card_account_id}/unblock:
    post:
      tags:
        - Cards servicing
      summary: Unblock a card
      description: >-
        Unblocks the card specified in the request URL. Please note that the
        card must have the status of `BLOCKED` in order for you to unblock it
        with this method. If the card has the status `BLOCKED_BY_SOLARIS`, then
        you cannot unblock it with this method.
      parameters:
        - name: card_account_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Solaris_Decorators_CardLifeCycleResponse'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_public_card#unblock
  /v1/cards/{card_account_id}/replace:
    post:
      tags:
        - Cards servicing
      summary: Replace a card
      description: >-
        Issues a replacement for the card specified in the request URL. Specify
        the appropriate `reason` in your request to trigger the right
        replacement process: <ul>  <li>**Reissue** a card expiring soon:
        `EXPIRES_SOON`</li>  <li>**Replace** a damaged card (physical card
        only): `DEFECTIVE_CARD`, `CARDHOLDER_REQUEST` (Deprecated) </li> 
        <li>Report a card as **lost or stolen** and request a replacement
        (physical cards only): `LOST`, `STOLEN`, `COUNTERFEIT_PLASTIC`,
        `PREVENTIVE_BLOCK`, `ONLINE_TRANSACTION_FRAUD`</li> </ul>  Please note
        the following: <br> For the **reissue** or **replace** flows: <ul> 
        <li>The new card will have the same card number, but it will have a new
        CVV and expiry date.</li> <li>Once you make this request, the card's
        status will change to `PROCESSING`, then `ACTIVE` or `BLOCKED` depending
        on the card's status prior to ordering. The value of the
        `new_card_ordered` property on the card resource will change to
        `true`.</li> <li>The customer can still use the old card until they
        activate the new one. Once they do so, the old one will no longer be
        authorized and the value of `new_card_ordered` will change to
        `false`.</li> </ul> For the **lost/stolen** flow: <ul>  <li>The new card
        will have a different card number.</li> <li>The old card will stop
        working immediately upon acceptance of the API request. This action
        cannot be undone.</li> </ul> Accepted card statuses: <ul>
        <li>**Reissue**: `ACTIVE`, `INACTIVE`</li> <li>**Replace** and
        **Lost/Stolen**: `ACTIVE`, `INACTIVE`, `BLOCKED`,
        `BLOCKED_BY_SOLARIS`</li> </ul> Please note that on **Sandbox** a given
        card can only be replaced once.
      parameters:
        - name: card_account_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplaceCardRequest'
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Solaris_Decorators_CardReplacementResponse
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_public_card#replace
  /v1/cards/{card_account_id}/lost_stolen_incidents:
    post:
      tags:
        - Cards servicing
      summary: (Deprecated) Report a card as lost or stolen
      deprecated: true
      description: >-
        **Note: This endpoint is deprecated.** Please use the [POST Replace a
        card](https://docs.solarisgroup.com/api-reference/digital-banking/cards/#tag/Cards-servicing/paths/~1v1~1cards~1{card_account_id}~1replace/post)
        endpoint instead. Read the endpoint summary to learn how to use the
        endpoint for the lost/stolen use case.<br><br> Reports the card
        specified in the request URL as lost or stolen. The card will be
        immediately blacklisted. Please note the following: <ul> <li>Please note
        that **virtual** cards can only be reported lost or stolen without
        requesting a replacement.</li> <li> The `status` of the card must only
        be one of the following values: `ACTIVE`, `INACTIVE`, `BLOCKED`, or
        `BLOCKED_BY_SOLARIS`.</li> <li>Only use this endpoint in the event that
        the card is lost or stolen or if the card details have been compromised.
        If a physical card is damaged, please use the `POST Replace a card`
        endpoint.</li> <li>You can order a replacement card in the same API call
        by setting the value of `order_replacement` to `true`.</li> <li>When a
        card has been reported as lost or stolen, it immediately stops working.
        This action cannot be undone.</li> <li>If the customer has added their
        card to Google Pay or Apple Pay, reports it lost or stolen, and requests
        a replacement at the same time, then the lost/stolen card will continue
        to work. If the cardholder believes that their card and phone were both
        compromised, then you should not order them a replacement card in the
        same API call. Instead, use the `POST Create a card` endpoint to order
        them a new one.</li> <li>For **sandbox testing,** you must set the value
        of `lost_at` to `2021-06-03T18:31:09+00:00`.</li></ul>
      parameters:
        - name: card_account_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LostStolenCardRequest'
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Solaris_Decorators_LostStolenResponse'
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_cards#lost_stolen_incidents
  /v1/cards/{card_account_id}/close:
    post:
      tags:
        - Cards servicing
      summary: Close a card
      description: >-
        Closes the card with the ID specified in the request URL.<br> **Note:
        this action cannot be undone.**<br> In order to be closed, the card must
        have one of the following statuses: <ul> <li>`ACTIVE`</li>
        <li>`BLOCKED`</li> <li>`COUNTERFEIT_CARD`</li> <li>`FRAUD`</li>
        <li>`INACTIVE`</li> <li>`LOST`</li> <li>`NEVER_RECEIVED`</li>
        <li>`STOLEN`</li> </ul>
      parameters:
        - name: card_account_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/Solaris_Decorators_CardLifeCycleResponse
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_public_card#close
  /v1/cards/{id}/virtual_card_requests:
    post:
      tags:
        - Cards servicing
      summary: Create a secure view for card details
      description: >
        Retrieves the card number, expiry date, and CVV for the card specified
        in the request URL. The response is encrypted; your customer must
        decrypt it using a bound device.


        Please note the following prerequisites:
          * Your customer's device must have a supported operating system (Android: 4.3 or higher; iOS: iPhone 5 or newer, not jailbroken or rooted).
          * The customer must have already verified their device using the device binding process. You will need to supply the `device_id` in this request.

        > **Warning**

        >

        > **Never store or log decrypted card details on a customer's device.
        This information may never leave the device.** You may only make clean
        PAN details available in the device's **temporary memory.**
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              example:
                device_id: ZtzhX7M96stcA2LzDpX1Lg8dev
                device_data: >-
                  Web;179ac83968ab42f79e960c1753a4078fdcon;jVl14emA+OcyALb9F+CMFg==;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
                signature: >-
                  556F4558783743346570744B674D3838454E3444334F627141394E696735726B3946593739356B413353337359767A34756F387977754D2F4658536134327A41394454716D3337616570764335346A477276744579376246514B546C79465A6A7A532F577545722B4946644A4A2F674953784E7A715451765A3077432B39486E6F4B7A36447050725537695657476A626B3057366549746363312F577654742F39594D4B726B7541506E49426B4A74426B737254687867562B3169636155582B432B426F41696A64544A314D773774624F70556F4C686257392F496936773235744472494E33564A6166446E6F634E523438335469595568382B70343946703473395971434872503270395959616B513155795673444635504B45596B75784A2F7A797933334779686732744D5473435238476B7959657648372F31733532472B6C73573048754F597A4C364E324954426B6C666D413D3D0D0A
                jwk:
                  kty: RSA
                  use: enc
                  alg: RS256
                  kid: cf8e03cd-0292-47e2-8e26-c167293b9187
                  'n': >-
                    ZtzhX7M96stcA2LzDpX1Lmr0Y7tH1JnHvK5BmRQsy5hm1vAneRgictJB7yfW9JcZSpHeDspVkXVXuL3ddO1tVWOs4pln65Iklz5EtYKgoKaVBkUFNP1wDgEDTPhX6dS46/Ua1Z39RPAl21s2gQkzAL8UjC67kwH+FJnzLqBEE57L0eJNOU2VnBVwVob8GM8B6/KTblhr5wUw/o1K2qFXhjpkopz+SV1mqd61I/9H8gvb/clKuwpI+c/jyV0O55Y7vQDBdL37MReuSgHJvYtOnjLSHTNrB+lhNt6kg/MEtfs/e6iX+MV9d4Is5AvkDSXcMg+Im4aiKK4UeKcrSOtTcw==
                  e: AQAB
                jwe:
                  alg: RSA1_5
                  enc: A256GCM
              required:
                - device_id
                - signature
                - jwk
                - jwe
              type: object
              properties:
                device_id:
                  description: ID of the customer's bound device.
                  type: string
                device_data:
                  type: string
                  description: >-
                    Encoded device fingerprint generated using the [Seon
                    SDK](https://seon.io). See the [device monitoring
                    guide](https://docs.solarisgroup.com/guides/kyc/device-monitoring)
                    for more information about generating this value.
                signature:
                  description: >
                    The device signature obtained during the device binding
                    process. The signature must be generated using the device's
                    **unrestricted key.**


                    Follow these steps to generate the key:

                    1. Generate the RSA key pair. This results in an `rsa_key`.

                    2. Create a JWK JSON representation of the **public** part
                    of the `rsa_key`. This results in a `jwk_key`.

                    3. Generate a single string from the `jwk_key`
                    representation of the **public** part of the `rsa_key` using
                    the following steps:
                        1. Sort every key/value pair alphabetically by the **key.**
                        2. Combine the key and value of every key/value pair using `:` as the delimiter, e.g., `alg:RS256`.
                        3. Join every key/value pair to a single string using `;` as the delimiter, e.g., `alg:RS256;...;e:AQAB`.
                        4. This results in a `key_string`, whose format resembles this: `alg:RS256;e:AQAB;kid:0016E6D1...35E6;kty:RSA;n:qp7...Q;use:enc`.
                    4. Sign the `key_string` using the device's **unrestricted**
                    key. This results in the `signed_key`. Read more about how
                    to create an unrestricted key for use in device binding
                    [here](https://docs.solarisgroup.com/guides/authentication/device-binding/#device-binding).

                    5. **Hex-encode** the `signed_key` to get the `signature`.
                  type: string
                jwk:
                  description: >-
                    [JSON Web Key
                    (JWK)](https://datatracker.ietf.org/doc/html/rfc7517) data
                    that will be used to encrypt the card details. [Click here
                    to learn more about this
                    algorithm.](https://datatracker.ietf.org/doc/html/rfc7518)
                  type: object
                  properties:
                    kty:
                      description: The key type. The only possible value is `RSA`.
                      enum:
                        - RSA
                      type: string
                    use:
                      description: >-
                        (Optional) The public key use. The only possible value
                        is `enc`.
                      enum:
                        - enc
                      type: string
                    alg:
                      description: >-
                        (Optional) The algorithm to use for encryption. The only
                        possible value is `RS256`.
                      enum:
                        - RS256
                      type: string
                    kid:
                      description: >-
                        (Optional) The key ID. Use any unique identifier, such
                        as a UUID.
                      type: string
                    'n':
                      description: Modulus (for RSA keys)
                      type: string
                    e:
                      description: Exponent (for RSA keys)
                      type: string
                  required:
                    - kty
                    - 'n'
                    - e
                jwe:
                  description: >-
                    [JSON Web Encryption](https://tools.ietf.org/html/rfc7516)
                    attributes.
                  type: object
                  properties:
                    alg:
                      description: >-
                        Algorithm used for CEK encryption. Possible values: <ul>
                        <li>`RSA_OAEP_256` (recommended): Uses SHA-256 for both
                        the `main digest` and the `mask generation function`
                        (mgf1).</li> <li>`RSA_OAEP_256_ANDROID`:
                        Android-specific version of the above, which uses
                        SHA-256 for the `main digest` and SHA-1 for the `mask
                        generation function` (mgf1).</li> </ul>
                      enum:
                        - RSA1_5
                        - RSA_OAEP_256
                        - RSA_OAEP_256_ANDROID
                      type: string
                    enc:
                      description: Encryption algorithm.
                      enum:
                        - A256GCM
                        - A256CBC_HS512
                      type: string
                  required:
                    - alg
                    - enc
        description: The content of the request
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Solaris_Decorators_EncryptedVirtualCard'
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: c3a1ff40c31e428d8deaf77c71fe606eex
                    status: 400
                    code: type_error
                    title: Request parameter error
                    detail: Incorrect request parameter was provided
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 403
                    code: unauthorized_action
                    title: Unauthorized Action
                    detail: Unauthorized action is not allowed.
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 404
                    code: model_not_found
                    title: Model Not Found
                    detail: >-
                      Could not find card for id
                      07662c38141d96dd215a9606b5a1b9b0mcrd.
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
                    status: 500
                    code: generic_error
                    title: Generic Error
                    detail: There was an error.
        default:
          description: Unexpected error
      security:
        - oauth2:
            - solaris_cards_service_public_virtual_card#find
  /v1/cards/pin_keys/latest:
    get:
      tags:
        - Encrypted PIN Change
      summary: Retrieve latest public key
      description: >-
        Returns the latest Solaris public RSA key in JWK format. Call this
        method every time before you call the `POST Change card PIN` method to
        ensure you have the latest key. See
        [RFC7517](https://www.rfc-editor.org/rfc/rfc7517.html) for more
        information on JWKs.
      operationId: solaris_cards_pin_service#get_pin_keys_aa
      responses:
        '200':
          description: The public key was fetched successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPinApiResponse'
              example:
                kid: 0dce6f4d-b5d0-4c7b-a7d8-cfe231a1f385
                kty: RSA
                use: enc
                alg: RS256
                'n': >-
                  ielfymjYSKEeeai7pFBhJrr0aR-B5_T0snVgQSm8K-SsFv3MFofkeWxWT3PCBId8kovdI-gfKabCyhuQDaYbXP1opyEkB9-gyG4zqmWoW9ddmWo-wxaW08KiruNl09IjWJR0w93tM0i8Pn2qpCSM3h0CdgfO9-VjLn1BpYFKjuJ1apZQ3TG1YYIfGSymghUl0JWLu0s5J2BrvEz91E0K4aF-VY4oSnlrTilq3FrCOgF8IopUvqJWIsz-hKagNAP1K4AXoSVX7Kc4MxUcZEIlkeMKj05YF3zoFhOzfQCa5kcYdPFNlEOpuZwuMidYw8LNBFdvV4VeKYUXZrvaW-SKUQ
                e: AQAB
        '401':
          description: Invalid/missing OAuth token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Unauthorized action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_cards_pin_service#get_pin_keys
  /v1/cards/{card_account_id}/pin_keys/latest:
    get:
      tags:
        - Encrypted PIN Change
      summary: (Deprecated) Retrieve latest public key
      description: >-
        Deprecated endpoint.  Returns the latest Solaris public RSA key in JWK
        format. Call this method every time before you call the `POST Change
        card PIN` method to ensure you have the latest key. See
        [RFC7517](https://www.rfc-editor.org/rfc/rfc7517.html) for more
        information on JWKs.
      operationId: solaris_cards_pin_service#get_pin_keys
      deprecated: true
      parameters:
        - name: card_account_id
          in: path
          description: Unique identifier of the card whose PIN you wish to change.
          required: true
          schema:
            type: string
          example: 1fe8caa4bf1f49d87b2d63c14bb565f0mcrd
      responses:
        '200':
          description: The public key was fetched successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPinApiResponse'
              example:
                kid: 0dce6f4d-b5d0-4c7b-a7d8-cfe231a1f385
                kty: RSA
                use: enc
                alg: RS256
                'n': >-
                  ielfymjYSKEeeai7pFBhJrr0aR-B5_T0snVgQSm8K-SsFv3MFofkeWxWT3PCBId8kovdI-gfKabCyhuQDaYbXP1opyEkB9-gyG4zqmWoW9ddmWo-wxaW08KiruNl09IjWJR0w93tM0i8Pn2qpCSM3h0CdgfO9-VjLn1BpYFKjuJ1apZQ3TG1YYIfGSymghUl0JWLu0s5J2BrvEz91E0K4aF-VY4oSnlrTilq3FrCOgF8IopUvqJWIsz-hKagNAP1K4AXoSVX7Kc4MxUcZEIlkeMKj05YF3zoFhOzfQCa5kcYdPFNlEOpuZwuMidYw8LNBFdvV4VeKYUXZrvaW-SKUQ
                e: AQAB
        '401':
          description: Invalid/missing OAuth token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Unauthorized action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_cards_pin_service#get_pin_keys
  /v1/cards/{card_account_id}/pin_update_requests:
    post:
      tags:
        - Encrypted PIN Change
      summary: Change card PIN
      description: >-
        Changes the PIN of the card specified in the request URL. Follow these
        instructions to use this endpoint: 
          1. In your backend, retrieve the encryption key in JWK format with the `GET Retrieve latest public key` method and make it available to the customer's device.
          2. On the customer's device, collect the customer's desired PIN through a text input in your frontend and store it as string containing a JSON-formatted object `{"pin": "<NEW_PIN>"}`.
          3. On the customer's device, parse the received encryption key JWK from the first step (you may want to use a suitable library of your choice, e.g. [JOSESwift for iOS](https://github.com/airsidemobile/JOSESwift) or [Nimbus JOSE for Android](https://connect2id.com/products/nimbus-jose-jwt)).
          4. On the customer's device, encrypt the string containing the new PIN from step 2 into a JWE using the previously received encryption key and the following properties: 
             1. Algorithm: `RSA-OAEP-256`
             2. Encryption method: `A256CBC-HS512`
             3. Key ID: `kid` property from the encryption key JWK
          5. On the customer's device, generate the compact serialization of the JWE created in the previous step—this will be used as the `encrypted_pin` parameter.
          6. On the customer's device, sign the serialized JWE of the previous step using the cardholder's private key from their bound device — this is the `signature` parameter. Note that you must use the **restricted** key.
          7. Transfer the values generated in the previous two steps (serialized JWE and created signature) to your backend.
          8. Call this endpoint from your backend.
      operationId: solaris_cards_pin_service#save_pin
      parameters:
        - name: card_account_id
          in: path
          description: Unique identifier of the card whose PIN you wish to change.
          required: true
          schema:
            type: string
          example: 1fe8caa4bf1f49d87b2d63c14bb565f0mcrd
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PinUpdateRequest'
            example:
              encrypted_pin: >-
                Web;179ac83968ab42f79e960c1753a4078fdcon;jVl14emA+OcyALb9F+CMFg==;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
              key_id: 0dce6f4d-b5d0-4c7b-a7d8-cfe231a1f385
              device_id: d3768ef3-b26b-4746-9ee0-94f527184830
              device_data: >-
                Web;179ac83968ab42f79e960c1753a4078fdcon;jVl14emA+OcyALb9F+CMFg==;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
              signature: >-
                3045022100ef4f8ede9999e1338a2af0ecd5c183c306fc1d134302895aa813bd0434b0a5d90220567e1c5d16d6be0f3a8553fcfdd765e8fefb169532fbf6932d96075358b46328
      responses:
        '200':
          description: The card's PIN was successfully changed.
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: c3a1ff40c31e428d8deaf77c71fe606eex
                    status: 400
                    code: type_error
                    title: Request parameter error
                    detail: Incorrect request parameter was provided
                    source:
                      field: card_account_id
                      message: Format is incorrect
        '403':
          description: Unauthorized action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_cards_pin_service#save_pin
  /v1/cards/{card_account_id}/sca_pin_update_requests:
    post:
      tags:
        - Encrypted PIN Change
      summary: Change card PIN with Change Request
      description: >-
        Changes the PIN of the card specified in the request URL using the
        Change Request process. Follow these instructions to use this endpoint: 
          1. Retrieve the encryption key in JWK format with the `GET Retrieve latest public key` method and make it available.
          2. Collect the customer's desired PIN through a text input in your frontend and store it as string containing a JSON-formatted object `{"pin": "<NEW_PIN>"}`.
          3. Parse the received encryption key JWK from the first step (you may want to use a suitable library of your choice, e.g. [JOSESwift for iOS](https://github.com/airsidemobile/JOSESwift) or [Nimbus JOSE for Android](https://connect2id.com/products/nimbus-jose-jwt)).
          4. Encrypt the string containing the new PIN from step 2 into a JWE using the previously received encryption key and the following properties: 
             1. Algorithm: `RSA-OAEP-256`
             2. Encryption method: `A256CBC-HS512`
             3. Key ID: `kid` property from the encryption key JWK
          5. On the customer's device, generate the compact serialization of the JWE created in the previous step—this will be used as the `encrypted_pin` parameter.
          6. Call this endpoint from your backend.
      operationId: solaris_cards_sca_pin_service#save_pin
      parameters:
        - name: card_account_id
          in: path
          description: Unique identifier of the card whose PIN you wish to change.
          required: true
          schema:
            type: string
          example: 1fe8caa4bf1f49d87b2d63c14bb565f0mcrd
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PinUpdateSCARequest'
            example:
              encrypted_pin: >-
                eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoiN2FkOTFjYWQtODU0NC00ZmQyLWJlNDgtNDcyOTU3MGEzOTRhIn0.bDPrZvlJ9slqZ9WDy_PDCZrKCvFyLanAeDItyDFdaiRvQbsTdoDE5Y-etWN--y25HkMKzpbC0CIJHdN7kLa225Ax2O6SPaxDkGGNSQPKzkxXmimpv9zaRYNCVQ67KdVTK6WOVLjOVRBKZDba9zvzfKvXlBYqj51WyQR_yvxrXTPftX3IQkDo8RjdaB6tr9HugdimbqOiMgiNSOHAn0G-Zi6tkwL0TLlA5_8xzUec40vaBvEoTBc_OZjZy7s7ebKzS8Hhg6NF9CemeMIEwes8ZzO1s1385PCxLhce0KEekVUoCjrLP9QhoYSjQUTUNrxkn4h0ZnicF5ycbW36Ivt8mQ.sAtSq_rfcxxlQiQc2qZ0Kg.bW53DScq6C8vnqD620Lnuw.MYGA-87sfGrFupu2FqC3Ick_EvwCA5vO2tPktS1yJPg
              key_id: 7ad91cad-8544-4fd2-be48-4729570a394a
      responses:
        '200':
          description: >-
            The request was accepted, and now the customer must confirm the
            change request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChangeRequestResponse'
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
              example:
                errors:
                  - id: c3a1ff40c31e428d8deaf77c71fe606eex
                    status: 400
                    code: type_error
                    title: Request parameter error
                    detail: Incorrect request parameter was provided
                    source:
                      field: card_account_id
                      message: Format is incorrect
        '403':
          description: Unauthorized action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_cards_sca_pin_service#save_pin
  /v1/card_controls/lists:
    post:
      tags:
        - Card spending controls
      summary: Create card controls list
      description: >-
        Creates a card controls list and applies it to all cards defined in the
        `scope` and `scope_id` of the request.
      operationId: createCardControlList
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCardControlListRequest'
        required: true
      responses:
        '201':
          description: The card controls list was successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlListResponse'
        '208':
          description: The card controls list has already been created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlListResponse'
        '400':
          description: >-
            Validation failed for the card controls list, or the provided
            partner identifier is invalid.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error-2'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card controls list could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_list#create
    get:
      tags:
        - Card spending controls
      summary: Index card controls lists
      description: >-
        Returns an array containing all active card controls lists in place for
        your customers.
      operationId: indexCardControlList
      parameters:
        - name: filter[scope]
          in: query
          description: Filter the results by the type of scope.
          required: true
          schema:
            $ref: '#/components/schemas/Scope'
        - name: filter[scope_id]
          in: query
          description: >-
            Filter the results by a specific scope (e.g., the ID of an `account`
            or the `person` ID of a cardholder).
          schema:
            type: string
        - name: include_related
          in: query
          description: >-
            Using this filter, the API will return all card controls lists that
            were defined at the `ACCOUNT`, `BUSINESS`, or `PARTNER` level that
            apply to a specific card. You can only use this filter in
            combination with the `scope` and `scope_id` filters. The `scope`
            must be set to `CARD` and the `scope_id` must be set to a card ID.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CardControlListResponse'
        '400':
          description: Request validation failed.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_list#all
  /v1/card_controls/lists/{id}:
    get:
      tags:
        - Card spending controls
      summary: Retrieve a card controls list
      description: Returns the card controls list with the ID specified in the request URL.
      operationId: showCardControlList
      parameters:
        - name: id
          in: path
          description: ID of the card controls list to retrieve.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The operation was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlListResponse'
        '400':
          description: Partner identifier is invalid
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card controls list could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_list#find
    delete:
      tags:
        - Card spending controls
      summary: Delete card controls list
      description: Deletes the card controls list specified in the request URL.
      operationId: deleteCardControlList
      parameters:
        - name: id
          in: path
          description: ID of the card controls list to delete.
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Partner identifier is invalid
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error-2'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Card controls list not found
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_list#destroy
  /v1/card_controls/spending_limits:
    post:
      tags:
        - Card spending controls
      summary: Create card spending limit control
      description: >-
        Creates a card spending limit control and applies it to all cards
        defined in the `scope` and `scope_id` of the request.
      operationId: createCardControlSpendingLimit
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCardControlSpendingLimitRequest'
        required: true
      responses:
        '201':
          description: The card spending limit control was successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlSpendingLimitResponse'
        '208':
          description: The card spending limit control has already been created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlSpendingLimitResponse'
        '400':
          description: The request validation failed.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#create
    get:
      tags:
        - Card spending controls
      summary: Index card spending limit controls
      description: Returns all active card spending limit controls.
      operationId: indexCardControlSpendingLimit
      parameters:
        - name: filter[scope]
          in: query
          description: Filter the results by the type of scope.
          required: true
          schema:
            $ref: '#/components/schemas/Scope'
        - name: filter[scope_id]
          in: query
          description: >-
            Filter the results by a specific scope (e.g., the ID of an `account`
            or the `person` ID of a cardholder).
          schema:
            type: string
        - name: include_related
          in: query
          description: >-
            Using this filter, the API will return all card spending limit
            controls that were defined at the `ACCOUNT`, `BUSINESS`, or
            `PARTNER` level that apply to a specific card. You can only use this
            filter in combination with the `scope` and `scope_id` filters. The
            `scope` must be set to `CARD` and the `scope_id` must be set to a
            card ID.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CardControlSpendingLimitResponse'
        '400':
          description: The request validation failed.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#all
  /v1/card_controls/spending_limits/{id}:
    get:
      tags:
        - Card spending controls
      summary: Retrieve a card spending limit control
      description: >-
        Returns information about the card spending limit control specified in
        the request URL.
      operationId: showCardControlSpendingLimit
      parameters:
        - name: id
          in: path
          description: ID of the card spending limit control.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlSpendingLimitShowResponse'
        '400':
          description: The supplied partner identifier is invalid.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card spending limit control could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#find
    delete:
      tags:
        - Card spending controls
      summary: Delete card spending limit control
      description: Deletes the card spending limit control specified in the request URL.
      operationId: deleteCardControlSpendingLimit
      parameters:
        - name: id
          in: path
          description: ID of the card spending limit control to delete.
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        '400':
          description: The supplied partner identifier is invalid.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Card controls spending limit not found
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#destroy
  /v1/card_controls/spending_limits(use api-version-header to consume this endpoint):
    post:
      tags:
        - Card spending controls
      summary: Create card spending limit control (V2)
      description: >-
        Creates a card spending limit control and applies it to all cards
        defined in the `scope` and `scope_id` of the request. <br> **Important**
        This endpoint replaces the [old
        version](https://docs.solarisgroup.com/api-reference/digital-banking/cards/#operation/createCardControlSpendingLimit).
        However, please note that you have to set the `Api-Version` header to
        the version you want (e.g., `2024-01-01`). If you do not specify a
        version, then the API will return the older version of the response.
      operationId: createCardControlSpendingLimitV2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCardControlSpendingLimitRequestV2'
        required: true
      responses:
        '201':
          description: The card spending limit control was successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlSpendingLimitResponseV2'
        '208':
          description: The card spending limit control has already been created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlSpendingLimitResponse'
        '400':
          description: The request validation failed.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#create
    get:
      tags:
        - Card spending controls
      summary: Index card spending limit controls (V2)
      description: >-
        Returns all active card spending limit controls.<br> **Important** This
        endpoint replaces the [old
        version](https://docs.solarisgroup.com/api-reference/digital-banking/cards/#operation/indexCardControlSpendingLimit).
        However, please note that you have to set the `Api-Version` header to
        the version you want (e.g., `2024-01-01`). If you do not specify an
        `Api-Version`, then the API will return the older version of the
        response.
      operationId: indexCardControlSpendingLimitV2
      parameters:
        - name: filter[scope]
          in: query
          description: Filter the results by the type of scope.
          required: true
          schema:
            $ref: '#/components/schemas/Scope'
        - name: filter[scope_id]
          in: query
          description: >-
            Filter the results by a specific scope (e.g., the ID of an `account`
            or the `person` ID of a cardholder).
          schema:
            type: string
        - name: include_related
          in: query
          description: >-
            Using this filter, the API will return all card spending limit
            controls that were defined at the `ACCOUNT`, `BUSINESS`, or
            `PARTNER` level that apply to a specific card. You can only use this
            filter in combination with the `scope` and `scope_id` filters. The
            `scope` must be set to `CARD` and the `scope_id` must be set to a
            card ID.
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CardControlSpendingLimitResponseV2'
        '400':
          description: The request validation failed.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#all
  /v1/card_controls/spending_limits/{id}(use api-version-header to consume this endpoint):
    get:
      tags:
        - Card spending controls
      summary: Retrieve a card spending limit control (V2)
      description: >-
        Returns information about the card spending limit control specified in
        the request URL.<br> **Important** This endpoint replaces the [old
        version](https://docs.solarisgroup.com/api-reference/digital-banking/cards/#operation/showCardControlSpendingLimit).
        However, please note that you have to set the `api-version` header to
        the version you want (e.g., `2024-01-01`). If you do not specify an
        `api-version`, then the API will return the older version of the
        response.
      operationId: showCardControlSpendingLimitV2
      parameters:
        - name: id
          in: path
          description: ID of the card spending limit control.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardControlSpendingLimitShowResponseV2'
        '400':
          description: The supplied partner identifier is invalid.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The card spending limit control could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#find
    delete:
      tags:
        - Card spending controls
      summary: Delete card spending limit control (V2)
      description: >-
        Deletes the card spending limit control specified in the request
        URL..<br> **Important** This endpoint replaces the [old
        version](https://docs.solarisgroup.com/api-reference/digital-banking/cards/#operation/deleteCardControlSpendingLimit).
        However, please note that you have to set the `api-version` header to
        the version you want (e.g., `2024-01-01`). If you do not specify an
        `api-version`, then the API will return the older version of the
        response.
      operationId: deleteCardControlSpendingLimitV2
      parameters:
        - name: id
          in: path
          description: ID of the card spending limit control to delete.
          required: true
          schema:
            type: string
      responses:
        '204':
          description: No Content
        '400':
          description: The supplied partner identifier is invalid.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Card controls spending limit not found
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_controls_spending_limit#destroy
  /v1/cards/{card_id}/fraud_cases/{id}/whitelist:
    post:
      tags:
        - Card transactions
      summary: Allow a transaction that was marked as fraudulent
      description: >-
        This endpoint confirms that a transaction marked as fraudulent was not
        actually fraudulent (i.e., the customer confirms that they made the
        transaction themselves or is otherwise aware of the transaction). Once
        you call this endpoint, fraud monitoring will be disabled for the card
        specified in the request URL for 10 minutes, and the transaction can be
        attempted again.
      parameters:
        - name: card_id
          in: path
          required: true
          schema:
            type: string
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Solaris_API_Serializers_WhitelistCardFraudCaseResponse
        '400':
          description: An error occurred on the client side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
          content: {}
      security:
        - oauth2:
            - solaris_cards_service_fraud_case#whitelist
  /v1/cards/{card_id}/fraud_cases/{id}/confirm:
    post:
      tags:
        - Card transactions
      summary: Confirm a fraud case
      description: >-
        This endpoint confirms to Solaris that a fraud case was indeed
        fraudulent. The card used to make the fraudulent transaction will be
        subsequently blocked. You should then redirect your customer to your
        customer support so that a replacement card can be issued.
      parameters:
        - name: card_id
          in: path
          required: true
          schema:
            type: string
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Solaris_API_Serializers_ConfirmCardFraudCaseResponse
        '400':
          description: An error occurred on the client side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
        default:
          description: Unexpected error
          content: {}
      security:
        - oauth2:
            - solaris_cards_service_fraud_case#confirm
  /v1/cards/3ds/{challenge_id}/decline:
    post:
      tags:
        - Card transactions
      summary: Decline 3DS authentication
      description: >-
        This endpoint marks the 3DS authentication specified by the
        `challenge_id` in the request URL as declined. The challenge must not
        have already expired.
      parameters:
        - name: challenge_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          example: {}
      responses:
        '202':
          description: The request was accepted and is being processed.
          content:
            application/json:
              schema:
                type: object
                example: {}
        '400':
          description: The challenge has already expired.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/error'
                  - type: object
                    example:
                      errors:
                        - id: b805c37f-75e9-4445-974c-12d28e7584ee
                          status: 400
                          code: challenge_expired_error
                          title: Challenge expired
                          detail: Challenge has expired
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model_not_found_error'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_error'
      security:
        - oauth2:
            - solaris_access_control_3ds_service_sca#3ds_decline
  /v1/cards/{card_id}/test_fraud_cases:
    post:
      tags:
        - Card transactions simulation
      summary: (Sandbox only) Create test fraud case
      description: >-
        This endpoint simulates a fraudulent transaction for the card specified
        in the request URL. The fraudulent transaction process will begin as a
        result.<br> This endpoint is only available on Sandbox.
      parameters:
        - name: card_id
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Successful result of the operation
          content: {}
        '400':
          description: An error occurred on the client side.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_cards_service_test_fraud_case#create
  /v1/cards/{card_id}/test_3ds_authentication:
    post:
      tags:
        - Card transactions simulation
      summary: (Sandbox only) Create test 3DS transaction
      description: >-
        This endpoint simulates a test 3DS transaction for the card_id specified
        in the request URL.<br>  Calling this endpoint will begin the 3DS
        transaction process. The API will return a JSON schema containing the
        HTML for the 3DS challenge screen.<br>  This endpoint is only available
        on **Sandbox.**
      parameters:
        - name: card_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Solaris_API_Test3dsTransaction_Payload'
            example:
              merchant_name: Merchant Name
              purchase_currency: EUR
              purchase_amount: 1000
      responses:
        '200':
          description: Successful result of the operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Solaris_API_Test3dsTransaction_Response'
        '400':
          description: Endpoint not available for production environment
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/error'
                  - type: object
                    example:
                      errors:
                        - id: b805c37f-75e9-4445-974c-12d28e7584ee
                          status: 400
                          code: not_available
                          title: Not Available
                          detail: Endpoint not available for production environment
        '404':
          description: The resource could not be found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/model_not_found_error'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/internal_error'
      security:
        - oauth2:
            - solaris_access_control_3ds_service_sca#test_3ds_authentication
  /v1/cards/{card_id}/simulator/transactions/authorization:
    post:
      tags:
        - Card transactions simulation
      summary: (Beta, sandbox only) Simulate an authorization
      description: >-
        Creates a simulated card authorization for the purpose of testing
        approval & denial flows.<br>  Calling this endpoint will trigger a
        **webhook notification** on
        [CARD_AUTHORIZATION](https://docs.solarisgroup.com/api-reference/webhooks/#card_authorization)
        or
        [CARD_AUTHORIZATION_DECLINE_V2](https://docs.solarisgroup.com/api-reference/webhooks/#card_authorization_decline_v2)
        (depending on whether the test transaction should be approved or
        declined).<br>  The API returns a `transaction_key` corresponding with
        the created transaction. You can query info about the transaction using
        [GET Index account
        bookings](https://docs.solarisgroup.com/api-reference/digital-banking/account-management/#tag/Accounts/paths/~1v1~1accounts~1{account_id}~1bookings/get)
        or [GET Index
        reservations](https://docs.solarisgroup.com/api-reference/digital-banking/account-management/#tag/Reservations/paths/~1v1~1accounts~1{account_id}~1reservations/get).<br>
        Please **note** the following: <ul> <li>This is a **beta
        endpoint.**</li> <li>The account associated with the card specified in
        `card_id` must have an **available balance.**</li> </ul>
      parameters:
        - name: card_id
          in: path
          description: ID of the card to use for the test transaction.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionSimulatorRequest'
        required: true
      responses:
        '202':
          description: The operation was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionSimulatorResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400-2'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-3'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500-2'
      security:
        - oauth2:
            - solaris_card_simulators#authorization_simulator
  /v1/cards/{card_id}/simulator/transactions/settle:
    post:
      tags:
        - Card transactions simulation
      summary: (Beta, sandbox only) Simulate an unauthorized settlement
      description: >-
        Creates a simulated unauthorized settlement.  The API returns a
        `transaction_key` that corresponds with the created transaction. You can
        query info about the transaction using [GET Index account
        bookings](https://docs.solarisgroup.com/api-reference/digital-banking/account-management/#tag/Accounts/paths/~1v1~1accounts~1{account_id}~1bookings/get)
        or [GET Index
        reservations](https://docs.solarisgroup.com/api-reference/digital-banking/account-management/#tag/Reservations/paths/~1v1~1accounts~1{account_id}~1reservations/get).<br>
        Please **note** the following: <ul> <li>The account associated with the
        card specified in `card_id` must have an **available balance.**</li>
        </ul>
      parameters:
        - name: card_id
          in: path
          description: ID of the card to use for the test transaction.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionSimulatorStandaloneSettleRequest'
        required: true
      responses:
        '202':
          description: The operation was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionSimulatorResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400-2'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-3'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500-2'
      security:
        - oauth2:
            - solaris_card_simulators#settlement_simulator_standalone
  /v1/cards/{card_id}/simulator/transactions/{transaction_key}/settle:
    post:
      tags:
        - Card transactions simulation
      summary: (Beta, sandbox only) Simulate the settlement of an authorization
      description: >-
        Executes a test card authorization settlement for the given `card_id`
        and `transaction_key`.  The API returns a `transaction_key` that
        corresponds with the created transaction. You can query info about the
        transaction using [GET Index account
        bookings](https://docs.solarisgroup.com/api-reference/digital-banking/account-management/#tag/Accounts/paths/~1v1~1accounts~1{account_id}~1bookings/get)
        or [GET Index
        reservations](https://docs.solarisgroup.com/api-reference/digital-banking/account-management/#tag/Reservations/paths/~1v1~1accounts~1{account_id}~1reservations/get).<br>
        Please **note** the following: <ul> <li>This is a **beta
        endpoint.**</li> <li>The account associated with the card specified in
        `card_id` must have an **available balance.**</li> </ul>
      parameters:
        - name: card_id
          in: path
          description: ID of the card to use for the test transaction.
          required: true
          schema:
            type: string
        - name: transaction_key
          in: path
          description: transaction_key of the card transaction.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionSimulatorSettleRequest'
        required: true
      responses:
        '202':
          description: The operation was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionSimulatorResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400-2'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-3'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500-2'
      security:
        - oauth2:
            - solaris_card_simulators#settlement_simulator
  /v1/cards/simulator/authorization/{transaction_key}/expire:
    post:
      tags:
        - Card transactions simulation
      summary: (Beta, sandbox only) Simulate an expired card authorization
      description: >-
        Marks the card authorization as expired for the given
        `transaction_key`.  The API returns the `202 (Accepted)` response code
        and an empty response body. <br> **Note:** This is a **beta endpoint.**
      parameters:
        - name: transaction_key
          in: path
          description: transaction_key of the card transaction to mark as expired.
          required: true
          schema:
            type: string
      responses:
        '202':
          description: The operation was successful.
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400-2'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error403'
        '404':
          description: The resource could not be found.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error404-3'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500-2'
      security:
        - oauth2:
            - solaris_card_simulators#settlement_simulator
  /v1/cards/{card_id}/transactions:
    get:
      tags:
        - Card transactions
      summary: Index card transactions
      description: >-
        Returns all card transactions associated with the card ID specified in
        the request URL. Use the filter parameters to narrow down the results
        according to your needs.
      operationId: indexCardTransactions
      parameters:
        - name: card_id
          in: path
          required: true
          style: simple
          description: ID of the card.
          schema:
            type: string
            format: uuid
        - name: filter[card_transaction_id]
          in: query
          required: false
          style: form
          description: Filter the results by card transaction ID. (One value)
          schema:
            type: string
        - name: filter[created_at][min]
          in: query
          required: false
          style: form
          description: >-
            Filter the results by the date/time when the transaction was created
            (from a given date/time value in UTC format).
          schema:
            type: string
            format: date-time
        - name: filter[created_at][max]
          in: query
          required: false
          style: form
          description: >-
            Filter the results by the date/time when the transaction was created
            (until a given date/time value in UTC format).
          schema:
            type: string
            format: date-time
        - name: filter[partner_id]
          in: query
          required: false
          style: form
          description: Filter the results by partner ID.
          schema:
            type: string
        - name: filter[iban]
          in: query
          required: false
          style: form
          description: Filter the results by associated IBAN.
          schema:
            type: string
        - name: filter[transaction_key]
          in: query
          required: false
          style: form
          description: Filter the results by the transaction key.
          schema:
            type: string
        - name: filter[hashed_transaction_key]
          in: query
          required: false
          style: form
          description: Filter the results by the hashed transaction key.
          schema:
            type: string
        - name: filter[indicators]
          in: query
          required: false
          style: form
          description: Filter the results by transaction indicator.
          schema:
            type: string
            enum:
              - PREMATURELY_RESOLVED_RESERVATIONS_MATCHED
              - RESERVED_LESS_THAN_SETTLED
              - SETTLED_BUT_NOT_RESERVED_BEFORE
        - name: filter[status]
          in: query
          required: false
          style: form
          description: Filter the results by transaction status.
          schema:
            type: string
            enum:
              - ACTIVE
              - EXPIRED
              - INITIATED
              - PROCESSED
              - RESOLVED
              - REVERSED
              - SETTLED
        - name: filter[approval_code]
          in: query
          required: false
          style: form
          description: Filter the results by approval code.
          schema:
            type: string
        - name: filter[merchant_name]
          in: query
          required: false
          style: form
          description: Filter the results by merchant name.
          schema:
            type: string
        - name: filter[merchant_id]
          in: query
          required: false
          style: form
          description: Filter the results by merchant ID.
          schema:
            type: string
        - name: filter[core_banking_reservation_id]
          in: query
          required: false
          style: form
          description: Filter the results by core banking reservation ID.
          schema:
            type: string
        - name: filter[core_banking_transaction_id]
          in: query
          required: false
          style: form
          description: Filter the results by core banking transaction ID.
          schema:
            type: string
        - name: filter[amount]
          in: query
          required: false
          style: form
          description: >-
            Filter the results by the amount deducted from the customer's
            account.
          schema:
            type: integer
        - name: filter[transaction_amount]
          in: query
          required: false
          style: form
          description: Filter the results by the transaction amount.
          schema:
            type: integer
        - name: filter[declined]
          in: query
          required: false
          style: form
          description: Return only declined transactions.
          schema:
            type: boolean
        - name: page[number]
          in: query
          required: false
          style: form
          description: Specifies the number of results pages to return.
          schema:
            type: integer
            format: int32
        - name: page[size]
          in: query
          required: false
          style: form
          description: Specifies the number of entries on each results page.
          schema:
            type: integer
            format: int32
      responses:
        '200':
          description: The operation was successful.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CardTransactionDetailDto'
        '400':
          description: Request validation failed.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error400'
        '403':
          description: You are not authorized to perform this action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not Found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404-2'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_card_transaction_details#index
  /v1/cards/{cardId}/delivery_trackings:
    get:
      tags:
        - Card Delivery Tracking API
      summary: Retrieve card tracking information
      description: >-
        Returns tracking information for the card with the ID specified in the
        request URL.
      operationId: solaris_cards_service_public_card#delivery_trackings
      parameters:
        - name: cardId
          in: path
          description: ID of the card account.
          required: true
          schema:
            type: string
          example: 1fe8caa4bf1f49d87b2d63c14bb565f0mcrd
      responses:
        '200':
          description: Card tracking data was fetched successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CardDeliveryTrackingResponseItem'
              example:
                - id: 2ba86442-a9a1-4634-9eb8-fef3500322b3
                  card_id: 1fe8caa4bf1f49d87b2d63c14bb565f0mcrd
                  date_of_shipment: '2022-02-18'
                  shipping_provider: DHL Express
                  shipping_tracking_information: JD014600009536663804
                  country_code: DE
                  has_picture: true
                - id: c82d6e7b-2604-4a42-a147-543c5db76c67
                  card_id: 1fe8caa4bf1f49d87b2d63c14bb565f0mcrd
                  shipping_provider: DHL Express
                  message: >-
                    DHLEX: 420505|The destination location is invalid. Please
                    check the data|999|Process failure occurred. Process ID
                    associated for that transaction (123456)|
                  country_code: ES
                  has_picture: true
        '400':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Errors'
        '401':
          description: Invalid/missing OAuth token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Unauthorized action.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error500'
      security:
        - oauth2:
            - solaris_cards_service_public_card#delivery_trackings
components:
  parameters:
    PersonId:
      in: path
      name: person_id
      description: Solaris UID for person
      required: true
      allowEmptyValue: false
      schema:
        type: string
    AccountId:
      in: path
      name: account_id
      description: Solaris UID for account
      required: true
      allowEmptyValue: false
      schema:
        type: string
    PageNumber:
      in: query
      name: page[number]
      description: The number of results pages to return.
      schema:
        type: integer
        default: 1
    PageSize:
      in: query
      name: page[size]
      description: The size of each page in the response.
      schema:
        type: integer
        default: 10
  schemas:
    Solaris-Enums-CardType:
      type: string
      description: >-
        The type of the card. **Note** The following enum list is not exhaustive
        but only indicative of some possible values.
      enum:
        - MASTERCARD_DEBIT
        - MASTERCARD_BUSINESS_DEBIT
        - VIRTUAL_MASTERCARD_DEBIT
        - VIRTUAL_MASTERCARD_BUSINESS_DEBIT
        - VIRTUAL_MASTERCARD_FREELANCE_DEBIT
        - VISA_DEBIT
        - VISA_BUSINESS_DEBIT
        - VIRTUAL_VISA_DEBIT
        - VIRTUAL_VISA_BUSINESS_DEBIT
        - VIRTUAL_VISA_FREELANCE_DEBIT
        - VISA_CREDIT
        - VIRTUAL_VISA_CREDIT
        - VISA_BUSINESS_CREDIT
        - VIRTUAL_VISA_BUSINESS_CREDIT
    CardCreateRequest:
      type: object
      description: 'The content of the card creation request  '
      example:
        line_1: MICHAEL WITHSTATICTOKEN/MUSTERMANN
        line_2: TEST COMPANY GMBH
        type: MASTERCARD_BUSINESS_DEBIT
        business_id: 52e6a9b8a559d842ed7d8901b0e1bf4bcbiz
        reference: 61a50bf05278217a57e5ad15ed259e44
        shipping_priority: '0'
        encrypted_pin: >-
          eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoiN2FkOTFjYWQtODU0NC00ZmQyLWJlNDgtNDcyOTU3MGEzOTRhIn0.bDPrZvlJ9slqZ9WDy_PDCZrKCvFyLanAeDItyDFdaiRvQbsTdoDE5Y-etWN--y25HkMKzpbC0CIJHdN7kLa225Ax2O6SPaxDkGGNSQPKzkxXmimpv9zaRYNCVQ67KdVTK6WOVLjOVRBKZDba9zvzfKvXlBYqj51WyQR_yvxrXTPftX3IQkDo8RjdaB6tr9HugdimbqOiMgiNSOHAn0G-Zi6tkwL0TLlA5_8xzUec40vaBvEoTBc_OZjZy7s7ebKzS8Hhg6NF9CemeMIEwes8ZzO1s1385PCxLhce0KEekVUoCjrLP9QhoYSjQUTUNrxkn4h0ZnicF5ycbW36Ivt8mQ.sAtSq_rfcxxlQiQc2qZ0Kg.bW53DScq6C8vnqD620Lnuw.MYGA-87sfGrFupu2FqC3Ick_EvwCA5vO2tPktS1yJPg
        key_id: 7ad91cad-8544-4fd2-be48-4729570a394a
      required:
        - line_1
        - type
      properties:
        line_1:
          type: string
          description: >-
            The cardholder's name as it should be printed on the card. Please
            note the guidelines for this field as written in the method
            description above.
        line_2:
          type: string
          description: >-
            An additional field to print another line of text on the card.  Can
            be used for a variety of use cases to fit your business needs. 
            Please note the guidelines for this field as written in the method
            description above.
        type:
          $ref: '#/components/schemas/Solaris-Enums-CardType'
          example: MASTERCARD_DEBIT
        business_id:
          type: string
          description: >-
            (For business cards) ID of the business with which to associate the
            card.
        reference:
          type: string
          description: >-
            A unique reference for the card. This field is mandatory, and the
            API will check it for uniqueness.
        shipping_priority:
          type: string
          description: Shipping priority to assign to the card.
          enum:
            - '0'
            - '1'
            - '2'
            - '3'
            - '4'
            - '5'
            - '6'
        encrypted_pin:
          type: string
          description: >-
            The encrypted PIN value (JWE in compact serialization). See the
            description of this method for instructions on how to produce this
            value.
        key_id:
          type: string
          description: >-
            Solaris' public RSA key ID. Returned as the `kid` property by the
            `GET /v1/cards/pin_keys/latest` endpoint.
    CardCreateResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the card.
          example: 8febdba4912a747808ccc6f95f82bbb4mcrd
        status:
          type: string
          description: Current state of the created card
          example: PROCESSING
    Source:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
    Error:
      type: object
      properties:
        id:
          type: string
        status:
          type: integer
          format: int32
        code:
          type: string
        title:
          type: string
        detail:
          type: string
        source:
          $ref: '#/components/schemas/Source'
    Errors:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    Solaris_Decorators_CardStatusEnum:
      type: string
      description: The current status of the card.
      enum:
        - ACTIVE
        - ACTIVATION_BLOCKED_BY_SOLARIS
        - BLOCKED
        - BLOCKED_BY_SOLARIS
        - CLOSED
        - CLOSED_BY_SOLARIS
        - COUNTERFEIT_CARD
        - FRAUD
        - INACTIVE
        - LOST
        - NEVER_RECEIVED
        - PROCESSING
        - STOLEN
    Solaris_Decorators_PublicPlasticCard:
      type: object
      description: >-
        Object containing information about the cardholder, the card's masked
        PAN, and the formatted expiration date.
      properties:
        line_1:
          type: string
          description: The cardholder's first and last name.
          example: SLY STALLONE
        line_2:
          type: string
          description: >-
            The supplementary personalized info like business name or membership
            number.
          example: BUSINESS NAME
        masked_pan:
          type: string
          description: The first six and last four digits of the card.
          example: 537458******4567
        formatted_expiration_date:
          type: string
          description: The card's expiration date in MM/YY format.
          example: 09/22
    Solaris_Decorators_Card:
      type: object
      description: Description of the card
      properties:
        id:
          type: string
          description: ID of the card.
          example: 8febdba4912a747808ccc6f95f82bbb4
        status:
          example: ACTIVE
          allOf:
            - $ref: '#/components/schemas/Solaris_Decorators_CardStatusEnum'
        reference:
          type: string
          description: Unique reference number for the card.
          example: 87285d83-ab15-4906-af87-5763801d9e43
        type:
          type: string
          description: The type of the card.
          example: MASTERCARD_DEBIT
          enum:
            - MASTERCARD_DEBIT
            - VISA_DEBIT
            - MASTERCARD_BUSINESS_DEBIT
            - VISA_BUSINESS_DEBIT
            - VIRTUAL_MASTERCARD_DEBIT
            - VIRTUAL_VISA_DEBIT
            - VIRTUAL_MASTERCARD_BUSINESS_DEBIT
            - VIRTUAL_VISA_BUSINESS_DEBIT
            - VIRTUAL_MASTERCARD_FREELANCE_DEBIT
            - VIRTUAL_VISA_FREELANCE_DEBIT
        expiration_date:
          type: string
          description: The expiration date of the card.
          example: '2020-12-30'
        new_card_ordered:
          type: boolean
          description: >-
            Boolean that indicates if a new physical card was ordered for this
            card resource (either for the first time or as a replacement).
          example: false
        person_id:
          type: string
          description: ID of the cardholder person resource.
          example: 5af2ea4271038d5c53e68ccbf4fe43b3cper
        account_id:
          type: string
          description: ID of the account to which the card is tied.
          example: a5844f601567db9b59b3531245a58e96cacc
        business_id:
          type: string
          description: >-
            (For business cards) ID of the business with which the card is
            associated.
          example: 52e6a9b8a559d842ed7d8901b0e1bf4bcbiz
        representation:
          $ref: '#/components/schemas/Solaris_Decorators_PublicPlasticCard'
        partner_id:
          type: string
          description: ID of the partner with which the card is associated.
          example: a0461d31b910023de5647306e1e9a62bcpar
        owner_1_id:
          type: string
          description: SIA Identifier for a given partner
          example: '00059'
        card_account_status:
          type: string
          example: active
        sia_related_account_id:
          type: string
          description: >-
            SIA Related Account ID. We generate this ID for the SIA card
            processor to reference the banking Account of the Card in their
            system. The referred SIA Account holds money balance, for example. A
            banking Account can have multiple Cards. For each of such cards, we
            have their own unique SIA Account Number.
          example: 55874C893FE53ADFE44F01
        created_at:
          type: string
          example: '2019-11-13T15:19:21.000Z'
        iban:
          type: string
          description: IBAN of the banking Account this Card is connected to
          example: DE00116474734556211581
        emoney_visa_settlement_iban:
          type: string
          description: IBAN of the banking account used for settling emoney transactions
        sia_account_number:
          type: string
          description: SIA account number
          example: '500000001103'
        visa_profile_id:
          type: string
          description: VISA profile ID
    Error400:
      type: object
      properties:
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        status:
          type: string
          example: '400'
        code:
          type: string
          example: build_pagination_headers_failure
        title:
          type: string
          example: Failed to build pagination headers.
        detail:
          type: string
          example: Cannot connect to database.
    Error403:
      type: object
      properties:
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        status:
          type: string
          example: '403'
        code:
          type: string
          example: unauthorized_action
        title:
          type: string
          example: Unauthorized Action
        detail:
          type: string
          example: Unauthorized action is not allowed.
    Error404:
      type: object
      properties:
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        status:
          type: string
          example: '404'
        code:
          type: string
          example: model_not_found
        title:
          type: string
          example: Model Not Found
        detail:
          type: string
          example: >-
            Partner configuration for 1333d41bdc314436b9448c24ae42eccpar not
            found.
    Error500:
      type: object
      properties:
        id:
          type: string
          example: e8915041-9d8c-4d96-9dd1-04e8522ecdbf
        status:
          type: string
          example: '500'
        code:
          type: string
          example: generic_error
        title:
          type: string
          example: Generic Error
        detail:
          type: string
          example: There was an error.
    Solaris_Decorators_PublicCardWithCreationDateAndSiaAccountNumber:
      type: object
      properties:
        id:
          type: string
          description: ID of the card.
          example: 8febdba4912a747808ccc6f95f82bbb4
        status:
          example: ACTIVE
          allOf:
            - $ref: '#/components/schemas/Solaris_Decorators_CardStatusEnum'
        reference:
          type: string
          description: Unique reference number for the card.
          example: 87285d83-ab15-4906-af87-5763801d9e43
        type:
          $ref: '#/components/schemas/Solaris-Enums-CardType'
          example: MASTERCARD_DEBIT
        expiration_date:
          type: string
          description: The expiration date of the card.
          example: '2020-12-30'
        new_card_ordered:
          type: boolean
          description: >-
            Boolean that indicates if a new physical card was ordered for this
            card resource (either for the first time or as a replacement).
          example: false
        person_id:
          type: string
          description: ID of the cardholder person resource.
          example: 5af2ea4271038d5c53e68ccbf4fe43b3cper
        account_id:
          type: string
          description: ID of the account to which the card is tied.
          example: a5844f601567db9b59b3531245a58e96cacc
        business_id:
          type: string
          description: >-
            (For business cards) ID of the business with which the card is
            associated.
          example: 52e6a9b8a559d842ed7d8901b0e1bf4bcbiz
        representation:
          $ref: '#/components/schemas/Solaris_Decorators_PublicPlasticCard'
        creation_date:
          type: string
          description: >-
            Date when the latest plastic card for this card resource was
            created.
          example: '2022-05-01'
        sia_account_number:
          type: string
          description: The SIA account number for the card.
          example: '500001650679'
    ActivateCardRequest:
      type: object
      description: The content of the patch card account status request
      properties:
        pan_last_4_digit:
          type: string
          example: '2314'
          description: The last 4 digits of the card's PAN.
        expiry_date:
          type: string
          example: 01/23
          description: The card expiry date. Format should be mm/yy.
    Solaris_Decorators_PlasticCard:
      type: object
      description: >-
        Object containing information about the cardholder, the card's masked
        PAN, and the formatted expiration date.
      properties:
        line_1:
          type: string
          description: The cardholder's first and last name.
          example: SLY STALLONE
        line_2:
          type: string
          description: >-
            An additional field to print another line of text on the card.  Can
            be used for a variety of use cases to fit your business needs. 
            Please note the guidelines for this field as written in the method
            description above.    
          example: TEST COMPANY GMBH
        masked_pan:
          type: string
          description: The first six and last four digits of the card.
          example: 537458******4567
        formatted_expiration_date:
          type: string
          description: The card's expiration date in MM/YY format.
          example: 09/22
    Solaris_Decorators_CardLifeCycleResponse:
      type: object
      properties:
        expiration_date:
          type: string
          description: The expiration date of the card.
          example: '2020-12-30'
        new_card_ordered:
          type: boolean
          description: >-
            Boolean that indicates if a new physical card was ordered for this
            card resource (either for the first time or as a replacement).
          example: false
        person_id:
          type: string
          description: ID of the cardholder person resource.
          example: 6dceb838ea04090aaa4277c7ea8a1c78cper
        account_id:
          type: string
          description: ID of the account to which the card is tied.
          example: 6cbac416a5d91aaf5e6bc9ee15d58799cacc
        business_id:
          type: string
          description: >-
            (For business cards) ID of the business with which the card is
            associated.
          example: 52e6a9b8a559d842ed7d8901b0e1bf4bcbiz
        sia_account_number:
          type: string
          description: SIA account number
          example: '500000001103'
        creation_date:
          type: string
          description: >-
            Date when the latest plastic card for this card resource was
            created.
          example: '2022-05-01'
        id:
          type: string
          description: ID of the card.
          example: 2b890724292e287935420a2ca13ae7f9mcrd
        status:
          example: ACTIVE
          allOf:
            - $ref: '#/components/schemas/Solaris_Decorators_CardStatusEnum'
        reference:
          type: string
          description: Unique reference number for the card.
          example: b92b6840d6345b11f29b598c10bae770
        type:
          $ref: '#/components/schemas/Solaris-Enums-CardType'
          example: VISA_DEBIT
        representation:
          $ref: '#/components/schemas/Solaris_Decorators_PlasticCard'
    ReplaceCardRequest:
      type: object
      description: The content of the replace card request
      example:
        line_1: JOHN/DOE
        line_2: TEST GMBH
        reason: DEFECTIVE_CARD
        reference: 7dc5377e-b90b-3401-b9a5-5dd094893e28
        retain_pin: true
        reported_at: '2020-01-13T09:56:24.000Z'
      properties:
        line_1:
          description: The name to print on the new card. For Replace flow only.
          type: string
        line_2:
          description: Additional optional embossing line. For Replace flow only.
          type: string
        reason:
          description: The reason why the customer is requesting a replacement card.
          default: CARDHOLDER_REQUEST
          enum:
            - CARDHOLDER_REQUEST
            - COUNTERFEIT_PLASTIC
            - DEFECTIVE_CARD
            - EXPIRES_SOON
            - LOST
            - ONLINE_TRANSACTION_FRAUD
            - PREVENTIVE_BLOCK
            - STOLEN
            - SUSPECTED_MERCHANT_FRAUD
          type: string
        reference:
          description: Randomly generated UUID that acts as an idempotency key.
          default: 718578ca-fb20-4c3e-9f07-c86b21711b2f
          type: string
        retain_pin:
          description: >-
            Indicates whether or not the new card should use the same PIN as the
            old one. For Replace and Reissue flows, default is true. For
            Lost/Stolen, default is false. 
          type: boolean
        reported_at:
          description: >-
            For Lost/Stolen flow only. Timestamp from when the card was reported
            (ISO 8601 format).
          type: string
          format: date-time
    Solaris_Decorators_CardReplacementResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the card.
          example: 2b890724292e287935420a2ca13ae7f9mcrd
        status:
          example: PROCESSING
          allOf:
            - $ref: '#/components/schemas/Solaris_Decorators_CardStatusEnum'
    LostStolenCardRequest:
      type: object
      description: The content of the request
      example:
        loss_reason: HOME_INVASION
        lost_at: '2020-01-13T09:56:24.000Z'
        order_replacement: false
        retain_pin: false
      required:
        - loss_reason
        - lost_at
      properties:
        loss_reason:
          type: string
          enum:
            - COUNTERFEIT_PLASTIC
            - HOME_INVASION
            - LEFT_AT_MERCHANT
            - LOST
            - MAIL_ORDER
            - MAILBOX_THEFT
            - MISSING_AT_HOME
            - PICK_POCKET
            - PREVENTIVE_BLOCK
            - SUSPECTED_MERCHANT_FRAUD
          description: The customer's reason for reporting the card as lost or stolen.
        lost_at:
          description: Timestamp from when the card was lost (ISO 8601 format).
          type: string
          format: date-time
        order_replacement:
          description: >-
            Boolean to indicate whether or not to order the customer a
            replacement card in the same API request. Note that you can set this
            to `false` and order the customer a new card in a separate API call,
            e.g., if they lost a tokenized card.
          type: boolean
        retain_pin:
          description: >-
            (If ordering a replacement card right away) Boolean to indicate
            whether the new card should retain the same PIN.
          type: boolean
    Solaris_Decorators_LostStolenResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the lost/stolen card incident.
          example: a2f0129cb1194a688dace3b678a85268
        card_id:
          type: string
          description: ID of the card that was lost or stolen.
          example: 8febdba4912a747808ccc6f95f82aaa4
        loss_reason:
          type: string
          description: The customer's reason for reporting the card as lost or stolen.
          enum:
            - COUNTERFEIT_PLASTIC
            - HOME_INVASION
            - LEFT_AT_MERCHANT
            - LOST
            - MAIL_ORDER
            - MAILBOX_THEFT
            - MISSING_AT_HOME
            - PICK_POCKET
            - PREVENTIVE_BLOCK
            - SUSPECTED_MERCHANT_FRAUD
          example: MAILBOX_THEFT
        lost_at:
          type: string
          description: >-
            UTC timestamp from when the customer reported the card as lost or
            stolen.
          example: '2023-05-23T12:56:45+00:00'
        card_status:
          example: STOLEN
          allOf:
            - $ref: '#/components/schemas/Solaris_Decorators_CardStatusEnum'
    Solaris_Decorators_EncryptedVirtualCard:
      type: object
      properties:
        data:
          type: string
          description: >-
            The JWE-encrypted card details. Use one of the following libraries
            for decryption: <ul>
            <li>[Android](https://connect2id.com/products/nimbus-jose-jwt/examples/jwe-with-preset-cek)</li>
            <li>[iOS](https://github.com/airsidemobile/JOSESwift#jwe-encryption-and-decryption)</li>
            </ul>
          example: >-
            W2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awaW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awaW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awaW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awaW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awaW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awa
    GetPinApiResponse:
      title: GetPinApiResponse
      required:
        - kid
        - kty
        - use
        - alg
        - 'n'
        - e
      type: object
      properties:
        kid:
          type: string
          description: >-
            ID of the returned public key. Use this value for the `kid`
            attribute when encrypting the PIN in JWE format.
        kty:
          type: string
          enum:
            - RSA
          description: >-
            The key type parameter identifies the cryptographic algorithm family
            used with the key. Only `RSA` is supported.
        use:
          type: string
          enum:
            - enc
          description: >-
            Specifies the intended use of the key. Values defined by this
            specification are `sig` (signature) and `enc` (encryption). This
            property is case-sensitive.
        alg:
          type: string
          enum:
            - RS256
          description: >-
            Specifies the algorithm intended for use with the key. For this
            property, you should either use an algorithm registered in the [IANA
            JSON Web Signature and Encryption Algorithms
            registry](https://www.iana.org/assignments/jose/jose.xhtml#web-signature-encryption-algorithms)
            or a value that contains a collision-resistant name. This value is a
            case-sensitive ASCII string.
        'n':
          type: string
          description: >-
            Contains the modulus value for the RSA public key, represented as
            the Base64URL encoding of the value's big-endian representation.
        e:
          type: string
          description: >-
            Contains the exponent value for the RSA public key, represented as
            the Base64URL encoding of the value's big-endian representation.
    Error401:
      type: object
      properties:
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        status:
          type: string
          example: '401'
        code:
          type: string
          example: token_required
        title:
          type: string
        detail:
          type: string
          example: Bearer Token is not provided
    Error404-2:
      type: object
      properties:
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        status:
          type: string
          example: '404'
        code:
          type: string
          example: model_not_found
        title:
          type: string
          example: Model Not Found
        detail:
          type: string
          example: >-
            Couldn't find 'Solaris::Identification' for id
            'bbbcccfff388923eb899a5852df6cidt'.
    PinUpdateRequest:
      title: PinUpdateRequest
      required:
        - device_id
        - encrypted_pin
        - key_id
        - signature
      type: object
      properties:
        device_id:
          type: string
          description: ID of the customer's previously bound device.
        device_data:
          type: string
          description: >-
            Encoded device fingerprint generated using the [Seon
            SDK](https://seon.io). See the [device monitoring
            guide](https://docs.solarisgroup.com/guides/kyc/device-monitoring) 
            for more information about generating this value.
        encrypted_pin:
          type: string
          description: >-
            The encrypted PIN value (JWE in compact serialization). See the
            description of this method for instructions on how to produce this
            value.
        key_id:
          type: string
          description: >-
            Solaris' public RSA key ID. Returned as the `kid` property by the
            `GET Retrieve latest public key` endpoint.
        signature:
          type: string
          description: >-
            The signature of the `encrypted_pin` created with the device binding
            key.
    PinUpdateSCARequest:
      title: PinUpdateSCARequest
      required:
        - encrypted_pin
        - key_id
      type: object
      properties:
        encrypted_pin:
          type: string
          description: >-
            The encrypted PIN value (JWE in compact serialization). See the
            description of this method for instructions on how to produce this
            value.
        key_id:
          type: string
          description: >-
            Solaris' public RSA key ID. Returned as the `kid` property by the
            `GET Retrieve latest public key` endpoint.
    ChangeRequestResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the change request.
          example: d6c778822b2d7bd3b778935bcfd0d1d3csc
        status:
          type: string
          description: The current status of the change request.
          example: CONFIRMATION_REQUIRED
          enum:
            - ACCEPTED
            - AUTHORIZATION_REQUIRED
            - CONFIRMATION_REQUIRED
            - COMPLETED
            - FAILED
        updated_at:
          type: string
          description: UTC timestamp from the last time the change request was updated.
          format: date-time
          example: '2022-04-21T13:59:52+00:00'
        url:
          type: string
          description: URL to use to authorize the change request.
          example: https://example.com/authorize
    Scope:
      type: string
      description: The scope of the card spending control.
      enum:
        - CARD
        - CARDHOLDER
        - ACCOUNT
        - BUSINESS
        - PARTNER
        - PARTNER_CARDS
        - BUSINESS_CARDS
        - ACCOUNT_CARDS
        - CARDHOLDER_CARDS
        - NON_BUSINESS_CARDS
        - PARTNER_CARDHOLDERS
    Origin:
      type: string
      description: >-
        Indicates whether the card spending control was created by Solarisbank
        or by you.
      enum:
        - SOLARISBANK
        - PARTNER
    DimensionType:
      type: string
      description: The type of transactions to be included/excluded.
      enum:
        - MERCHANT_CATEGORY
        - POS_ENTRY_MODE
        - TRANSACTION_TYPE
        - MERCHANT_COUNTRY
        - ACQUIRER_ID
        - MERCHANT_ID
        - ALL_TYPES
    ListRule:
      required:
        - dimension
        - type
      type: object
      properties:
        type:
          $ref: '#/components/schemas/DimensionType'
        dimension:
          uniqueItems: true
          type: array
          description: The dimension of transactions to be included/excluded.
          items:
            type: string
            description: The value of the dimension rule.
            example: '5411'
    CardControlListResponse:
      required:
        - id
        - scope
        - scope_id
        - origin
        - idempotency_key
      type: object
      properties:
        id:
          type: string
          description: ID of the created card controls list.
          example: 7a911b90-0109-11ec-9a03-0242ac130003
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        origin:
          $ref: '#/components/schemas/Origin'
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        inclusion:
          $ref: '#/components/schemas/ListRule'
        exclusion:
          $ref: '#/components/schemas/ListRule'
    CreateCardControlListRequest:
      required:
        - scope
        - scope_id
        - idempotency_key
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        inclusion:
          $ref: '#/components/schemas/ListRule'
        exclusion:
          $ref: '#/components/schemas/ListRule'
    ErrorDetail:
      type: object
      properties:
        id:
          type: string
          description: ID of the corresponding request
          example: a1aeac6a-00ff-11ec-9a03-0242ac130003
        status:
          type: integer
          format: int32
          description: HTTP status code
          example: 404
        code:
          type: string
          description: Code of the error
          example: not_found_card_control
        title:
          type: string
          description: Title of the error
          example: Not found card control
        detail:
          type: string
          description: Details of the error
          example: Not found card control <b764d818-de07-4e0a-975f-91f13a51e121>
    Error-2:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetail'
    Period:
      type: string
      description: The time period in which to restrict transactions.
      enum:
        - HOURLY
        - DAILY
        - WEEKLY
        - MONTHLY
        - MINUTES_60
        - HOURS_24
        - DAYS_7
        - DAYS_30
        - TRANSACTION
    SpendingLimitRule:
      description: Amount or count limit - only one could be used.
      required:
        - dimension
        - type
        - period
      type: object
      properties:
        type:
          $ref: '#/components/schemas/DimensionType'
        dimension:
          uniqueItems: true
          type: array
          description: The dimension of transactions to be restricted.
          items:
            type: string
            description: The value of the dimension rule.
            example: '5411'
        period:
          $ref: '#/components/schemas/Period'
        amount:
          type: integer
          description: >-
            The maximum amount (in Euro cents) that customers may spend under
            this card spending limit control. **Note**: You cannot set `amount`
            and `count` together under the same scope ID.
          example: 10000
        count:
          type: integer
          description: >-
            The maximum number of transactions that customers may conduct under
            this card spending limit control.  **Note**: You cannot set `amount`
            and `count` together under the same scope ID.
    CardControlSpendingLimitResponse:
      required:
        - id
        - scope
        - scope_id
        - origin
        - idempotency_key
        - limit
      type: object
      properties:
        id:
          type: string
          description: ID of the created card spending limit control.
          example: 7a911b90-0109-11ec-9a03-0242ac130003
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        origin:
          $ref: '#/components/schemas/Origin'
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        limit:
          $ref: '#/components/schemas/SpendingLimitRule'
    CreateCardControlSpendingLimitRequest:
      required:
        - scope
        - scope_id
        - idempotency_key
        - limit
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        limit:
          $ref: '#/components/schemas/SpendingLimitRule'
    UtilizedSpendingLimitRule:
      required:
        - amount
        - count
      type: object
      properties:
        amount:
          type: integer
          description: >-
            The amount that has been spent under this card spending limit
            control to date.
          example: 10000
        count:
          type: integer
          description: >-
            The number of transactions that have been conducted under this card
            spending limit control to date.
          example: 5
    CardControlSpendingLimitShowResponse:
      required:
        - id
        - scope
        - scope_id
        - origin
        - idempotency_key
        - limit
        - utilized_limit
      type: object
      properties:
        id:
          type: string
          description: ID of the card spending limit control.
          example: 7a911b90-0109-11ec-9a03-0242ac130003
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        origin:
          $ref: '#/components/schemas/Origin'
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        limit:
          $ref: '#/components/schemas/SpendingLimitRule'
        utilized_limit:
          $ref: '#/components/schemas/UtilizedSpendingLimitRule'
    DimensionCondition:
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/DimensionType'
        dimension:
          uniqueItems: true
          type: array
          description: >-
            Array containing dimensions to include in the spending limit
            control.  See the
            [guide](https://docs.solarisgroup.com/guides/cards/card-spending-controls/#list-of-dimensions)
            for more information about dimensions.
          items:
            type: string
            description: The value of the dimension to include.
            example: '5411'
        excluded_dimension:
          uniqueItems: true
          type: array
          description: >-
            Array containing dimensions to exclude from the spending limit
            control.  See the
            [guide](https://docs.solarisgroup.com/guides/cards/card-spending-controls/#list-of-dimensions)
            for more information about dimensions.
          items:
            type: string
            description: The value of the dimension to exclude.
            example: '5411'
    SpendingLimitRuleV2:
      description: >-
        Object containing the properties of the spending limit control. Note
        that you must set either `amount` or `count`; you cannot set both.
      required:
        - type
        - period
      type: object
      properties:
        period:
          $ref: '#/components/schemas/Period'
        amount:
          type: integer
          description: >-
            The maximum amount (in Euro cents) that customers may spend under
            this card spending limit control. **Note**: You cannot set `amount`
            and `count` together under the same scope ID.
          example: 10000
        count:
          type: integer
          description: >-
            The maximum number of transactions that customers may conduct under
            this card spending limit control.  **Note**: You cannot set `amount`
            and `count` together under the same scope ID.
        conditions:
          type: array
          description: >-
            Object containing the dimensions to either include or exclude in
            this control. Note that you must use either `dimension` or
            `excluded_dimension`; you cannot use both.
          items:
            $ref: '#/components/schemas/DimensionCondition'
    CardControlSpendingLimitResponseV2:
      required:
        - id
        - scope
        - scope_id
        - origin
        - idempotency_key
        - limit
      type: object
      properties:
        id:
          type: string
          description: ID of the created card spending limit control.
          example: 7a911b90-0109-11ec-9a03-0242ac130003
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        origin:
          $ref: '#/components/schemas/Origin'
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        limit:
          $ref: '#/components/schemas/SpendingLimitRuleV2'
        positive_balance_limit:
          type: boolean
          description: >-
            It is set to true if the limit field represents positive balance
            limit. It is an optional field. Default value is false.
    CreateCardControlSpendingLimitRequestV2:
      required:
        - scope
        - scope_id
        - idempotency_key
        - limit
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        limit:
          $ref: '#/components/schemas/SpendingLimitRuleV2'
        positive_balance_limit:
          type: boolean
          description: >-
            It is set to true if the limit field represents positive balance
            limit. It is an optional field. Default value is false.
    CardControlSpendingLimitShowResponseV2:
      required:
        - id
        - scope
        - scope_id
        - origin
        - idempotency_key
        - limit
        - utilized_limit
      type: object
      properties:
        id:
          type: string
          description: ID of the card spending limit control.
          example: 7a911b90-0109-11ec-9a03-0242ac130003
        scope:
          $ref: '#/components/schemas/Scope'
        scope_id:
          type: string
          description: >-
            ID of the resource that corresponds with the `scope`. For example,
            if the `scope` is `PARTNER`, then the `scope_id` would be your
            partner ID. For `business`, it would be the business ID.
          example: 54e06604b0cf825810bec508cc1f2dc7mcrd
        origin:
          $ref: '#/components/schemas/Origin'
        idempotency_key:
          type: string
          format: uuid
          example: 504f6816-f7b5-4965-bc35-69acadc9f5c7
          description: >-
            A randomly generated UUID which the server uses to recognize
            subsequent retries of the same request.
        limit:
          $ref: '#/components/schemas/SpendingLimitRuleV2'
        utilized_limit:
          $ref: '#/components/schemas/UtilizedSpendingLimitRule'
        positive_balance_limit:
          type: boolean
          description: >-
            It is set to true if the limit field represents positive balance
            limit. It is an optional field. Default value is false.
    Solaris_API_Serializers_WhitelistCardFraudCaseResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the fraud case.
          example: 154dca58bb1b5c8701039fa6514ffc66frdcs
        resolution:
          type: string
          description: The current status of the fraud case.
          example: WHITELISTED
          enum:
            - CONFIRMED
            - PENDING
            - TIMEOUT
            - WHITELISTED
        whitelisted_until:
          type: string
          description: >-
            Timestamp indicating how long transactions will be whitelisted for
            the given card (i.e., 10 minutes after calling the endpoint).
          example: '2020-05-05T11:54:26Z'
    Solaris_API_Serializers_ConfirmCardFraudCaseResponse:
      type: object
      properties:
        id:
          type: string
          description: ID of the fraud case.
          example: 154dca58bb1b5c8701039fa6514ffc66frdcs
        resolution:
          type: string
          description: The current status of the fraud case.
          example: CONFIRMED
          enum:
            - CONFIRMED
            - PENDING
            - TIMEOUT
            - WHITELISTED
    error:
      type: object
      required:
        - errors
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: A unique identifier for this error message.
                example: b805c37f-75e9-4445-974c-12d28e7584ee
              status:
                type: integer
                description: >-
                  The HTTP status code of the response (typically in the range
                  4xx–5xx).
                example: 400
              code:
                type: string
                description: A machine-readable representation of the error type.
                example: invalid_json
              title:
                type: string
                description: The human-readable name of the error type.
                example: Invalid JSON
              detail:
                type: string
                description: A human-readable description of the error.
                example: The provided JSON was not properly formatted.
            example:
              id: b805c37f-75e9-4445-974c-12d28e7584ee
              status: 400
              code: invalid_json
              title: Invalid JSON
              detail: The provided JSON was not properly formatted.
    model_not_found_error:
      allOf:
        - $ref: '#/components/schemas/error'
        - type: object
          example:
            errors:
              - id: b805c37f-75e9-4445-974c-12d28e7584ee
                status: 404
                code: model_not_found
                title: Model Not Found
                detail: Couldn't find 'Account' for id '??????????acc'.
    internal_error:
      allOf:
        - $ref: '#/components/schemas/error'
        - type: object
          example:
            errors:
              - id: b805c37f-75e9-4445-974c-12d28e7584ee
                status: 500
                code: generic_error
                title: Generic Error
                detail: There was an error.
    Solaris_API_Test3dsTransaction_Payload:
      title: Test 3DS
      required:
        - merchant_name
        - purchase_currency
        - purchase_amount
      type: object
      properties:
        merchant_name:
          type: string
          description: The name of the merchant.
        purchase_currency:
          type: string
          description: The currency used for the purchase.
        purchase_amount:
          type: integer
          description: The purchase amount (in Euro cents).
    Solaris_API_Test3dsTransaction_Response:
      type: object
      properties:
        html:
          type: string
          description: The HTML for the 3DS challenge screen.
          example: <html>...</html>
    Authorization:
      required:
        - amount
        - transaction_amount
      type: object
      properties:
        amount:
          type: string
          format: integer
          example: '000000004023'
        transaction_amount:
          type: string
          format: integer
          example: '000000004023'
    TransactionSimulatorRequest:
      required:
        - type
        - authorization
        - transaction_currency
        - pos_entry_mode
        - merchant_category_code
        - acquirer_id
        - merchant_id
        - approval_code
        - merchant_name
        - merchant_city
        - merchant_country
      type: object
      properties:
        type:
          type: string
          description: The type of transaction.
          enum:
            - PURCHASE
            - CASH_ATM
            - OCT
        authorization:
          description: The amount of the card authorization.
          allOf:
            - $ref: '#/components/schemas/Authorization'
        transaction_currency:
          type: string
          description: Currency code of the transaction.
          example: USD
        pos_entry_mode:
          type: string
          description: The POS entry mode used to complete the transaction.
          enum:
            - CHIP
            - CONTACTLESS
            - MAG_STRIPE
            - MANUAL_PAN_ENTRY
            - UNKNOWN
        merchant_category_code:
          type: string
          format: integer
          description: The merchant category code (should be 4 digits).
          example: '5411'
        acquirer_id:
          type: string
          format: integer
          description: The acquirer ID (up to 6 digits).
          example: '123456'
        approval_code:
          type: string
          format: integer
          description: The approval code (should be 6 digits).
          example: '053630'
        terminal_id:
          type: string
          format: integer
          description: Terminal ID (should be 8 digits).
          example: '12345678'
        merchant_id:
          type: string
          format: integer
          description: Merchant ID (should be 15 digits).
          example: '123456789101112'
        merchant_name:
          type: string
          description: The merchant's name (up to 24 characters).
          example: Solarisbank AG
        merchant_city:
          type: string
          description: The merchant's city (up to 13 characters).
          example: Berlin
        merchant_country:
          type: string
          format: ISO 3166 alpha-2
          description: The merchant's country (ISO 3166 two-character code).
          example: DE
    TransactionSimulatorResponse:
      required:
        - transaction_key
      type: object
      properties:
        transaction_key:
          type: string
          description: ID of the created authorization.
          example: '100000000142424'
    Error400-2:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        status:
          type: integer
          example: 400
        error:
          type: string
          example: Bad Request
        message:
          type: string
          example: ISO2 Country Code is an invalid
        path:
          type: string
          example: >-
            /v1/cards/847dc1d0144a3d923cadf2c62a2839d0mcrd/simulator/transactions
    Error404-3:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        status:
          type: integer
          example: 404
        error:
          type: string
          example: Not Found
        message:
          type: string
          example: 404 NOT_FOUND
          description: card not found or not related to the partner
        path:
          type: string
          example: >-
            /v1/cards/847dc1d0144a3d923cadf2c62a2839d0mcrd/simulator/transactions
    Error500-2:
      type: object
      properties:
        timestamp:
          type: string
          format: date-time
        status:
          type: integer
          example: 500
        error:
          type: string
          example: Internal Server Error
        message:
          type: string
          example: 503 Service Temporarily Unavailable
        path:
          type: string
          example: >-
            /v1/cards/847dc1d0144a3d923cadf2c62a2839d0mcrd/simulator/transactions
    Settlement:
      required:
        - transaction_amount
        - amount
        - transaction_currency
      type: object
      properties:
        amount:
          type: string
          format: integer
          example: '9'
          description: The transaction amount + applicable fees.
        transaction_amount:
          type: string
          format: integer
          example: '8'
          description: The original transaction amount.
        transaction_currency:
          type: string
          example: EUR
          description: The currency used in the transaction.
    TransactionSimulatorStandaloneSettleRequest:
      required:
        - settlement
        - type
        - pos_entry_mode
        - merchant_category_code
        - acquirer_id
        - approval_code
        - terminal_id
        - merchant_id
        - merchant_name
        - merchant_city
        - merchant_country
      type: object
      properties:
        settlement:
          description: The type of settlement.
          allOf:
            - $ref: '#/components/schemas/Settlement'
        type:
          type: string
          description: The type of transaction.
          enum:
            - OCT
            - PURCHASE
            - PURCHASE_REVERSAL
            - CASH_ATM_REVERSAL
            - CASH_MANUAL_REVERSAL
            - CASH_ATM
            - CASH_MANUAL
            - CREDIT_PRESENTMENT
            - DEBIT_PRESENTMENT
            - FORCE_POST_TRANSACTION
            - DISPUTE_TRANSACTION
            - FRAUD_TRANSACTION
        pos_entry_mode:
          type: string
          description: The POS entry mode used to complete the transaction.
          enum:
            - UNKNOWN
            - MAG_STRIPE
            - CHIP
            - MANUAL_PAN_ENTRY
            - CONTACTLESS
            - CARD_NOT_PRESENT
        merchant_category_code:
          type: string
          format: integer
          description: The merchant category code (should be 4 digits).
          example: '5411'
        acquirer_id:
          type: string
          format: integer
          description: The acquirer ID (up to 6 digits).
          example: '123456'
        approval_code:
          type: string
          format: integer
          description: The approval code (should be 6 digits).
          example: '053630'
        terminal_id:
          type: string
          format: integer
          description: Terminal ID (should be 10 digits).
          example: '1234567890'
        merchant_id:
          type: string
          format: integer
          description: Merchant ID (should be 15 digits).
          example: '123456789101112'
        merchant_name:
          type: string
          description: The merchant's name (max 25 characters).
          example: Solarisbank AG
        merchant_city:
          type: string
          description: The merchant's city (max 13 characters).
          example: Berlin
        merchant_country:
          type: string
          format: ISO 3166 alpha-2
          description: The merchant's country (ISO 3166 two-character code).
          example: DE
    TransactionSimulatorSettleRequest:
      required:
        - settlement
      type: object
      properties:
        settlement:
          description: The type of settlement.
          allOf:
            - $ref: '#/components/schemas/Settlement'
    AuthorizationDeclineReasonDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
        message:
          type: string
    TransactionEventDto:
      type: object
      properties:
        source:
          type: string
          enum:
            - AUTHORIZATION
            - AUTHORIZATION_DECLINE
            - CREDIT_TRANSACTION
            - SETTLEMENT
        acquirer_id:
          type: string
          example: '12345678901'
        amount:
          type: string
          format: int64
          example: '-20000'
        approval_code:
          type: string
          example: '667163'
        card_identifier:
          type: string
          example: '503000477045'
        card_transaction_id:
          type: string
          format: uuid
          example: 6e3cec44-755c-4e79-a3d7-b90890188289
        card_id:
          type: string
          example: 4474c121fa1444286e42406543ca162bmcrd
        core_banking_reservation_id:
          type: string
          format: uuid
          example: 345dff59-229f-5972-bb8d-534feee37c2b
        core_banking_transaction_id:
          type: string
          example: fbcd8795-f129-5cb5-9759-222a7d56639a
        created_at:
          type: string
          format: date-time
        iban:
          type: string
          example: DE112222222223333333333
        indicators:
          type: string
          items:
            type: string
            example: RESERVED_LESS_THAN_SETTLED
        merchant_category_code:
          type: string
          example: '0121'
        merchant_id:
          type: string
          example: '009399565'
        merchant_name:
          type: string
          example: foo
        merchant_town:
          type: string
          example: bar
        origin_created_at:
          type: string
          format: date-time
        origin_updated_at:
          type: string
          format: date-time
        partner_id:
          type: string
          example: d0abb30f450a42d54bfef78d1e021e6bcpar
        pos_entry_mode:
          type: string
          example: UNKNOWN
        status:
          type: string
          example: SETTLED
        terminal_id:
          type: string
          example: '1.1'
        transaction_amount:
          type: string
          format: int64
          example: '20000'
        transaction_key:
          type: string
          example: '100000000667163'
        transaction_type:
          type: string
          example: PURCHASE
        interchange_fee_amount:
          type: string
          format: int64
          example: '20000'
        id:
          type: string
          format: uuid
          example: 4bf431a0-9718-4cb5-85ce-c0515e472968
        updated_at:
          type: string
          format: date-time
        transaction_currency_code:
          type: string
        fx_rate:
          type: string
          format: int64
          example: '2.0'
        merchant_country_code:
          type: string
          example: merchant_country_code
        acquirer_reference_number:
          type: string
        transaction_country_code:
          type: string
          example: transaction_country_code
        card_holder_authentication_verification_value:
          type: string
        token_provider:
          type: string
          example: APPLE
        token_type:
          type: string
          example: '02'
        token_number:
          type: string
          example: '4113112380202020'
        decline_reasons:
          type: array
          items:
            $ref: '#/components/schemas/AuthorizationDeclineReasonDto'
    CardTransactionDetailDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: ID of the transaction.
          example: null
        created_at:
          type: string
          format: date-time
          description: UTC timestamp from when the transaction was created.
          example: 2024-07-30T13:56:54+0000
        indicators:
          type: string
          description: Indicator related to the transaction.
          nullable: true
          enum:
            - PREMATURELY_RESOLVED_RESERVATIONS_MATCHED
            - RESERVED_LESS_THAN_SETTLED
            - SETTLED_BUT_NOT_RESERVED_BEFORE
        transaction_events:
          type: array
          description: Array of events related to the transaction.
          items:
            $ref: '#/components/schemas/TransactionEventDto'
    CardDeliveryTrackingResponseItem:
      title: CardDeliveryTrackingResponseItem
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the card tracking record.
        card_id:
          type: string
          description: ID of the card.
        shipping_provider:
          type: string
          description: The shipping company that shipped the card.
        date_of_shipment:
          type: string
          format: date
          description: >-
            (Conditional field) Contains the date when the card was shipped. If
            the card hasn't shipped, then this property will be empty.
        shipping_tracking_information:
          type: string
          description: >-
            (Conditional field) Contains the tracking code provided by the
            shipping company. If the card hasn't shipped, or if there was an
            error with the shipment, then this property will be empty.
        message:
          type: string
          description: >-
            (Conditional field) Contains the error message from the provider in
            case there was a problem. If there was an error, then the
            `shipping_tracking_information` property will be empty.
        country_code:
          type: string
          description: >-
            (Conditional field) Country ISO Code to represent countries,
            dependent territories, and special areas of geographical interest.
        has_picture:
          type: boolean
          description: (Conditional field) Flag that shows card has the picture or not.
