Solucionar problemas de errores del entorno de ejecución de políticas de XML a JSON

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

SourceUnavailable

Código de error

steps.xml2json.SourceUnavailable

Cuerpo de respuesta de error

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available",
        "detail": {
            "errorcode": "steps.xmltojson.SourceUnavailable"
        }
    }
}

Ejemplo de mensaje de error

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
        "detail": {
            "errorcode": "steps.xml2json.SourceUnavailable"
        }
    }
}

Causa

Este error se produce si la variable message o de cadena especificada en el elemento <Source> de la política XML a JSON es:

  • Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política) o
  • no se puede resolver (no está definido)

Por ejemplo, este error se produce si la política de XML a JSON se debe ejecutar en el flujo de solicitudes, pero el elemento <Source> se asigna a la variable response, que no existe en el flujo de solicitudes.

Diagnóstico

  1. Identifica la política de XML a JSON en la que se ha producido el error y el nombre de la variable que no está disponible. Puedes encontrar ambos elementos en el elemento faultstring de la respuesta de error. Por ejemplo, en el siguiente faultstring, el nombre de la política es Convert-XMLToJSON y la variable es response:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. En el XML de la política que no se ha podido convertir a JSON, comprueba que el nombre de la variable definida en el elemento <Source> coincida con el nombre de la variable identificada en la cadena de error (paso 1 anterior). Por ejemplo, la siguiente política de XML a JSON especifica una variable llamada response en el elemento <Source>, que coincide con lo que hay en faultstring:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>response</Source>
    </XMLToJSON>
    
  3. Determina si la variable utilizada en el elemento <Source> está definida y disponible en el flujo en el que se ejecuta la política de XML a JSON.

  4. Si la variable es:

    • Fuera del ámbito (no disponible en el flujo específico en el que se está ejecutando la política) o
    • no se puede resolver (no está definido)

    entonces, esa es la causa del error.

    Por ejemplo, supongamos que la política de XML a JSON que se muestra arriba se debe ejecutar en el flujo request. Recuerda que la variable response se usa en el elemento <Source> de la política de XML a JSON. La variable de respuesta solo está disponible en el flujo de respuesta.

    Como la variable de respuesta no existe en el flujo de solicitud, recibes el código de error:

    steps.xml2json.SourceUnavailable
    

Resolución

Asegúrate de que la variable definida en el elemento <Source> de la política XML a JSON fallida se haya definido y exista en el flujo en el que se ejecuta la política.

Para corregir la política de ejemplo de XML a JSON que se muestra arriba, puedes modificar el elemento <Source> para usar la variable request tal como existe en el flujo de solicitudes:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>request</Source>
</XMLToJSON>

ExecutionFailed

Código de error

steps.xml2json.ExecutionFailed

Cuerpo de respuesta de error

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Execution failed. reason: Premature end of document while parsing at line [line_number](possibly  around char [character_number])",
        "detail": {
            "errorcode": "steps.xml2json.ExecutionFailed"
        }
    }
}

Posibles motivos

Estas son las posibles causas de este error:

Causa Descripción
Falta la carga útil de entrada La carga útil de entrada (XML) está vacía.
Entrada no válida o con formato incorrecto La entrada (XML) que se ha enviado a la política XML a JSON no es válida o tiene un formato incorrecto.

Causa: falta la carga útil de entrada

En la política de XML a JSON, si el contenido (carga útil) de la variable especificada en el elemento <Source> está vacío, se produce este error.

Por ejemplo, si el elemento <Source> de la política de XML a JSON se define como una variable request o response y debe contener una carga útil XML, se produce este error si la carga útil está vacía.

