> ## Documentation Index
> Fetch the complete documentation index at: https://docs.payven.com.tr/llms.txt
> Use this file to discover all available pages before exploring further.

# Test kartını güncelle



## OpenAPI

````yaml /api-reference/sanal-pos/openapi.json put /api/v1/test-cards/{id}
openapi: 3.0.4
info:
  title: Payven Sanal POS API
  description: >-
    Payven Sanal POS — çoklu banka kart ödemeleri, 3D Secure, akıllı
    yönlendirme, mutabakat ve webhook altyapısı.
  termsOfService: https://payven.com.tr/sozlesmeler
  contact:
    name: Payven Developer Support
    url: https://docs.payven.com.tr
    email: destek@payven.com.tr
  license:
    name: Payven API License
    url: https://payven.com.tr/sozlesmeler/api-lisansi
  version: '1.0'
servers:
  - url: https://vpos-sandbox.payven.com.tr
    description: Sandbox
  - url: https://vpos.payven.com.tr
    description: Production
security:
  - bearerAuth: []
tags:
  - name: ApiRequestLogs
    x-displayName: API İstek Kayıtları
  - name: CancellationRequests
    x-displayName: İptal Talepleri
  - name: Chargebacks
    x-displayName: Chargeback
  - name: CheckoutSessions
    x-displayName: Hosted Checkout
  - name: ConnectorConfigurations
    x-displayName: Konnektör Konfigürasyonları
  - name: ConnectorErrorCodes
    x-displayName: Konnektör Hata Kodları
  - name: Connectors
    x-displayName: Konnektörler
  - name: Dashboard
    x-displayName: Dashboard
  - name: Health
    x-displayName: Sağlık
  - name: MerchantBankProfiles
    x-displayName: Bayi Banka Profilleri
  - name: Payments
    x-displayName: Ödemeler
  - name: Reconciliations
    x-displayName: Mutabakat
  - name: Refunds
    x-displayName: İadeler
  - name: RoutingRules
    x-displayName: Yönlendirme Kuralları
  - name: Settings
    x-displayName: Ayarlar
  - name: Settlements
    x-displayName: Settlement
  - name: SimpleRoutingRules
    x-displayName: Basit Yönlendirme Kuralları
  - name: TestCards
    x-displayName: Test Kartları
  - name: Trace
    x-displayName: Trace
  - name: Transactions
    x-displayName: İşlemler
  - name: Webhooks
    x-displayName: Webhook'lar
paths:
  /api/v1/test-cards/{id}:
    put:
      tags:
        - TestCards
      summary: Test kartını güncelle
      operationId: updateTestCard
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/UpdateTestCardRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestCardDto'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ProblemDetails'
                  - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ProblemDetails'
                  - $ref: '#/components/schemas/HttpValidationProblemDetails'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/ServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
