{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/pagopa/main/json-schema/pagopa-transaction-result-request-schema.json",
  "title": "TransactionResultRequest",
  "description": "Callback api transaction outcome request body",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/pagopa-ecommerce-redirect-openapi.yml#/components/schemas/TransactionResultRequest",
  "required": [
    "idPsp",
    "idPSPTransaction",
    "outcome",
    "details"
  ],
  "type": "object",
  "properties": {
    "idPsp": {
      "type": "string",
      "description": "PSP identifier as received in redirections url request"
    },
    "idPSPTransaction": {
      "type": "string",
      "description": "Unique PSP transaction identifier"
    },
    "outcome": {
      "$ref": "#/$defs/AuthorizationOutcome"
    },
    "details": {
      "$ref": "#/$defs/TransactionResultDetails"
    }
  },
  "$defs": {
    "AuthorizationOutcome": {
      "enum": [
        "OK",
        "KO",
        "CANCELED",
        "EXPIRED",
        "ERROR"
      ],
      "type": "string",
      "description": "Transaction outcome enumeration.\nThe outcome can assume the following values:\n* OK -> `Authorization completed successfully`\n* KO -> `Authorization KO (for example missing funds for transaction)`\n* CANCELED -> `User canceled the authorization process`\n* EXPIRED -> `Authorization process has not been completed before timeout set for the operation`\n* ERROR -> `An unexpected error occurred during authorization process`\n"
    },
    "TransactionAuthorizedOutcomeDetails": {
      "required": [
        "timestampOperation",
        "authorizationCode"
      ],
      "type": "object",
      "properties": {
        "timestampOperation": {
          "type": "string",
          "description": "Payment date and time",
          "format": "date-time"
        },
        "authorizationCode": {
          "type": "string",
          "description": "Unique PSP authorization code"
        }
      }
    },
    "TransactionDeniedOutcomeDetails": {
      "required": [
        "errorCode"
      ],
      "type": "object",
      "properties": {
        "errorCode": {
          "type": "string",
          "description": "Authorization error code"
        }
      }
    },
    "TransactionResultDetails": {
      "required": [
        "outcome"
      ],
      "type": "object",
      "oneOf": [
        {
          "$ref": "#/$defs/TransactionAuthorizedOutcomeDetails"
        },
        {
          "$ref": "#/$defs/TransactionDeniedOutcomeDetails"
        }
      ]
    }
  }
}