Diagnóstico

  1. Identifica la política de XML a JSON en la que se ha producido el error. Puede encontrar esta información en el elemento faultstring de la respuesta de error. Por ejemplo, en el siguiente faultstring, el nombre de la política es Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. Examina el elemento <Source> del XML de la política de XML a JSON que falla y determina la variable especificada. Por ejemplo, en la siguiente política de XML a JSON, el elemento <Source> se ha definido como solicitud:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. Comprueba si la variable especificada para el elemento <Source> en la política XMLToJSON está vacía. Si está vacío, ese es el motivo del error.

    En el ejemplo de política de XML a JSON que se muestra arriba, la carga útil de la solicitud (es decir, el cuerpo de la solicitud) que envió el cliente estaba vacía.

    Por ejemplo:

    curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml"
    

    Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad virtualhosts.hostAliases de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.

    Como la carga útil de la solicitud XML está vacía, recibe el siguiente código de error:

    steps.xml2json.ExecutionFailed
    

    Este error también puede producirse si el elemento <Source> se define como respuesta, pero el servidor backend envía una carga útil vacía.

Resolución

Asegúrate de que la entrada que se ha transferido a la política de XML a JSON a través del elemento <Source> sea una carga útil XML válida y no esté vacía.

Para solucionar el problema con la política de XML a JSON de muestra, envíe una carga útil de XML válida. Por ejemplo:

  1. Crea un archivo llamado city.xml con el siguiente contenido:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. Haz la llamada a la API con un comando cURL de la siguiente manera:

    curl -v "http://your_host_alias/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
    

    Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad virtualhosts.hostAliases de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.

Causa: entrada no válida o con formato incorrecto

Si la política de XML a JSON analiza una entrada no válida o con errores de formato, se produce este error.

Por ejemplo, si se proporciona el siguiente XML no válido como entrada a la política XML a JSON,

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>

Aparecerá el siguiente error:

"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"

Diagnóstico

  1. Identifica la política de XML a JSON en la que se ha producido el error. Puede encontrar esta información en el elemento faultstring de la respuesta de error. Por ejemplo, en el siguiente faultstring, el nombre de la política es Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. Examine el elemento <Source> especificado en el archivo XML de la política de XML a JSON que ha fallado. Por ejemplo, la siguiente política de XML a JSON tiene el elemento <Source> asignado a la variable request:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. Valida si la entrada especificada en el elemento <Source> de la política XML a JSON es una carga útil XML válida. Si la entrada no es válida o tiene un formato incorrecto, ese será el motivo del error.

    En el ejemplo de política de XML a JSON que se muestra arriba, se ha enviado el siguiente XML no válido a la política Extraer variables a través del archivo city.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    

    A continuación, se muestra una llamada de API de ejemplo que muestra cómo se ha enviado la solicitud:

    curl -v "http://your_host_alias/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
    

    Donde your_host_alias es un dominio público que se usa para acceder a tus APIs, tal como se ha configurado en la propiedad virtualhosts.hostAliases de tu archivo de anulaciones. Consulta Especificar anulaciones de configuración.

    La carga útil XML enviada a la API no es válida porque el XML no tiene una etiqueta de cierre para el elemento <root>. Por lo tanto, recibes el código de error:

    steps.xml2json.ExecutionFailed
    

    Este error también puede producirse si el elemento <Source> se ha definido como response, pero la carga útil de la respuesta XML del servidor backend no es válida o tiene un formato incorrecto.

Resolución

Asegúrese de que la entrada que se ha enviado a la política de XML a JSON a través del elemento <Source> sea válida y no tenga un formato incorrecto.

Para solucionar el problema con la política de ejemplo de XML a JSON que se ha descrito anteriormente, envía una solicitud de carga útil XML válida de la siguiente manera:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>
</root>

OutputVariableIsNotAvailable

Código de error

steps.xml2json.OutputVariableIsNotAvailable

Cuerpo de respuesta de error

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

Ejemplo de mensaje de error

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

Causa

Este error se produce si la variable especificada en el elemento <Source> de la política XML a JSON es de tipo cadena y el elemento <OutputVariable> no está definido. El elemento <OutputVariable> es obligatorio cuando la variable definida en el elemento <Source> es de tipo string.