components:
  schemas:
    UpdateTestCardRequest:
      type: object
      properties:
        id:
          type: string
          format: uuid
        card_holder_name:
          type: string
          nullable: true
        expiry_month:
          type: integer
          format: int32
        expiry_year:
          type: integer
          format: int32
        cvv:
          type: string
          nullable: true
        card_schema_type:
          allOf:
            - $ref: '#/components/schemas/CardSchemaType'
        card_type:
          allOf:
            - $ref: '#/components/schemas/CardType'
        card_brand:
          allOf:
            - $ref: '#/components/schemas/CardBrand'
        expected_result:
          allOf:
            - $ref: '#/components/schemas/TestCardExpectedResult'
        custom_error_code:
          type: string
          nullable: true
        custom_error_message:
          type: string
          nullable: true
        simulated_delay_ms:
          type: integer
          format: int32
          nullable: true
        label:
          type: string
          nullable: true
      additionalProperties: false
    TestCardDto:
      allOf:
        - $ref: '#/components/schemas/ExtraPropertiesDto'
        - type: object
          properties:
            id:
              type: string
              format: uuid
            masked_card_number:
              type: string
              nullable: true
            card_number:
              type: string
              nullable: true
            card_holder_name:
              type: string
              nullable: true
            expiry_month:
              type: integer
              format: int32
            expiry_year:
              type: integer
              format: int32
            cvv:
              type: string
              nullable: true
            card_schema_type:
              allOf:
                - $ref: '#/components/schemas/CardSchemaType'
            card_type:
              allOf:
                - $ref: '#/components/schemas/CardType'
            card_brand:
              allOf:
                - $ref: '#/components/schemas/CardBrand'
            expected_result:
              allOf:
                - $ref: '#/components/schemas/TestCardExpectedResult'
            custom_error_code:
              type: string
              nullable: true
            custom_error_message:
              type: string
              nullable: true
            simulated_delay_ms:
              type: integer
              format: int32
              nullable: true
            label:
              type: string
              nullable: true
            is_active:
              type: boolean
            created:
              type: string
              format: date-time
            last_modified:
              type: string
              format: date-time
          additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    HttpValidationProblemDetails:
      allOf:
        - $ref: '#/components/schemas/ProblemDetails'
        - type: object
          properties:
            errors:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
              nullable: true
          additionalProperties: {}
    CardSchemaType:
      enum:
        - Visa
        - MasterCard
        - Amex
        - Troy
        - UnionPay
        - Proprietary
      type: string
    CardType:
      enum:
        - Credit
        - Debit
        - Prepaid
      type: string
    CardBrand:
      enum:
        - Bonus
        - Axess
        - World
        - Maximum
        - Cardfinans
        - Paraf
        - Advantage
        - Bankkart
        - Other
      type: string
    TestCardExpectedResult:
      enum:
        - Success
        - Declined
        - InsufficientFunds
        - InvalidCard
        - Timeout
        - ThreeDSecureRequired
        - RandomFailure
        - GatewayError
      type: string
    ExtraPropertiesDto:
      type: object
      properties:
        extra_properties_dict:
          type: object
          additionalProperties:
            type: string
          nullable: true
      additionalProperties: false
  responses:
    BadRequest:
      description: Geçersiz istek (eksik alan, bozuk JSON).
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          example:
            type: https://docs.payven.com.tr/errors/bad_request
            title: Geçersiz istek
            status: 400
            code: bad_request
            detail: amount.amount alanı zorunlu.
            correlation_id: 9f1c8e76-2a3b-4f12-9c8d-12cb24a8a8a8
    Unauthorized:
      description: '`Authorization` header eksik, geçersiz veya süresi dolmuş.'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          example:
            type: https://docs.payven.com.tr/errors/invalid_token
            title: Geçersiz token
            status: 401
            code: invalid_token
            detail: Access token geçersiz veya süresi dolmuş — refresh edin.
    Forbidden:
      description: Yetki yok, lisans yok veya merchant pasif.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          example:
            type: https://docs.payven.com.tr/errors/forbidden
            title: Yetki yok
            status: 403
            code: forbidden
            detail: Bu rol bu kaynağı göremez.
    Conflict:
      description: Idempotency çakışması veya geçersiz durum geçişi.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          example:
            type: https://docs.payven.com.tr/errors/idempotency_key_in_use
            title: Idempotency-Key çakışması
            status: 409
            code: idempotency_key_in_use
            detail: >-
              Bu Idempotency-Key daha önce farklı bir istek gövdesi ile
              kullanıldı.
    TooManyRequests:
      description: Rate limit aşıldı. `Retry-After` header'ına uyun.
      headers:
        Retry-After:
          description: Yeniden denemeden önce beklemeniz gereken saniye sayısı.
          schema:
            type: integer
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          example:
            type: https://docs.payven.com.tr/errors/rate_limit_exceeded
            title: İstek limiti aşıldı
            status: 429
            code: rate_limit_exceeded
    ServerError:
      description: >-
        Sunucu hatası. Exponential backoff ile tekrar deneyin (Idempotency-Key
        ile).
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          example:
            type: https://docs.payven.com.tr/errors/internal_server_error
            title: Sunucu hatası
            status: 500
            code: internal_server_error
    ServiceUnavailable:
      description: >-
        Hedef konnektör geçici olarak devre dışı (circuit breaker açık) veya
        bağımlılık servisi erişilemez.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/ProblemDetails'
          example:
            type: https://docs.payven.com.tr/errors/connector_unavailable
            title: Konnektör erişilemez
            status: 503
            code: connector_unavailable
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Identity servisinden alinan Keycloak JWT. Format: `Authorization: Bearer
        <token>`. Token alma: POST /api/v1/auth/{slug}/token

````