Diagnóstico

  1. Identifica la política de XML a JSON en la que se ha producido el error. Puedes encontrarlo en el elemento faultstring de la respuesta de error. Por ejemplo, en el siguiente faultstring, el nombre de la política es Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. En la validación de la política de XML a JSON fallida, comprueba si falta el <OutputVariable>.

    A continuación, se muestra un ejemplo de una política de XML a JSON en la que falta el elemento <OutputVariable>.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
    
  3. Determina el tipo de variable especificado en el elemento <Source>:

    1. Busca el código en el paquete del proxy de API donde se definió la variable por primera vez.
    2. Una vez que sepas en qué política se define y se rellena la variable por primera vez, debes determinar el tipo de esa variable de la siguiente manera:
      1. Compruebe el valor del atributo type (si está presente).
      2. Si no se incluye el atributo type, se considera que la variable es una cadena.
    3. Si el tipo de la variable es string, esa es la causa del error. Puede consultar información sobre las variables comunes y sus tipos en la referencia de variables.

    Por ejemplo, consulta la variable TrackingNumber en la política de XML a JSON anterior. Es de tipo cadena. Ahora, considere una política de asignación de mensajes que se usa para asignar un valor a una variable llamada TrackingNumber, como se muestra a continuación:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    Ten en cuenta que el tipo de variable definido mediante <AssignVariable> es una cadena. Por lo tanto, la variable TrackingNumber es de tipo cadena.

    Ahora, recuerda que la variable TrackingNumber se usa en el elemento <Source> de la política XML a JSON:

    <Source>TrackingNumber</Source>
    

    Como TrackingNumber es de tipo cadena y falta <OutputVariable> en la política, recibes el código de error:

    steps.xml2json.OutputVariableIsNotAvailable
    

Resolución

Compruebe que, si la variable especificada en el elemento <Source> de la política XMLToJSON es de tipo cadena, el elemento <OutputVariable> sea obligatorio en este caso.

Para corregir la política de XML a JSON que se ha descrito anteriormente, incluya el elemento <OutputVariable> como se muestra a continuación.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>TrackingNumber</Source>
</XMLToJSON>

InCompatibleTypes

Código de error

steps.xml2json.InCompatibleTypes

Cuerpo de respuesta de error

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

Ejemplo de mensaje de error

{
    "fault": {
        "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

Causa

Este error se produce si el tipo de la variable definida en el elemento <Source> y el elemento <OutputVariable> no son el mismo. Es obligatorio que el tipo de las variables contenidas en el elemento <Source> y en el elemento <OutputVariable> coincida.

The valid types are message and string.

Diagnóstico

  1. Identifica la política de XML a JSON en la que se ha producido el error. Puedes encontrarlo en el elemento faultstring de la respuesta de error. Por ejemplo, en el siguiente faultstring, el nombre de la política es XMLToJSON_CheckType:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. En la nota de la política de conversión de XML a JSON fallida, anota los valores especificados en <OutputVariable>.

    A continuación se muestra un ejemplo de política XMLToJSON que no tiene el elemento <OutputVariable>.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>request</OutputVariable>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
  3. Determina el tipo de variable especificado en los elementos <Source> y <OutputVariable>:

    1. Busca el código en el paquete del proxy de API, donde se definió cada una de estas variables por primera vez.
    2. Una vez que sepas en qué política se define y se rellena la variable por primera vez, debes determinar el tipo de esa variable de la siguiente manera:
      1. Compruebe el valor del atributo type (si está presente).
      2. Si no se incluye el atributo type, se considera que la variable es una cadena.
    3. Si el tipo de la variable especificada en <Source> es string y el tipo de <OutputVariable> es message (mensaje) o viceversa, ese es el motivo del error. Puede consultar información sobre las variables comunes y sus tipos en la referencia de variables.

    Por ejemplo, considere una política de asignación de mensajes que se usa para asignar un valor a una variable llamada TrackingNumber, como se muestra a continuación:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    Ten en cuenta que el tipo de variable definido mediante <AssignVariable> es una cadena. Por lo tanto, la variable TrackingNumber es de tipo cadena.

    Recuerde que la variable TrackingNumber se usa en el elemento <Source> de la política XMLToJSON:

    <Source>TrackingNumber</Source>
    

    Del mismo modo, recuerda que la variable request se usa en el elemento <OutputVariable> de la política XML a JSON:

    <OutputVariable>request</OutputVariable>
    

    Como TrackingNumber es de tipo string y la variable response es de tipo message, son tipos incompatibles, por lo que recibes el código de error:

    steps.xml2json.InCompatibleTypes
    

    El error anterior también puede producirse si la variable del elemento <Source> es de tipo message, pero la variable del elemento <OutputVariable> es de tipo cadena.

Resolución

Asegúrate de que el tipo de variable definido en el elemento <Source> y en el elemento <OutputVariable> sea siempre el mismo. Es obligatorio que el tipo de las variables contenidas en el elemento <Source> y en el elemento <OutputVariable> coincida.

Para corregir la política XML a JSON descrita anteriormente, puedes declarar otra variable TrackingNumber_output de tipo string mediante la política Asignar mensaje y usar esta variable en el elemento <OutputVariable> de la política XML a JSON.

Política de asignación de mensajes modificada:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
    <DisplayName>Assign_TrackingNumber</DisplayName>
    <Properties/>
    <AssignVariable>
        <Name>TrackingNumber</Name>
        <Value><![CDATA[<Code>560098</Code>]]></Value>
        <Ref/>
    </AssignVariable>
    <AssignVariable>
        <Name>TrackingNumber_output</Name>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

Política XMLToJSON modificada:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
      <DisplayName>XMLToJSON_CheckType</DisplayName>
      <Properties/>
      <Format>google</Format>
      <OutputVariable>TrackingNumber_output</OutputVariable>
      <Source>TrackingNumber</Source>
  </XMLToJSON>

InvalidSourceType

Código de error

steps.xml2json.InvalidSourceType

Cuerpo de respuesta de error

{
    "fault": {
        "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

Ejemplo de mensaje de error

{
    "fault": {
        "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

Causa

Este error se produce si el tipo de la variable usada para definir el elemento <Source> no es válido.Los tipos de variable válidos son message y string.

Diagnóstico

  1. Identifica el tipo de origen no válido que se ha usado en la política de XML a JSON. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el tipo no válido es integer.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. Examina todas las políticas de XML a JSON del proxy de API específico en el que se ha producido el error. En la nota de la política de conversión de XML a JSON fallida, anota el nombre de la variable especificada en <Source>.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>BookCode</Source>
    </XMLToJSON>
    
  3. Determina el tipo de variable especificado en el elemento <Source>:

    1. Busca el código en el paquete del proxy de API, donde se definió esta variable por primera vez.
    2. Una vez que sepas en qué política se define y se rellena la variable por primera vez, debes determinar el tipo de esa variable de la siguiente manera:
      1. Compruebe el valor del atributo type (si está presente).
      2. Si no se incluye el atributo type, se considera que la variable es una cadena.
    3. Si el tipo de la variable especificada en <Source> no es ni message ni string, esa es la causa del error. Puede consultar información sobre las variables comunes y sus tipos en la referencia de variables.

    Por ejemplo, supongamos que se usa una política ExtractVariables para extraer el valor de una carga útil XML y se asigna el valor a la variable BookCode para que sea de tipo integer, tal como se muestra a continuación:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract_BookCode">
        <DisplayName>Extract_BookCode</DisplayName>
        <Properties/>
        <Source>request</Source>
        <XMLPayload stopPayloadProcessing="false">
            <Variable name="BookCode" type="integer">
                <XPath>/root/BookCode</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    Ahora, recuerda que la variable BookCode se usa en el elemento <Source> de la política XML a JSON:

    <Source>BookCode</Source>
    

    Como el tipo de esta variable es Integer, que no es un tipo <Source> válido, el proxy de API falla y muestra el siguiente error:

    steps.xml2json.InvalidSourceType
    

Resolución

Asegúrate de que el tipo de variable que se usa para especificar el elemento <Source> sea válido. Los tipos de <Source> válidos son message y string.

Para evitar el error anterior con la política XML a JSON, puedes usar la variable request, que es de tipo message, o cualquier otra cadena que sea una carga útil XML válida.