Skip to main content
Glama
Blazemeter

BlazeMeter Service Virtualization MCP Server

Official
by Blazemeter

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
API_KEY_IDNoBlazeMeter API key ID
API_KEY_PATHNoPath to a JSON file containing BlazeMeter API key id and secret (e.g., api-key.json)
API_KEY_SECRETNoBlazeMeter API key secret
MCP_ENABLED_TOOLSNoComma-separated list of tool names to enable (empty or unset enables all)
OTEL_SDK_DISABLEDNoSet to 'true' to disable OpenTelemetry tracing
SOURCE_WORKING_DIRECTORYNoWorking directory for file operations (used in Docker)
OTEL_EXPORTER_OTLP_HEADERSNoComma-separated key=value headers for OTLP exporter
OTEL_EXPORTER_OTLP_ENDPOINTNoOverride OpenTelemetry gRPC endpoint (default: https://grpc.public.prd.shared.perforce.com)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
blazemeter_userA
        Operations on user information.
        Actions:
        - read: Read a current user information from BlazeMeter.
        Hints:
        - For default account, workspace and project, use the 'read' action. 
    
blazemeter_workspacesA
            Operations on workspaces.
            Actions: 
            - read: Read a workspace. Get the detailed information of a workspace.
                args(dict): Dictionary with the following required parameters:
                    workspace_id (int): The id of the workspace.
            - list: List all workspaces. 
                args(dict): Dictionary with the following required parameters:
                    account_id (int): The id of the account to list the workspaces from
                    limit (int, default=10, valid=[1 to 50]): The number of workspaces to list.
                    offset (int, default=0): Number of workspaces to skip.
            
blazemeter_accountA
    Operations on account users. 
    Use this when a user needs to select a account.
    Actions:
    - read: Read a Account. Get the information of a account.
        args(dict): Dictionary with the following required parameters:
            account_id (int): The id of the account to get information.
    - list: List all accounts. 
        args(dict): Dictionary with the following required parameters:
            limit (int, default=10, valid=[1 to 50]): The number of tests to list.
            offset (int, default=0): Number of tests to skip.
    Hints:
    - If you need to get the default account, use the project id to get the workspace and with that the account.
    - Use the read operation if AI consent information is needed. The AI Consent it's located at account level.
virtual_services_serviceA
    Operations on services.
    Use this when a user needs to create, read, update, list, or select a service.
    Actions:
    - read: Read a Service. Get the information of a service.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list services from.
            service_id (int): Mandatory. The id of the service to get information.
    - list: List all services. 
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list services from.
            limit (int, default=10, valid=[1 to 50]): The number of services to list.
            offset (int, default=0): Number of services to skip.
    - create: Create a new service.
        args(dict): Dictionary with the following required parameters:
            service_name (str): Mandatory. The required name of the service to create.
            workspace_id (int): Mandatory. The id of the workspace to create service in.
    - update: Update service.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to update service in.
            id (int): Mandatory. The id of the service for update.
            service_name (str): Mandatory. The new name of the service.
    Service Schema:
    {'properties': {'id': {'description': 'The unique identifier of the service', 'title': 'Id', 'type': 'integer'}, 'name': {'description': 'The name of the service', 'title': 'Name', 'type': 'string'}}, 'required': ['id', 'name'], 'title': 'Service', 'type': 'object'}
virtual_services_http_transactionA
    Operations on HTTP transactions. 
    Use this when a user needs to create or select a HTTP transaction.
    DSL type field is mandatory and must be set to "HTTP".
  1. General Rules:
        - If redirect url is required in transaction creation or update, provide it as a redirectUrl field in dsl,
        not as a matcher.
        - Assign intermediate values with {{#assign "varName"}}{{value}}{{/assign}}.
        - Keep JSON objects outside helper calls; helpers should only produce values.
        - Do not nest helpers more than 1–2 levels deep.
        - Each helper must have exactly one opening and one closing brace; do not add extra # or braces.
        - Use handlebars helpers supported by wiremock, specified in https://wiremock.org/docs/response-templating/
        - Use validate_template and convert_template actions to validate and convert templates before using them in transaction definition.
        - Dataset variables (from virtual_services_test_data) are referenced with ${fieldName} syntax, NOT Handlebars.
          Matcher name rules — MUST follow exactly:
            * URL path with ${fieldName}: matcherName MUST be "equals_url". NEVER use "matches_url" with variables.
            * Headers / query params / cookies: matcherName must be "equals" or "equals_insensitive" only.
              "contains", "matches", "not_matches" do NOT work with dataset variables.
            * Body plain text: matcherName "equals"
            * Body JSON: matcherName "equals_json" (embed as value e.g. {"id": "${id}"})
              or "matches_json" with equalTo() e.g. [[$.field, equalTo(${id})]]
            * Body XML: matcherName "equals_xml" or "matches_xml" with matching() helper
            * Response content: base64-encode the string containing ${fieldName} — resolves at runtime.
          Extra rules:
            * Same variable used multiple times (path + header + body) must match the SAME value in the request.
            * Undefined variables are treated as literal strings — request must contain the exact text "${varName}".
        - IMPORTANT: When a transaction DSL contains Handlebars templates, always use
          create_and_test instead of create. A transaction is only complete when sandbox
          returns matched=true for all test cases. If matched=false, read mismatch_reasons,
          fix the DSL with update, re-init with virtual_services_sandbox init, then re-test with virtual_services_sandbox test_request.
    Actions:
    - read: Read an HTTP Transaction. Get the information of a transaction.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list transactions from.
            id (int): Mandatory. The id of the transaction to get information.
    - list: List all HTTP transactions. 
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list transactions from.
            serviceId (int): Optional. The id of the service to list transactions from. Without this it will list all transactions in the workspace.
            virtual_service_id (int): Optional. The id of the virtual service to list transactions from. Without this it will list all transactions in the workspace.
            limit (int, default=10, valid=[1 to 50]): The number of transactions to list.
            offset (int, default=0): Number of transactions to skip.
    - validate_template: Validate template. Validates template used in transaction definition.
        args:
            template (str): Mandatory. The handlebars template to validate.
    - convert_template: Convert template. Converts template to blazemeter format.
        args:
            template (str): Mandatory. The handlebars template to validate.
            encode (bool, default=True): Whether to encode the converted template to Base64.
    - create_and_test: Create a new HTTP transaction and immediately validate it in sandbox.
        Use this instead of `create` when the DSL contains Handlebars templates.
        A transaction is only complete when sandbox returns matched=true for all test cases.
        On all-fail: error contains the failure summary; transaction still exists — use update to fix the DSL,
        then re-init with virtual_services_sandbox init and re-test with virtual_services_sandbox test_request.
        On partial fail: warning lists failures; transaction still exists.
        args:
            name (str): Mandatory. The name of the transaction.
            serviceId (int): Mandatory. The id of the service.
            dsl (GenericDsl): Mandatory. The DSL definition.
            workspace_id (int): Mandatory. The id of the workspace.
            delay (int): Optional. Response delay in milliseconds.
            test_cases (list[SandboxRequest]): Mandatory. At least one test request.
                Each entry has: method (str), path (str), name (str),
                queryParameters (list, optional), headers (list, optional), content (str base64, optional).
        Returns:
            info: ["transaction_id=<id>", "tests_passed=<n>", "tests_total=<n>"]
            result: List of SandboxResponse per test case.
            result[].matched: True if the test request matched the transaction.
            result[].body: Decoded response body (plain text or JSON).
            result[].mismatch_reasons: Why the request did not match (when matched=False).
            error: All test cases failed, or creation/sandbox init failed.
                On sandbox init failure, info still contains transaction_id so the transaction can be recovered.
            warning: Some (not all) test cases failed.
    - create: Create a new HTTP transaction.
        Important: before using template in transaction definition validate it and 
        convert it first using validate_template and convert_template actions.
        args(Transaction): A Transaction object with the following fields:
            name (str): Mandatory. The name of the transaction.
            serviceId (int): Mandatory. The id of the service to create the transaction in.
            dsl (GenericDsl): Mandatory. The DSL definition of the transaction.
            workspace_id (int): Mandatory. The id of the workspace.
            delay (int): Optional. Response delay in milliseconds.
    - update: Updates a certain transaction.
        Important: before using template in transaction definition validate it and  
        convert it first using validate_template and convert_template actions.
        args(Transaction): A Transaction object with the following fields:
            id (int): Mandatory. The id of the transaction.
            name (str): Mandatory. The new name of the transaction.
            dsl (GenericDsl): Mandatory. The DSL definition of the transaction.
            workspace_id (int): Mandatory. The id of the workspace. 
            delay (int): Optional. Response delay in milliseconds.
    - assign_keystore: Assign keystore asset to the transaction.
        args(dict):
            id (int): Mandatory. The id of the transaction.
            asset_id (int): Mandatory. The id of the keystore asset to assign.
            alias (str): Mandatory. The certificate alias to use.
            workspace_id (int): Mandatory. The id of the workspace.  
    - assign_certificate: Assign certificate asset to the transaction.
        args(dict):
            id (int): Mandatory. The id of the transaction.
            asset_id (int): Mandatory. The id of the certificate asset to assign.
            workspace_id (int): Mandatory. The id of the workspace.           

    Transaction Schema (including full GenericDsl with RequestDsl and ResponseDsl):
    {'$defs': {'AssignedAsset': {'properties': {'assetId': {'description': 'The identifier of the asset', 'title': 'Assetid', 'type': 'integer'}, 'assetUsageType': {'description': 'The usage type of the asset', 'title': 'Assetusagetype', 'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'The asset certificate alias', 'title': 'Alias'}}, 'required': ['assetId', 'assetUsageType'], 'title': 'AssignedAsset', 'type': 'object'}, 'GenericDsl': {'additionalProperties': True, 'properties': {'requestDsl': {'$ref': '#/$defs/RequestDsl', 'description': 'Request DSL for the transaction request matching'}, 'responseDsl': {'$ref': '#/$defs/ResponseDsl', 'description': 'Response DSL for the transaction response matching'}, 'redirectUrl': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Redirect URL for the transaction', 'title': 'Redirecturl'}, 'type': {'default': 'HTTP', 'description': "The type of the transaction. Supported value is 'HTTP'.", 'title': 'Type', 'type': 'string'}}, 'required': ['requestDsl', 'responseDsl'], 'title': 'GenericDsl', 'type': 'object'}, 'HttpHeader': {'additionalProperties': True, 'properties': {'name': {'description': 'HTTP header name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'HTTP header value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'HttpHeader', 'type': 'object'}, 'MatcherDsl': {'additionalProperties': True, 'properties': {'key': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Matcher key. For URL matchers has static value 'url', for header matchers - header name, for body matchers static name 'body', for query parameter matchers - query parameter name", 'title': 'Key'}, 'matcherName': {'description': "The name of the matcher. Supported values for URL matchers: 'matches_url', 'equals_url'. Supported values for header/query matchers: 'equals', 'equals_insensitive', 'contains', 'matches', 'not_matches', 'absent'. Supported values for body matchers: 'equals', 'equals_insensitive', 'contains', 'matches', 'not_matches', 'absent', 'equals_json', 'equals_xml', 'matches_json', 'matches_xml', 'matches_xml_schema', 'matches_xml_cdata'.", 'title': 'Matchername', 'type': 'string'}, 'matchingValue': {'description': "Value to match against. Not used for 'absent' matcher_name. ", 'title': 'Matchingvalue', 'type': 'string'}, 'optional': {'default': False, 'description': 'If true, the matcher is optional and does not need to be present to match.', 'title': 'Optional', 'type': 'boolean'}, 'namespaces': {'anyOf': [{'items': {'$ref': '#/$defs/XmlMatcherNamespace'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': "Namespaces used for XML matching. Only used if matcher_name is one of 'equals_xml', 'matches_xml', 'matches_xml_schema', 'matches_xml_cdata'.", 'title': 'Namespaces'}, 'cdataXpath': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "CDATA XPath expression used for XML CDATA matching. Only used if matcher_name is 'matches_xml_cdata'.", 'title': 'Cdataxpath'}}, 'required': ['matcherName', 'matchingValue'], 'title': 'MatcherDsl', 'type': 'object'}, 'RequestDsl': {'additionalProperties': True, 'properties': {'method': {'default': 'GET', 'description': "HTTP method of the request for the transaction request matching. Uppercase, e.g., 'GET', 'POST'", 'title': 'Method', 'type': 'string'}, 'path': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Mandatory.Path of the request for the transaction request matching. E.g., '/api/v1/resource'. Used instead of matcher_name for URL matcher definition. Important: Should have same value as url.matchingValue.", 'title': 'Path'}, 'url': {'$ref': '#/$defs/MatcherDsl', 'default': None, 'description': 'Mandatory. Matcher definition for the full URL of the request'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/MatcherDsl'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of matchers for the headers of the request', 'title': 'Headers'}, 'queryParams': {'anyOf': [{'items': {'$ref': '#/$defs/MatcherDsl'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of matchers for the query parameters of the request', 'title': 'Queryparams'}, 'body': {'anyOf': [{'items': {'$ref': '#/$defs/MatcherDsl'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of matchers for the body of the request', 'title': 'Body'}}, 'title': 'RequestDsl', 'type': 'object'}, 'ResponseDsl': {'additionalProperties': True, 'properties': {'status': {'description': 'HTTP status code of the response for the transaction response matching. E.g., 200, 404.', 'title': 'Status', 'type': 'integer'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/HttpHeader'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of response headers', 'title': 'Headers'}, 'content': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Base64 encoded body of the response', 'title': 'Content'}, 'statusCodeConditions': {'anyOf': [{'items': {'$ref': '#/$defs/StatusCodeCondition'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Status code conditions for the response', 'title': 'Statuscodeconditions'}}, 'required': ['status'], 'title': 'ResponseDsl', 'type': 'object'}, 'StatusCodeCondition': {'additionalProperties': True, 'properties': {'status': {'default': 200, 'description': 'Status code', 'title': 'Status', 'type': 'integer'}, 'statusMessage': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': 'OK', 'description': 'HTTP header name', 'title': 'Statusmessage'}, 'matcher': {'$ref': '#/$defs/MatcherDsl', 'description': 'Condition matcher'}}, 'required': ['matcher'], 'title': 'StatusCodeCondition', 'type': 'object'}, 'XmlMatcherNamespace': {'properties': {'prefix': {'description': 'XML namespace prefix.', 'title': 'Prefix', 'type': 'string'}, 'uri': {'description': 'XML namespace URI.', 'title': 'Uri', 'type': 'string'}}, 'required': ['prefix', 'uri'], 'title': 'XmlMatcherNamespace', 'type': 'object'}}, 'properties': {'id': {'default': None, 'description': 'The unique identifier of the transaction', 'title': 'Id', 'type': 'integer'}, 'name': {'description': 'The name of the transaction', 'title': 'Name', 'type': 'string'}, 'serviceId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'The unique identifier of the service where the transaction belongs', 'title': 'Serviceid'}, 'dsl': {'$ref': '#/$defs/GenericDsl', 'description': 'Transaction DSL'}, 'assets': {'anyOf': [{'items': {'$ref': '#/$defs/AssignedAsset'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of assets', 'title': 'Assets'}}, 'required': ['name', 'dsl'], 'title': 'HttpTransaction', 'type': 'object'}
virtual_services_messaging_transactionA
    Operations on JMS Messaging transactions. 
    Use this when a user needs to create or select a JMS messaging transaction.
    DSL type field is mandatory and must be set to "MESSAGING".
  1. General Rules:
        - Supported JMS header names: 'MQ9_MQMD_VERSION', 'MQ9_MQMD_REPORT', 'MQ9_MQMD_MESSAGE_TYPE', 
            'MQ9_MQMD_EXPIRY', 'MQ9_MQMD_FEEDBACK', 'MQ9_MQMD_ENCODING', 'MQ9_MQMD_CHARACTER_SET', 
            'MQ9_MQMD_PRIORITY', 'MQ9_MQMD_PERSISTENCE', 'MQ9_MQMD_MESSAGE_ID', 'MQ9_MQMD_CORRELATION_ID', 
            'MQ9_MQMD_BACKOUT_COUNT', 'MQ9_MQMD_USER_ID', 'MQ9_MQMD_ACCOUNTING_TOKEN', 'MQ9_MQMD_APPLICATION_ID', 
            'MQ9_PUT_APPLICATION_TYPE', 'MQ9_PUT_APPLICATION_NAME', 'MQ9_PUT_DATE_TIME', 
            'MQ9_MQMD_APPLICATION_ORIGIN_DATA', 'MQ9_MQMD_GROUP_ID', 'MQ9_MQMD_SEQUENCE_NUMBER', 
            'MQ9_MQMD_OFFSET', 'MQ9_MQMD_FLAGS', 'MQ9_MQMD_ORIGINAL_LENGTH', 'JMS_MESSAGE_ID', 
            'JMS_CORRELATION_ID', 'JMS_TIMESTAMP', 'JMS_DELIVERY_MODE', 'JMS_REDELIVERED', 
            'JMS_EXPIRATION', 'JMS_PRIORITY'
        - Assign intermediate values with {{#assign "varName"}}{{value}}{{/assign}}.
        - Keep JSON objects outside helper calls; helpers should only produce values.
        - Do not nest helpers more than 1–2 levels deep.
        - Each helper must have exactly one opening and one closing brace; do not add extra # or braces.
        - Conditional helpers ({{#eq}}, {{#neq}}, {{#gt}}, {{#lt}}, etc.) must use variable names directly without quotes.
        - Use {{else}} only once per conditional; do not use {{#else}} or {{/else}}.
        - Avoid repeating the same condition in multiple nested blocks.
        - Templates must be valid JSON and readable.
        2. Explicit Helper Syntax:
        - Opening a block helper: {{#helperName [arguments]}}
          Example: {{#assign "userId"}} or {{#eq userId "0"}}
        - Closing a block helper: {{/helperName}}
          Example: {{/assign}} or {{/eq}}
        - Else clause: {{else}} (no #, no /)
          Example:
            {{#eq userId "0"}}
              { "error": "User not found" }
            {{else}}
              { "id": {{userId}}, "name": "John Doe" }
            {{/eq}}
        - Variable interpolation inside JSON: {{variableName}} only for values
        - JSON objects stay outside helpers.
        3. Fields that support templates:
        - ResponseDsl.content: Base64 encoded response body that can include templates using {{}} syntax.
        4. Available helpers (WireMock + Blazemeter custom helpers) — all use {{}} style:
        5. LLM-Specific Best Practices:
        - Produce one helper per line.
        - Do not combine multiple logic operations in a single line.
        - Use sequential conditionals for multiple branches instead of deeply nested {{#eq}} blocks.
        - Keep templates simple, granular, and maintainable.
        - Always follow the explicit helper syntax rules above to prevent extra braces or invalid {{#else}} usage.
        6. Example Templates:
        # --- Assigning and Joining Values ---
        {{#assign 'operation'}}{{join request.method request.url ' '}}{{/assign}}
        Result: {{operation}}
        
        # --- Headers ---
        All headers: {{request.headers}}
        Single header: {{request.headers.JMS_CORRELATION_ID}}
        Iterate headers:
        {{#each request.headers as |hdr|}}
        {{hdr.name}}: {{hdr.value}}
        {{/each}}
        
        # --- Body and Body Parsing ---
        Raw body: {{request.body}}
        Body as JSON: {{jsonPath request.body '$'}}
        Body as XML: {{xpath request.body '//element'}}
        Extract value using JSONPath:
        {{#assign 'price'}}{{jsonPath request.body '$.price'}}{{/assign}}
        Extracted price: {{price}}
        Extract value using XPath:
        {{#assign 'id'}}{{xpath request.body '//order/id/text()'}}{{/assign}}
        Extracted ID: {{id}}
        
        # --- Conditional Logic ---
        {{#eq request.headers.JMS_CORRELATION_ID '1234'}}
        Order is pending
        {{else}}
        Order status: {{request.headers.STATUS}}
        {{/eq}}
        
        # --- Arrays and Ranges ---
        {{#assign 'a'}}{{array 'A' 'B' 'C'}}{{/assign}}
        Joined: {{arrayJoin ',' a}}
        {{#assign 'b'}}{{arrayAdd a 'D' position=1}}{{/assign}}
        Added: {{arrayJoin ',' b}}
        {{#assign 'c'}}{{arrayRemove b position=2}}{{/assign}}
        Removed: {{arrayJoin ',' c}}
        
        {{#each (range 1 3) as |i|}}
        Item {{i}}
        {{/each}}
        
        # --- String Helpers ---
        {{join 'Order' request.path.1 'confirmed'}}
        {{replace 'foo-bar' '-' '_'}}
        {{upper request.method}}
        {{lower user.role}}
        {{capitalize 'hello world'}}
        {{capitalizeFirst 'wiremock templates'}}
        {{defaultIfEmpty request.headers.comment 'none'}}
        {{cut 'a,b,c' ','}}
        {{slugify 'Hello World!'}}
        {{stripTags '<b>bold</b>'}}
        {{substring 'abcdef' 2 5}}
        {{ljust 'hi' size=5 pad='*'}}
        {{rjust 'ok' size=5 pad='-'}}
        
        # --- Date and Time ---
        Requested at: {{now}}
        Formatted date: {{dateFormat now 'yyyy-MM-dd HH:mm:ss'}}
        
        # --- Math and Size ---
        {{#assign 'qty'}}{{jsonPath request.body '$.quantity'}}{{/assign}}
        {{#assign 'total'}}{{math price '*' qty}}{{/assign}}
        Total: {{total}}
        Item count: {{size request.headers.items}}
        
        # --- Regex Extraction ---
        {{#assign 'num'}}{{regexExtract request.path.1 '([0-9]+)'}}{{/assign}}
        Extracted number: {{num}}
        
        # --- Using "with" Context ---
        {{#with request.headers}}
        User-Agent: {{User-Agent}}
        {{/with}}
        
        # --- Available Request Parts Summary ---
        request.headers → Map of headers
        request.headers.NAME → Header value(s)
        request.properties → Map of headers
        request.properties.NAME → Header value(s)
        request.body → Raw request body (string)
        # --- Available Http Call Action Templates ---
        httpcalls.actionName.response.body → Response body of the http call action named "actionName"
        httpcalls.actionName.response.statuscode → Status code of the http call action named "actionName"
        httpcalls.actionName.request.url → Request URL of the http call action named "actionName"
        httpcalls.actionName.request.method → Request method of the http call action named "actionName
        httpcalls.actionName.request.headers → Request headers of the http call action named "actionName"
        httpcalls.actionName.request.body → Request body of the http call action named "actionName
         # --- Available Virtual Service Configuration Templates ---
        config.var1 → Value of the virtual service configuration parameter named "var1"
        
        # --- Error Handling Notes ---
        If the response returns raw unparsed template text (for example, showing {{request.body}} instead of the actual value), it means the template syntax is **invalid or malformed** and WireMock skipped template parsing.  
        If the response returns **HTTP 500** with an exception in the WireMock logs, it means the syntax was **parsed correctly but failed during runtime execution** (for example, referencing a non-existent variable, invalid JSONPath, or invalid helper argument).
        # --- Important Notes ---
        Each helper must always be opened and closed when block form is used (e.g. {{#assign ...}}{{/assign}}, {{#eq ...}}{{/eq}}, {{#each ...}}{{/each}}).  
        Inline helpers like {{join ...}}, {{replace ...}}, {{upper ...}}, {{jsonPath ...}} do not require closing tags.
    Actions:
    - read: Read a Transaction. Get the information of a transaction.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list transactions from.
            id (int): Mandatory. The id of the transaction to get information.
    - list: List all transactions.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list transactions from.
            serviceId (int): Optional. The id of the service to list transactions from. Without this it will list all transactions in the workspace.
            virtual_service_id (int): Optional. Filter by virtual service (messaging service mock) id.
            limit (int, default=10, valid=[1 to 50]): The number of transactions to list.
            offset (int, default=0): Number of transactions to skip.
    - validate_template: Validates template used in transaction definition.
        args:
            template (str): Mandatory. The handlebars template to validate.
    - convert_template: Converts template to blazemeter format.
        args:
            template (str): Mandatory. The handlebars template to validate.
            encode (bool, default=True): Whether to encode the converted template to Base64.
    - create: Create a new transaction.
        Important: before using template in transaction definition validate it and 
        convert it first using validate_template and convert_template actions.
        args(Transaction): A Transaction object with the following fields:
            name (str): Mandatory. The name of the transaction.
            serviceId (int): Mandatory. The id of the service to create the transaction in.
            type (str): Mandatory. The type of the transaction.
            dsl (MessagingDsl): Mandatory. The DSL definition of the transaction.
            workspace_id (int): Mandatory. The id of the workspace.
            delay (int): Optional. Response delay in milliseconds.
            description (str): Optional.
            tags (list[str]): Optional.
            priority (int): Optional. Matching priority 1–2147483647, default 10.
            messagingTransactionMappings (dict): Optional. {sourceName, sourceType, destinations: [{destinationName, destinationType}]}.
            sampleBody (str): Optional. Example request body for documentation.
    - update: Updates a certain transaction.
        Important: before using template in transaction definition validate it and  
        convert it first using validate_template and convert_template actions.
        args(Transaction): A Transaction object with the following fields:
            id (int): Mandatory. The id of the transaction.
            name (str): Mandatory. The new name of the transaction.
            type (str): Mandatory. The type of the transaction.
            dsl (MessagingDsl): Mandatory. The DSL definition of the transaction.
            workspace_id (int): Mandatory. The id of the workspace.
            delay (int): Optional. Response delay in milliseconds.
            description (str): Optional.
            tags (list[str]): Optional.
            priority (int): Optional. Matching priority 1–2147483647, default 10.
            messagingTransactionMappings (dict): Optional. {sourceName, sourceType, destinations: [{destinationName, destinationType}]}.
            sampleBody (str): Optional. Example request body for documentation.
    - assign_keystore: Assign keystore asset to the transaction.
        args(dict):
            id (int): Mandatory. The id of the transaction.
            asset_id (int): Mandatory. The id of the keystore asset to assign.
            alias (str): Mandatory. The certificate alias to use.
            workspace_id (int): Mandatory. The id of the workspace.  
    - assign_certificate: Assign certificate asset to the transaction.
        args(dict):
            id (int): Mandatory. The id of the transaction.
            asset_id (int): Mandatory. The id of the certificate asset to assign.
            workspace_id (int): Mandatory. The id of the workspace.           

    Transaction Schema (including full MessagingDsl with MessagingRequestDsl and MessagingResponseDsl):
    {'$defs': {'AssignedAsset': {'properties': {'assetId': {'description': 'The identifier of the asset', 'title': 'Assetid', 'type': 'integer'}, 'assetUsageType': {'description': 'The usage type of the asset', 'title': 'Assetusagetype', 'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'The asset certificate alias', 'title': 'Alias'}}, 'required': ['assetId', 'assetUsageType'], 'title': 'AssignedAsset', 'type': 'object'}, 'HttpHeader': {'additionalProperties': True, 'properties': {'name': {'description': 'HTTP header name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'HTTP header value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'HttpHeader', 'type': 'object'}, 'MatcherDsl': {'additionalProperties': True, 'properties': {'key': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Matcher key. For URL matchers has static value 'url', for header matchers - header name, for body matchers static name 'body', for query parameter matchers - query parameter name", 'title': 'Key'}, 'matcherName': {'description': "The name of the matcher. Supported values for URL matchers: 'matches_url', 'equals_url'. Supported values for header/query matchers: 'equals', 'equals_insensitive', 'contains', 'matches', 'not_matches', 'absent'. Supported values for body matchers: 'equals', 'equals_insensitive', 'contains', 'matches', 'not_matches', 'absent', 'equals_json', 'equals_xml', 'matches_json', 'matches_xml', 'matches_xml_schema', 'matches_xml_cdata'.", 'title': 'Matchername', 'type': 'string'}, 'matchingValue': {'description': "Value to match against. Not used for 'absent' matcher_name. ", 'title': 'Matchingvalue', 'type': 'string'}, 'optional': {'default': False, 'description': 'If true, the matcher is optional and does not need to be present to match.', 'title': 'Optional', 'type': 'boolean'}, 'namespaces': {'anyOf': [{'items': {'$ref': '#/$defs/XmlMatcherNamespace'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': "Namespaces used for XML matching. Only used if matcher_name is one of 'equals_xml', 'matches_xml', 'matches_xml_schema', 'matches_xml_cdata'.", 'title': 'Namespaces'}, 'cdataXpath': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "CDATA XPath expression used for XML CDATA matching. Only used if matcher_name is 'matches_xml_cdata'.", 'title': 'Cdataxpath'}}, 'required': ['matcherName', 'matchingValue'], 'title': 'MatcherDsl', 'type': 'object'}, 'MessagingDestination': {'properties': {'destinationName': {'description': 'Destination name', 'title': 'Destinationname', 'type': 'string'}, 'destinationType': {'description': 'Destination type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Destinationtype', 'type': 'string'}}, 'required': ['destinationName', 'destinationType'], 'title': 'MessagingDestination', 'type': 'object'}, 'MessagingDsl': {'additionalProperties': True, 'properties': {'requestDsl': {'$ref': '#/$defs/MessagingRequestDsl', 'description': 'DSL for the incoming JMS message matching'}, 'responseDsl': {'$ref': '#/$defs/MessagingResponseDsl', 'description': 'DSL for the outgoing JMS message'}, 'type': {'default': 'MESSAGING', 'description': "The type of the transaction. Supported value is 'MESSAGING'.", 'title': 'Type', 'type': 'string'}}, 'required': ['requestDsl', 'responseDsl'], 'title': 'MessagingDsl', 'type': 'object'}, 'MessagingProperty': {'additionalProperties': True, 'properties': {'name': {'description': 'JMS property name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'JMS property value', 'title': 'Value', 'type': 'string'}, 'type': {'description': "JMS property type. Supported types are 'BOOLEAN', 'BYTE', 'SHORT', 'INT', 'LONG', 'FLOAT', 'DOUBLE' and 'STRING'.", 'title': 'Type', 'type': 'string'}}, 'required': ['name', 'value', 'type'], 'title': 'MessagingProperty', 'type': 'object'}, 'MessagingRequestDsl': {'additionalProperties': True, 'properties': {'headers': {'anyOf': [{'items': {'$ref': '#/$defs/MatcherDsl'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of matchers for the jms headers of the incoming message', 'title': 'Headers'}, 'properties': {'anyOf': [{'items': {'$ref': '#/$defs/MatcherDsl'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of matchers for the jms properties of the incoming message', 'title': 'Properties'}, 'body': {'anyOf': [{'items': {'$ref': '#/$defs/MatcherDsl'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of matchers for the jms message body', 'title': 'Body'}}, 'title': 'MessagingRequestDsl', 'type': 'object'}, 'MessagingResponseDsl': {'additionalProperties': True, 'properties': {'messageType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'JMS message type of the response. One of: TEXT_MESSAGE, BYTES_MESSAGE, MAP_MESSAGE, STREAM_MESSAGE, OBJECT_MESSAGE.', 'title': 'Messagetype'}, 'content': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': '', 'description': 'Response body payload. Provide as plain text (e.g. \'{"status":"ok"}\') or as a valid base64 string. Plain text and invalid base64 are auto-encoded by the tool.', 'title': 'Content'}, 'charset': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': 'UTF-8', 'description': 'Character set for the response content (default UTF-8)', 'title': 'Charset'}, 'failoverEnabled': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Whether failover is enabled for this response', 'title': 'Failoverenabled'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/HttpHeader'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'JMS headers of the outgoing message', 'title': 'Headers'}, 'properties': {'anyOf': [{'items': {'$ref': '#/$defs/MessagingProperty'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'JMS properties of the outgoing message', 'title': 'Properties'}, 'responseDelay': {'anyOf': [{'$ref': '#/$defs/ResponseDelay'}, {'type': 'null'}], 'default': None, 'description': 'Delay configuration applied to this response'}}, 'title': 'MessagingResponseDsl', 'type': 'object'}, 'MessagingTransactionMapping': {'additionalProperties': True, 'properties': {'sourceName': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Transaction source name', 'title': 'Sourcename'}, 'sourceType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Source type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Sourcetype'}, 'destinations': {'default': [], 'description': 'Transaction destinations', 'items': {'$ref': '#/$defs/MessagingDestination'}, 'title': 'Destinations', 'type': 'array'}}, 'title': 'MessagingTransactionMapping', 'type': 'object'}, 'ResponseDelay': {'additionalProperties': True, 'properties': {'type': {'default': 'FIXED', 'description': 'Delay type: FIXED, LOGNORMAL, or UNIFORM', 'title': 'Type', 'type': 'string'}, 'fixedDelay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Fixed delay in ms (FIXED type)', 'title': 'Fixeddelay'}, 'median': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Median for LOGNORMAL distribution', 'title': 'Median'}, 'sigma': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Sigma for LOGNORMAL distribution', 'title': 'Sigma'}, 'lower': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Lower bound for UNIFORM distribution', 'title': 'Lower'}, 'upper': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Upper bound for UNIFORM distribution', 'title': 'Upper'}}, 'title': 'ResponseDelay', 'type': 'object'}, 'XmlMatcherNamespace': {'properties': {'prefix': {'description': 'XML namespace prefix.', 'title': 'Prefix', 'type': 'string'}, 'uri': {'description': 'XML namespace URI.', 'title': 'Uri', 'type': 'string'}}, 'required': ['prefix', 'uri'], 'title': 'XmlMatcherNamespace', 'type': 'object'}}, 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'The unique identifier of the transaction', 'title': 'Id'}, 'name': {'description': 'The name of the transaction', 'title': 'Name', 'type': 'string'}, 'serviceId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'The unique identifier of the service where the transaction belongs', 'title': 'Serviceid'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Human-readable description', 'title': 'Description'}, 'tags': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Tags for filtering and organization', 'title': 'Tags'}, 'priority': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 10, 'description': 'Matching priority (1–2147483647, default 10)', 'title': 'Priority'}, 'dsl': {'$ref': '#/$defs/MessagingDsl', 'description': 'Transaction DSL'}, 'messagingTransactionMappings': {'anyOf': [{'$ref': '#/$defs/MessagingTransactionMapping'}, {'type': 'null'}], 'default': None, 'description': 'Binds this transaction to a source queue/topic/subscription and specifies where responses are sent.'}, 'sampleBody': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Example request body for documentation and testing', 'title': 'Samplebody'}, 'assets': {'anyOf': [{'items': {'$ref': '#/$defs/AssignedAsset'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of assets', 'title': 'Assets'}}, 'required': ['name', 'dsl'], 'title': 'MessagingTransaction', 'type': 'object'}
virtual_services_virtual_serviceA
    Operations on virtual services. 
    Use this when a user needs to create or select a virtual service.
    Actions:
    - read: Read a virtual service. Get the information of a virtual service.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list virtual services from.
            id (int): Mandatory. The id of the virtual service to get information.
    - list: List all virtual services. 
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list transactions from.
            serviceId (int): Optional. The id of the service to list virtual services from. Without this it will list all virtual services in the workspace.
            limit (int, default=10, valid=[1 to 50]): The number of virtual services to list.
            offset (int, default=0): Number of virtual services to skip.
    - create: Create a new virtual service.
        args(VirtualService): A virtual service object with the following fields:
            workspace_id (int): Mandatory. The id of the workspace.
            name (str): Mandatory. The name of the virtual service.
            serviceId (int): Mandatory. The id of the service to create the virtual service in.
            harborId (str): Mandatory. The location harbor id. ALWAYS call virtual_services_location list first to get the correct harborId for the requested location.
            shipId (str): Mandatory. The location ship id. ALWAYS call virtual_services_location list first to get the correct shipId for the requested location.
            endpointPreference (str): Mandatory. Use 'HTTP' or 'HTTPS' as specified by the user.
            noMatchingRequestPreference (str): Mandatory. If not specified use 'return404'.
    - update: Update an existing new virtual service.
        args(VirtualService): A virtual service object with the following fields:
            workspace_id (int): Mandatory. The id of the workspace.
            vs_id (int): Mandatory. The id of the virtual service.
            name (str): Optional. The name of the virtual service.
            serviceId (int): Optional. The id of the service to create the virtual service in.
            harborId (str): Optional. The location harbor id. Use virtual_services_location list to find the correct value.
            shipId (str): Optional. The location ship id. Use virtual_services_location list to find the correct value.
            endpointPreference (str): Optional. 'HTTP' or 'HTTPS' as specified by the user.
            noMatchingRequestPreference (str): Optional. If not specified use 'return404'.
    - deploy: Deploy a virtual service. Deploys the virtual service to the specified harbor and ship.
        Action result contains tracking id to track the deployment. Use tracking tool to track the deployment.
        Deployment is finished, when tracking status is 'FINISHED'. If deployment fails, tracking status is 'FAILED'. 
        After tracking status is 'FINISHED' or 'FAILED' you can read the virtual service to get the endpoint and return to user.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to deploy.
    - stop: Stop a virtual service. Stops the virtual service.
        Action result contains tracking id to track the stop action. Use tracking tool to track the stop action.
        Stop action is finished, when tracking status is 'FINISHED'. If stop action fails, tracking status is 'FAILED'. 
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to stop.
    - configure: Configures a virtual service. Only available if Virtual service is running.
        Updates transactions loaded into the virtual service.
        Action result contains tracking id to track the update action. Use tracking tool to track the update action.
        Update action is finished, when tracking status is 'FINISHED'. If update action fails, tracking status is 'FAILED'. 
        args(VirtualService): A virtual service object with the following fields:
            workspace_id (int): Mandatory. The id of the virtual service.
            id (int): Mandatory. The id of the virtual service to update.
    - assign_transactions: Assigns the transactions to the virtual service. Transactions should belong to the same service as the virtual service.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to assign the transaction to.
            transaction_ids (list[int]): Mandatory. The ids of the transactions to assign to the virtual service.
    - unassign_transactions: Unassigns the transactions from the virtual service.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to assign the transaction to.
            transaction_ids (list[int]): Mandatory. The ids of the transactions to unassign from the virtual service.
    - assign_configuration: Assigns the configuration to the virtual service. To unassign configuration, assign configuration with id None.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to assign the transaction to.
            configuration_id (list[int]): Mandatory. The id of the configuration to assign to the virtual service.
    - set_proxy: Sets proxy server configuration for the virtual service.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to set proxy.
            proxyUrl (str): Mandatory. Proxy server address.
            nonProxyHosts (str): Optional. Non-proxy hosts, | separated.
            username (str): Optional. Proxy server username.
            password (str): Optional. Proxy server password.
            certificate_id (int): Optional. The id of the proxy certificate asset if required.
    - unset_proxy: Removes proxy server configuration from the virtual service.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to remove proxy.     
    - apply_template: Applies virtual service template settings to the virtual service.
        Result contains tracking id to track the update action. Use tracking tool to track the update action.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service belongs to.
            id (int): Mandatory. The id of the virtual service to remove proxy.
            template_id (int): Mandatory. The id of the virtual service template.
    - assign_keystore: Assign Keystore asset to the Virtual Service.
        args(dict):
            id (int): Mandatory. The id of the Virtual Service.
            asset_id (int): Mandatory. The id of the keystore asset to assign.
            alias (str): Mandatory. The certificate alias to use.
            workspace_id (int): Mandatory. The id of the workspace.  
    - assign_keystore_truststore: Assign Keystore asset to the Virtual Service. Asset will be used as both Keystore and Truststore.
            Use this action for 2way ssl setup.
        args(dict):
            id (int): Mandatory. The id of the Virtual Service.
            asset_id (int): Mandatory. The id of the certificate asset to assign.
            alias (str): Mandatory. The certificate alias to use.
            workspace_id (int): Mandatory. The id of the workspace.       
    VirtualService Schema (including full MockServiceTransaction):
    {'$defs': {'AssignedAsset': {'properties': {'assetId': {'description': 'The identifier of the asset', 'title': 'Assetid', 'type': 'integer'}, 'assetUsageType': {'description': 'The usage type of the asset', 'title': 'Assetusagetype', 'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'The asset certificate alias', 'title': 'Alias'}}, 'required': ['assetId', 'assetUsageType'], 'title': 'AssignedAsset', 'type': 'object'}, 'BrokerConfiguration': {'additionalProperties': True, 'properties': {'hostname': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Broker hostname', 'title': 'Hostname'}, 'port': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "Broker port (string). Use 'host:port,host:port' for Kafka multi-broker lists.", 'title': 'Port'}, 'channel': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'IBM MQ channel name, e.g. SYSTEM.DEF.SVRCONN', 'title': 'Channel'}, 'queueManager': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'IBM MQ queue manager name', 'title': 'Queuemanager'}, 'username': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Broker username', 'title': 'Username'}, 'password': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Broker password', 'title': 'Password'}, 'sslAuthentication': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable SSL/TLS authentication', 'title': 'Sslauthentication'}, 'sslCipherSuite': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'SSL cipher suite (IBM MQ only), e.g. TLS_RSA_WITH_AES_256_CBC_SHA256', 'title': 'Sslciphersuite'}, 'embeddedBroker': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Start an embedded broker — ACTIVE_MQ_CLASSIC and ARTEMIS only', 'title': 'Embeddedbroker'}, 'autoOffsetReset': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Kafka offset reset strategy: earliest, latest, or none', 'title': 'Autooffsetreset'}, 'numPartitions': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Kafka number of partitions (default 1)', 'title': 'Numpartitions'}, 'queues': {'anyOf': [{'items': {'$ref': '#/$defs/BrokerQueue'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of queues', 'title': 'Queues'}, 'topics': {'anyOf': [{'items': {'$ref': '#/$defs/BrokerTopic'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of topics', 'title': 'Topics'}, 'subscriptions': {'anyOf': [{'items': {'$ref': '#/$defs/BrokerSubscription'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of subscriptions', 'title': 'Subscriptions'}, 'flowConfigurations': {'anyOf': [{'items': {'$ref': '#/$defs/FlowConfiguration'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Broker-level flow routing configurations', 'title': 'Flowconfigurations'}}, 'title': 'BrokerConfiguration', 'type': 'object'}, 'BrokerQueue': {'properties': {'name': {'description': 'Queue name', 'title': 'Name', 'type': 'string'}}, 'required': ['name'], 'title': 'BrokerQueue', 'type': 'object'}, 'BrokerSubscription': {'properties': {'name': {'description': 'Subscription name', 'title': 'Name', 'type': 'string'}}, 'required': ['name'], 'title': 'BrokerSubscription', 'type': 'object'}, 'BrokerTopic': {'properties': {'name': {'description': 'Topic name', 'title': 'Name', 'type': 'string'}, 'isDurable': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Whether the subscription is durable', 'title': 'Isdurable'}, 'durableSubscriptionName': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Durable subscription name — required when isDurable=True', 'title': 'Durablesubscriptionname'}}, 'required': ['name'], 'title': 'BrokerTopic', 'type': 'object'}, 'Endpoint': {'properties': {'endpoint': {'description': 'Endpoint URL', 'title': 'Endpoint', 'type': 'string'}}, 'required': ['endpoint'], 'title': 'Endpoint', 'type': 'object'}, 'FlowConfiguration': {'properties': {'name': {'description': 'Flow configuration name', 'title': 'Name', 'type': 'string'}, 'transactionMapping': {'$ref': '#/$defs/FlowTransactionMapping', 'description': 'Source-to-destination routing for this flow'}}, 'required': ['name', 'transactionMapping'], 'title': 'FlowConfiguration', 'type': 'object'}, 'FlowTransactionMapping': {'properties': {'sourceName': {'description': 'Source queue/topic/subscription name', 'title': 'Sourcename', 'type': 'string'}, 'sourceType': {'description': 'Source type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Sourcetype', 'type': 'string'}, 'destinations': {'default': [], 'description': 'Destination list', 'items': {'$ref': '#/$defs/MessagingDestination'}, 'title': 'Destinations', 'type': 'array'}}, 'required': ['sourceName', 'sourceType'], 'title': 'FlowTransactionMapping', 'type': 'object'}, 'MessagingDestination': {'properties': {'destinationName': {'description': 'Destination name', 'title': 'Destinationname', 'type': 'string'}, 'destinationType': {'description': 'Destination type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Destinationtype', 'type': 'string'}}, 'required': ['destinationName', 'destinationType'], 'title': 'MessagingDestination', 'type': 'object'}, 'MockServiceRecording': {'properties': {'recordingId': {'description': 'ID of the recording to include in this virtual service', 'title': 'Recordingid', 'type': 'integer'}, 'runtimeConfig': {'anyOf': [{'$ref': '#/$defs/ReplayConfig'}, {'type': 'null'}], 'default': None, 'description': 'Replay configuration for this recording'}}, 'required': ['recordingId'], 'title': 'MockServiceRecording', 'type': 'object'}, 'MockServiceTransaction': {'properties': {'txnId': {'description': 'Transaction id.', 'title': 'Txnid', 'type': 'integer'}, 'priority': {'default': 10, 'description': 'Transaction Priority. If not specified, defaults to 10.', 'title': 'Priority', 'type': 'integer'}, 'destinations': {'anyOf': [{'items': {'$ref': '#/$defs/MessagingDestination'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of messaging destinations.', 'title': 'Destinations'}}, 'required': ['txnId'], 'title': 'MockServiceTransaction', 'type': 'object'}, 'ProxyConfiguration': {'additionalProperties': True, 'properties': {'proxyUrl': {'description': 'Proxy url', 'title': 'Proxyurl', 'type': 'string'}, 'nonProxyHosts': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Non proxy hosts, | separated', 'title': 'Nonproxyhosts'}, 'username': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Proxy username', 'title': 'Username'}, 'password': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Proxy password', 'title': 'Password'}, 'certificateId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Certificate asset identifier', 'title': 'Certificateid'}}, 'required': ['proxyUrl', 'username', 'password'], 'title': 'ProxyConfiguration', 'type': 'object'}, 'RecorderConfig': {'additionalProperties': True, 'properties': {'maxMessagesCount': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Maximum number of messages to capture per recording session', 'title': 'Maxmessagescount'}, 'maxMessagesPerSecondCount': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Rate limit for capturing messages per second', 'title': 'Maxmessagespersecondcount'}, 'mappings': {'anyOf': [{'items': {'$ref': '#/$defs/RecorderMapping'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Inbound/outbound destination mappings for recording', 'title': 'Mappings'}}, 'title': 'RecorderConfig', 'type': 'object'}, 'RecorderMapping': {'properties': {'inboundDestination': {'description': 'Source destination to record from', 'title': 'Inbounddestination', 'type': 'string'}, 'outboundDestination': {'description': 'Destination to replay captured messages to', 'title': 'Outbounddestination', 'type': 'string'}, 'originType': {'description': 'Origin type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Origintype', 'type': 'string'}}, 'required': ['inboundDestination', 'outboundDestination', 'originType'], 'title': 'RecorderMapping', 'type': 'object'}, 'ReplayConfig': {'additionalProperties': True, 'properties': {'replayCount': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 1, 'description': 'Number of times to replay the recording', 'title': 'Replaycount'}, 'delayBetweenReplays': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'description': 'Delay in ms between replays', 'title': 'Delaybetweenreplays'}, 'initialDelay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'description': 'Initial delay in ms before the first replay', 'title': 'Initialdelay'}}, 'title': 'ReplayConfig', 'type': 'object'}, 'ResponseDelay': {'additionalProperties': True, 'properties': {'type': {'default': 'FIXED', 'description': 'Delay type: FIXED, LOGNORMAL, or UNIFORM', 'title': 'Type', 'type': 'string'}, 'fixedDelay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Fixed delay in ms (FIXED type)', 'title': 'Fixeddelay'}, 'median': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Median for LOGNORMAL distribution', 'title': 'Median'}, 'sigma': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Sigma for LOGNORMAL distribution', 'title': 'Sigma'}, 'lower': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Lower bound for UNIFORM distribution', 'title': 'Lower'}, 'upper': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Upper bound for UNIFORM distribution', 'title': 'Upper'}}, 'title': 'ResponseDelay', 'type': 'object'}}, 'properties': {'id': {'description': 'The unique identifier of the virtual service', 'title': 'Id', 'type': 'integer'}, 'name': {'description': 'The name of the virtual service', 'title': 'Name', 'type': 'string'}, 'status': {'default': '', 'description': 'The status of the virtual service', 'title': 'Status', 'type': 'string'}, 'serviceId': {'description': 'The unique identifier of the service where the virtual service belongs', 'title': 'Serviceid', 'type': 'integer'}, 'type': {'description': "Type of the virtual service. Possible values are 'TRANSACTIONAL' and 'MESSAGING'. Transactional virtual services are used for simulating user interactions with web applications, while messaging virtual services are used for simulating message-based interactions.", 'title': 'Type', 'type': 'string'}, 'harborId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Location harbor identifier', 'title': 'Harborid'}, 'shipId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Location ship identifier', 'title': 'Shipid'}, 'configurationId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Configuration identifier', 'title': 'Configurationid'}, 'noMatchingRequestPreference': {'description': "For transactional virtual services, defines the behavior when no matching request is found. Possible values are 'return404' and 'bypasslive'.", 'title': 'Nomatchingrequestpreference', 'type': 'string'}, 'endpointPreference': {'description': "For transactional virtual services, defines endpoint schema. Possible values are 'HTTP' and 'HTTPS'.", 'title': 'Endpointpreference', 'type': 'string'}, 'replicas': {'default': 1, 'description': 'The number of replicas for the virtual service. Always set to 1.', 'title': 'Replicas', 'type': 'integer'}, 'mockServiceTransactions': {'anyOf': [{'items': {'$ref': '#/$defs/MockServiceTransaction'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of transaction definitions associated with the virtual service', 'title': 'Mockservicetransactions'}, 'mockServiceRecordings': {'anyOf': [{'items': {'$ref': '#/$defs/MockServiceRecording'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of recording references associated with the virtual service', 'title': 'Mockservicerecordings'}, 'endpoints': {'anyOf': [{'items': {'$ref': '#/$defs/Endpoint'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of virtual service endpoints. Available after deployment only.', 'title': 'Endpoints'}, 'httpRunnerEnabled': {'default': True, 'description': "Http runner enabled flag, must be enabled for virtual services with 'TRANSACTIONAL' type.", 'title': 'Httprunnerenabled', 'type': 'boolean'}, 'messagingRunnerEnabled': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': "Messaging runner enabled flag for 'MESSAGING' type virtual services.", 'title': 'Messagingrunnerenabled'}, 'messagingProtocol': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Messaging broker protocol. One of: IBM_MQ9_JMS, IBM_MQ9_NATIVE, ACTIVE_MQ_CLASSIC, ACTIVE_MQ_ARTEMIS, KAFKA.', 'title': 'Messagingprotocol'}, 'priorityMode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Transaction selection mode: DEFAULT or UNIQUE_PRIORITY.', 'title': 'Prioritymode'}, 'responseDelay': {'anyOf': [{'$ref': '#/$defs/ResponseDelay'}, {'type': 'null'}], 'default': None, 'description': 'Global response delay applied to all transactions in this virtual service.'}, 'recorderConfig': {'anyOf': [{'$ref': '#/$defs/RecorderConfig'}, {'type': 'null'}], 'default': None, 'description': 'Configuration for recording live broker traffic.'}, 'classPathJars': {'anyOf': [{'additionalProperties': True, 'type': 'object'}, {'type': 'null'}], 'default': None, 'description': 'Custom broker JAR paths, e.g. {"paths": ["string"]}.', 'title': 'Classpathjars'}, 'proxy': {'anyOf': [{'$ref': '#/$defs/ProxyConfiguration'}, {'type': 'null'}], 'default': None, 'description': 'Proxy configuration for the virtual service'}, 'brokerConfig': {'anyOf': [{'$ref': '#/$defs/BrokerConfiguration'}, {'type': 'null'}], 'default': None, 'description': 'Messaging broker connection configuration'}, 'assets': {'anyOf': [{'items': {'$ref': '#/$defs/AssignedAsset'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of assets', 'title': 'Assets'}}, 'required': ['id', 'name', 'serviceId', 'type', 'noMatchingRequestPreference', 'endpointPreference'], 'title': 'VirtualService', 'type': 'object'}
    Virtual service deploy/stop/update/delete actions result schema:
    {'properties': {'tracking_id': {'description': 'Action tracking id', 'title': 'Tracking Id', 'type': 'string'}}, 'required': ['tracking_id'], 'title': 'ActionResult', 'type': 'object'}
virtual_services_virtual_service_templateA
    Operations on virtual service templates.
    Virtual service templates can only be used for the HTTP virtual services.
    Actions:
    - read: Get a SPECIFIC virtual service template by its id. Use this when you already have a template id.
        Do NOT use `list` when you have a specific id — use `read` instead.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace.
            id (int): Mandatory. The id of the virtual service template to read.
    - list: List virtual service templates in a workspace. Use this to browse or discover templates.
        Do NOT use `list` when you need a specific template by id — use `read` instead.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list transactions from.
            serviceId (int): Optional. The id of the service to list virtual service templates from.
            Without this it will list all virtual service templates in the workspace.
            limit (int, default=10, valid=[1 to 50]): The number of virtual service templates to list.
            offset (int, default=0): Number of virtual service templates to skip.
    - create: Create a new virtual service template.
        args(VirtualService): A virtual service template object with the following fields:
            workspace_id (int): Mandatory. The id of the workspace.
            name (str): Mandatory. The name of the virtual service template.
            serviceId (int): Mandatory. The id of the service to create the virtual service template in.
            noMatchingRequestPreference (str): Mandatory. If not specified use 'return404'.
    - update: Update an existing new virtual service template.
        args(VirtualService): A virtual service template object with the following fields:
            workspace_id (int): Mandatory. The id of the workspace.
            template_id (int): Mandatory. The id of the virtual service template.
            name (str): Optional. The name of the virtual service template.
            serviceId (int): Optional. The id of the service to create the virtual service template in.
            noMatchingRequestPreference (str): Optional. If not specified use 'return404'.
    - assign_transactions: Assigns the transactions to the virtual service template. 
            Transactions should belong to the same service as the virtual service template.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service template belongs to.
            id (int): Mandatory. The id of the virtual service template to assign the transaction to.
            transaction_ids (list[int]): Mandatory. The ids of the transactions to assign to the virtual service template.
    - unassign_transactions: Unassigns the transactions from the virtual service template.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service template belongs to.
            id (int): Mandatory. The id of the virtual service template to assign the transaction to.
            transaction_ids (list[int]): Mandatory. The ids of the transactions to unassign from the virtual service template.
    - assign_configuration: Assigns the configuration to the virtual service template. To unassign configuration, assign configuration with id None.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace the virtual service template belongs to.
            id (int): Mandatory. The id of the virtual service template to assign the transaction to.
            configuration_id (list[int]): Mandatory. The id of the configuration to assign to the virtual service template.
    - assign_keystore: Assign Keystore asset to the Virtual Service Template.
        args(dict):
            id (int): Mandatory. The id of the Virtual Service Template.
            asset_id (int): Mandatory. The id of the keystore asset to assign.
            alias (str): Mandatory. The certificate alias to use.
            workspace_id (int): Mandatory. The id of the workspace.  
    - assign_keystore_truststore: Assign Keystore asset to the Virtual Service Template. Asset will be used as both Keystore and Truststore.
            Use this action for 2way ssl setup.
        args(dict):
            id (int): Mandatory. The id of the Virtual Service Template.
            asset_id (int): Mandatory. The id of the certificate asset to assign.
            alias (str): Mandatory. The certificate alias to use.
            workspace_id (int): Mandatory. The id of the workspace.
    VirtualServiceTemplate Schema (including full MockServiceTransaction):
    {'$defs': {'AssignedAsset': {'properties': {'assetId': {'description': 'The identifier of the asset', 'title': 'Assetid', 'type': 'integer'}, 'assetUsageType': {'description': 'The usage type of the asset', 'title': 'Assetusagetype', 'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'The asset certificate alias', 'title': 'Alias'}}, 'required': ['assetId', 'assetUsageType'], 'title': 'AssignedAsset', 'type': 'object'}, 'MessagingDestination': {'properties': {'destinationName': {'description': 'Destination name', 'title': 'Destinationname', 'type': 'string'}, 'destinationType': {'description': 'Destination type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Destinationtype', 'type': 'string'}}, 'required': ['destinationName', 'destinationType'], 'title': 'MessagingDestination', 'type': 'object'}, 'MockServiceTransaction': {'properties': {'txnId': {'description': 'Transaction id.', 'title': 'Txnid', 'type': 'integer'}, 'priority': {'default': 10, 'description': 'Transaction Priority. If not specified, defaults to 10.', 'title': 'Priority', 'type': 'integer'}, 'destinations': {'anyOf': [{'items': {'$ref': '#/$defs/MessagingDestination'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of messaging destinations.', 'title': 'Destinations'}}, 'required': ['txnId'], 'title': 'MockServiceTransaction', 'type': 'object'}}, 'properties': {'id': {'description': 'The unique identifier of the virtual service template', 'title': 'Id', 'type': 'integer'}, 'name': {'description': 'The name of the virtual service template', 'title': 'Name', 'type': 'string'}, 'serviceId': {'description': 'The unique identifier of the service where the virtual service template belongs', 'title': 'Serviceid', 'type': 'integer'}, 'configurationId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Configuration identifier', 'title': 'Configurationid'}, 'noMatchingRequestPreference': {'description': "Defines the behavior when no matching request is found. Possible values are 'return404' and 'bypasslive'.", 'title': 'Nomatchingrequestpreference', 'type': 'string'}, 'replicas': {'default': 1, 'description': 'The number of replicas for the virtual service template. Always set to 1 for all virtual service templates.', 'title': 'Replicas', 'type': 'integer'}, 'mockServiceTransactions': {'anyOf': [{'items': {'$ref': '#/$defs/MockServiceTransaction'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of transaction definitions associated with the virtual service template', 'title': 'Mockservicetransactions'}, 'httpRunnerEnabled': {'default': True, 'description': 'Http runner enabled flag, must be enabled for virtual service template', 'title': 'Httprunnerenabled', 'type': 'boolean'}, 'assets': {'anyOf': [{'items': {'$ref': '#/$defs/AssignedAsset'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of assets', 'title': 'Assets'}}, 'required': ['id', 'name', 'serviceId', 'noMatchingRequestPreference'], 'title': 'VirtualServiceTemplate', 'type': 'object'}
virtual_services_trackingA
    Operations on tracking objects.
    Use this tool to read or poll tracking status by tracking ID (UUID).
    Call this whenever you have a tracking ID and need to know the status or result of an async operation.
    Actions:
    - read: Read a Tracking. Get status and result of a virtual service deploy/stop/configure operation.
        args(dict): Dictionary with the following required parameters:
            tracking_id (str): Mandatory. The tracking UUID to read.
    - read_asset_tracking: Read an Asset Tracking. Get the status and result of an asset upload operation.
        Use this action — NOT `read` — when the tracking ID came from an asset upload (e.g. "read asset tracking info <uuid>").
        args(dict): Dictionary with the following required parameters:
            tracking_id (str): Mandatory. The tracking UUID to read.
    Tracking Schema:
    {'$defs': {'DeploymentTracking': {'properties': {'trackingId': {'default': None, 'description': 'Tracking id. Must be valid UUID string.', 'title': 'Trackingid', 'type': 'string'}, 'status': {'default': None, 'description': "Tracking status. Must be one of the values: 'PENDING', 'RUNNING', 'FINISHED'.", 'title': 'Status', 'type': 'string'}, 'errors': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of errors.', 'title': 'Errors'}, 'warnings': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of warnings.', 'title': 'Warnings'}, 'data': {'anyOf': [{'$ref': '#/$defs/DeploymentTrackingData'}, {'type': 'null'}], 'default': None, 'description': 'Deployment Tracking data.'}}, 'title': 'DeploymentTracking', 'type': 'object'}, 'DeploymentTrackingData': {'properties': {'dataType': {'default': 'DEPLOYMENT', 'description': "Tracking data type. Constant value: 'DEPLOYMENT'.", 'title': 'Datatype', 'type': 'string'}, 'serviceMockId': {'default': None, 'description': 'Virtual service id.', 'title': 'Servicemockid', 'type': 'integer'}, 'stage': {'default': None, 'description': 'Current stage of the tracked job.', 'title': 'Stage', 'type': 'string'}, 'started': {'default': None, 'description': 'Unix timestamp of the stage start moment.', 'title': 'Started', 'type': 'integer'}}, 'title': 'DeploymentTrackingData', 'type': 'object'}, 'MasterTrackingData': {'properties': {'dataType': {'default': 'MASTER_TRACKING', 'description': "Tracking data type. Constant value: 'MASTER_TRACKING'.", 'title': 'Datatype', 'type': 'string'}, 'serviceMockTrackingDtos': {'anyOf': [{'items': {'$ref': '#/$defs/ServiceMockTrackingDto'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of subtrackings of the Virtual services related to the job.', 'title': 'Servicemocktrackingdtos'}}, 'title': 'MasterTrackingData', 'type': 'object'}, 'ServiceMockTrackingDto': {'properties': {'serviceMockId': {'default': None, 'description': 'Virtual service id.', 'title': 'Servicemockid', 'type': 'integer'}, 'serviceMockName': {'default': None, 'description': 'Virtual service name.', 'title': 'Servicemockname', 'type': 'string'}, 'started': {'default': None, 'description': 'Unix timestamp of the stage start moment.', 'title': 'Started', 'type': 'integer'}, 'trackingDto': {'anyOf': [{'$ref': '#/$defs/DeploymentTracking'}, {'type': 'null'}], 'default': None, 'description': 'Deployment Tracking object.'}}, 'title': 'ServiceMockTrackingDto', 'type': 'object'}}, 'properties': {'trackingId': {'default': None, 'description': 'Tracking id. Must be valid UUID string.', 'title': 'Trackingid', 'type': 'string'}, 'status': {'default': None, 'description': "Tracking status. Must be one of the values: 'PENDING', 'RUNNING', 'FINISHED'.", 'title': 'Status', 'type': 'string'}, 'errors': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of errors.', 'title': 'Errors'}, 'warnings': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of warnings.', 'title': 'Warnings'}, 'data': {'anyOf': [{'$ref': '#/$defs/MasterTrackingData'}, {'type': 'null'}], 'default': None, 'description': 'Deployment Tracking data.'}}, 'title': 'MasterTracking', 'type': 'object'}
virtual_services_locationA
    Operations on locations. 
    Use this when a user needs to read locations information.
    Actions:
    - list: List all locations. 
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list locations from.
    Location Schema:
    {'properties': {'harborId': {'default': None, 'description': 'Location harbor id', 'title': 'Harborid', 'type': 'string'}, 'shipId': {'default': None, 'description': 'Location ship id', 'title': 'Shipid', 'type': 'string'}, 'shipName': {'default': None, 'description': 'Location name', 'title': 'Shipname', 'type': 'string'}, 'portRange': {'default': None, 'description': 'Location port range', 'title': 'Portrange', 'type': 'string'}, 'kubernetes': {'default': None, 'description': 'If true - Kubernetes location, if false - Docker location', 'title': 'Kubernetes', 'type': 'boolean'}}, 'title': 'Location', 'type': 'object'}
virtual_services_sandboxA
    Testing HTTP transactions in sandbox.
    Use this for HTTP transaction verification, or to re-test an existing transaction after update.
    MESSAGING transactions are not supported in sandbox.
    IMPORTANT: Testing a transaction in the sandbox ALWAYS requires two sequential tool calls:
      1. Call `init` first — places the transaction into the sandbox environment.
      2. Then call `test_request` — sends the actual HTTP request and returns the match result.
    Both steps are mandatory. Calling only `init` does NOT test anything; you MUST follow it with `test_request`.
    Response fields: matched=true means the request was matched by the configured transaction.
    matched=false means no transaction matched — read mismatch_reasons to understand which
    matchers failed and what to fix in the DSL.
    Actions:
    - init: Places transaction into sandbox. Must be called BEFORE test_request.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace.
            transaction_id (int): Mandatory. The id of the transaction to test.
    - test_request: Sends test request to sandbox and returns match result. Must be called AFTER init.
        args(dict): Dictionary with the following required parameters:
            request (SandboxRequest): Mandatory. The request definition (method, path, headers, body).
            workspace_id (int): Mandatory. The id of the workspace.
    Sandbox Request Schema:
    {'$defs': {'HttpHeader': {'additionalProperties': True, 'properties': {'name': {'description': 'HTTP header name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'HTTP header value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'HttpHeader', 'type': 'object'}, 'QueryParameter': {'additionalProperties': True, 'properties': {'name': {'description': 'Query parameter name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'Query parameter value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'QueryParameter', 'type': 'object'}}, 'properties': {'method': {'description': 'The http method', 'title': 'Method', 'type': 'string'}, 'path': {'description': 'The request url path', 'title': 'Path', 'type': 'string'}, 'name': {'description': 'The name of the service', 'title': 'Name', 'type': 'string'}, 'queryParameters': {'anyOf': [{'items': {'$ref': '#/$defs/QueryParameter'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of query parameters', 'title': 'Queryparameters'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/HttpHeader'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of response headers', 'title': 'Headers'}, 'content': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Base64 encoded body of the response', 'title': 'Content'}}, 'required': ['method', 'path', 'name'], 'title': 'SandboxRequest', 'type': 'object'}
    Sandbox test_request response schema:
    {'$defs': {'HttpHeader': {'additionalProperties': True, 'properties': {'name': {'description': 'HTTP header name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'HTTP header value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'HttpHeader', 'type': 'object'}, 'MatchingLogEntry': {'additionalProperties': True, 'properties': {'t': {'default': None, 'description': 'Timestamp of when the message was logged (in milliseconds since epoch)', 'title': 'T', 'type': 'integer'}, 'm': {'default': None, 'description': 'Log message', 'title': 'M', 'type': 'string'}}, 'title': 'MatchingLogEntry', 'type': 'object'}}, 'properties': {'status': {'description': 'HTTP status code of the response for the transaction response matching. E.g., 200, 404.', 'title': 'Status', 'type': 'integer'}, 'statusMessage': {'description': 'HTTP status message of the response', 'title': 'Statusmessage', 'type': 'string'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/HttpHeader'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of response headers', 'title': 'Headers'}, 'body': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Decoded response body (plain text or JSON). Empty when no transaction matched.', 'title': 'Body'}, 'matchingLog': {'anyOf': [{'items': {'$ref': '#/$defs/MatchingLogEntry'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Raw matching log entries from WireMock, used for debugging.', 'title': 'Matchinglog'}, 'matched': {'default': False, 'description': 'True when the request was matched by a transaction (matchingLog is empty). False means no transaction matched — check mismatch_reasons.', 'title': 'Matched', 'type': 'boolean'}, 'mismatch_reasons': {'description': 'Plain-text reasons why the request did not match any transaction. Populated from matchingLog when matched=False.', 'items': {'type': 'string'}, 'title': 'Mismatch Reasons', 'type': 'array'}}, 'required': ['status', 'statusMessage'], 'title': 'SandboxResponse', 'type': 'object'}
virtual_services_actionA
    Operations on actions. 
    Use this when a user needs to create, read or list actions for a transaction.
    Actions:
    - read: Reads a single action of a transaction with full details.
        args(dict):
            workspace_id (int): Mandatory. The id of the workspace.
            transaction_id (int): Mandatory. The id of the transaction.
            action_id (int): Mandatory. The id of the action to read.
    - list: Lists all actions of a transaction (minimal info).
        args(dict):
            workspace_id (int): Mandatory. The id of the workspace.
            transaction_id (int): Mandatory. The id of the transaction.
            sort (str): Optional. Field to sort the actions by.
    - create_http_call: Creates an http call action for transaction. This action is executed synchronously.
        args(dict): Dictionary with the following required parameters:
            action_name (str): Mandatory. The name of the action.
            workspace_id (int): Mandatory. The id of the workspace to list services from.
            transaction_id (int): Mandatory. The id of the transaction.
            action (WebAction): Mandatory. The action definition. See WebAction schema below.
    - create_web_hook: Creates a web hook action for transaction. This action is executed asynchronously.
        args(dict): Dictionary with the following required parameters:
            action_name (str): Mandatory. The name of the action.
            workspace_id (int): Mandatory. The id of the workspace to list services from.
            transaction_id (int): Mandatory. The id of the transaction.
            action (WebAction): Mandatory. The action definition. See WebAction schema below.
    - assign_keystore: Assign keystore asset to the action.
        args(dict):
            id (int): Mandatory. The id of the action.
            transaction_id (int): Mandatory. The id of the transaction.
            asset_id (int): Mandatory. The id of the keystore asset to assign.
            alias (str): Mandatory. The certificate alias to use.
            workspace_id (int): Mandatory. The id of the workspace.  
    - assign_certificate: Assign certificate asset to the action.
        args(dict):
            id (int): Mandatory. The id of the action.
            transaction_id (int): Mandatory. The id of the transaction.
            asset_id (int): Mandatory. The id of the certificate asset to assign.
            workspace_id (int): Mandatory. The id of the workspace.                      
    Action Schema:
    {'$defs': {'HttpHeader': {'additionalProperties': True, 'properties': {'name': {'description': 'HTTP header name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'HTTP header value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'HttpHeader', 'type': 'object'}, 'QueryParameter': {'additionalProperties': True, 'properties': {'name': {'description': 'Query parameter name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'Query parameter value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'QueryParameter', 'type': 'object'}}, 'properties': {'urlValue': {'description': 'Action request url value', 'title': 'Urlvalue', 'type': 'string'}, 'urlMethod': {'description': "Action request HTTP method of the request for the transaction request matching. Uppercase, e.g., 'GET', 'POST'", 'title': 'Urlmethod', 'type': 'string'}, 'bodyContent': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Action request body content', 'title': 'Bodycontent'}, 'queryParameters': {'anyOf': [{'items': {'$ref': '#/$defs/QueryParameter'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of query parameters', 'title': 'Queryparameters'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/HttpHeader'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of response headers', 'title': 'Headers'}}, 'required': ['urlValue', 'urlMethod', 'bodyContent'], 'title': 'WebAction', 'type': 'object'}
virtual_services_configurationA
    Operations on virtual service configurations. 
    Use this when a user needs to create or update a virtual service configuration.
    Actions:
    - read: Read a Configuration.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list configurations from.
            configuration_id (int): Mandatory. The id of the configuration to get information.
    - list: List all configurations. 
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list configurations from.
            limit (int, default=10, valid=[1 to 50]): The number of configurations to list.
            offset (int, default=0): Number of configurations to skip.
    - create: Create a new configuration.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The ID of the workspace in which to create the configuration.
            configuration_name (str): Mandatory. The name of the configuration to create.
            configuration_map (Dict[str, str]): Mandatory. A map of configuration parameters and their corresponding values.
    - update: Update an existing configuration.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The ID of the workspace containing the configuration.
            configuration_id (int): Mandatory. The ID of the configuration to update.
            configuration_name (str): Mandatory. The new or updated name of the configuration.
            configuration_map (Dict[str, str]): Mandatory. A map of configuration parameters and their corresponding values.
    Configuration Schema:
    {'additionalProperties': True, 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Configuration id', 'title': 'Id'}, 'name': {'description': 'Configuration parameter name', 'title': 'Name', 'type': 'string'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Configuration parameter name', 'title': 'Description'}, 'configurationMap': {'anyOf': [{'additionalProperties': {'type': 'string'}, 'type': 'object'}, {'type': 'null'}], 'description': 'Configuration map', 'title': 'Configurationmap'}}, 'required': ['name', 'configurationMap'], 'title': 'Configuration', 'type': 'object'}
virtual_services_assetA
    Operations on assets. 
    Use this when a user needs to create an asset from file. Supported file extensions: .jks, .keystore, .key, .crt, 
    .cer, .p7b, .p7c, .p7s, .pem
    Actions:
    - read: Reads an Asset. Get the information of an asset.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list asset from.
            asset_id (int): Mandatory. The id of the asset.
    - list: List all assets. 
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list services from.
            limit (int, default=10, valid=[1 to 50]): The number of assets to list.
            offset (int, default=0): Number of assets to skip.
    - set_keystore_passwords: Sets keystore password for the keystore asset.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to list asset from.
            asset_id (int): Mandatory. The id of the asset.
            keystore_password (str): Optional. The keystore password.
            key_passwords (dict): Optional. The dictionary of key alias x password.
    - upload: Create a new asset from file.
        Action result contains tracking id to track the create asset process. Use tracking tool to track it.
        Creation of the asset is finished, when tracking status is 'FINISHED'. If creation fails, tracking status is 'FAILED'.
        args(dict): Dictionary with the following required parameters:
            workspace_id (int): Mandatory. The id of the workspace to store the asset.
            file_path (int): Mandatory. The full file path to the file for upload.
    Asset Schema:
    {'properties': {'id': {'description': 'The unique identifier of the asset', 'title': 'Id', 'type': 'integer'}, 'name': {'description': 'The name of the asset', 'title': 'Name', 'type': 'string'}, 'type': {'description': 'The type of the asset', 'title': 'Type', 'type': 'string'}, 'primaryMetadata': {'anyOf': [{'additionalProperties': True, 'type': 'object'}, {'type': 'null'}], 'default': None, 'description': 'The asset metadata', 'title': 'Primarymetadata'}}, 'required': ['id', 'name', 'type'], 'title': 'Asset', 'type': 'object'}
    Asset create action result schema:
    {'properties': {'tracking_id': {'description': 'Action tracking id', 'title': 'Tracking Id', 'type': 'string'}}, 'required': ['tracking_id'], 'title': 'ActionResult', 'type': 'object'}
virtual_services_test_dataA
    Operations on TDM (Test Data Manager) datasets for virtual services.

    Dataset variables are referenced in transaction DSLs using ${fieldName} syntax (not Handlebars).
    Matcher name rules — MUST follow these exactly or matching will fail:
      - URL path with ${fieldName}: matcherName MUST be "equals_url". Never use "matches_url" with variables.
        Example: path "/users/${id}", matcherName "equals_url", matchingValue "/users/${id}"
      - Headers, query params, cookies: matcherName must be "equals" or "equals_insensitive".
        "contains", "matches", "not_matches" do NOT work with dataset variables.
      - Body (plain text): matcherName "equals"
      - Body (JSON): matcherName "equals_json" (variables embedded as JSON values e.g. {"id": "${id}"})
        or "matches_json" with equalTo() helper e.g. [[$.field, equalTo(${id})]]
      - Body (XML): matcherName "equals_xml" or "matches_xml" with matching() helper
      - Response content: base64-encoded string containing ${fieldName} — variables resolve at runtime.
    Additional rules:
      - If the same variable appears multiple times in one transaction (e.g. /test/${id}/${id}?q=${id}),
        ALL occurrences must match the SAME value in the incoming request.
      - Variables not defined in the dataset are treated as literal strings — the request must contain
        the exact text "${varName}" to match.
    Note: Handlebars ({{...}}) is separate — it is for dynamic response templating, not dataset substitution.

    Actions:
    - create_from_schema: Create a dataset by defining entities with field names and generator
        expressions. Supported generators include sequenceGenerator(start), randInt(min,max),
        randText(minLen,maxLen), randDate(min,max), guid(), regExp(pattern), and 80+ others.
        See https://help.blazemeter.com/docs/guide/test-data-generator-functions.html
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory. Used in package/asset naming.
            entities (list): Mandatory. Each entry:
                name (str): entity name.
                fields (list): each {name: str, generator: str}.
                repeat (int, default=1000): rows to generate.
            global_variables (dict, optional): flat str→str map of global variables.

    - create_from_csv: Create a dataset from a local CSV file. Column headers become field names;
        the entity name is derived as "{stem}_csv" (e.g. accounts.csv → entity "accounts_csv").
        Generators use valueOfCSV("{filename}", "{field}") — values are sampled from CSV rows at runtime.
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.
            csv_file_path (str): Mandatory. Absolute local path to the CSV file.
            global_variables (dict, optional): flat str→str map of global variables.

    - list: List data-model assets in a workspace (TDM assets endpoint, type=data-model).
        args(dict):
            workspace_id (int): Mandatory.
            limit (int, default=50): max results.
            offset (int, default=0): skip count.

    - read: Read a data-model asset by service. Fetches with full content (withData=true).
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.

    - update: Update an existing schema-based data-model by replacing its entities/fields. Use this
        when the dataset was created with create_from_schema.
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.
            entities (list): Mandatory. Full new entity list (same format as create_from_schema).
            global_variables (dict, optional): flat str→str map of global variables.

    - update_from_csv: Update an existing CSV-based data-model from a local CSV file. Use this
        when the dataset was created with create_from_csv. Rebuilds the entity with valueOfCSV
        generators. Optionally renames entity fields via field_mappings (e.g. when the entity field
        name should differ from the CSV column name).
        By default only the data-model JSON is updated (field rename / mapping change).
        Set upload_csv=true only when the CSV file content itself has changed.
        args(dict):
            workspace_id (int): Mandatory.
            service_id (int): Mandatory.
            service_name (str): Mandatory.
            csv_file_path (str): Mandatory. Absolute local path to the CSV file (used for headers).
            field_mappings (list, optional): rename CSV columns to different entity field names.
                Each entry: {name: str (entity field name), csv_column: str (CSV column name)}.
                Example: [{"name": "account_name2", "csv_column": "account_name"}]
            upload_csv (bool, default=false): set true to re-upload the CSV file content.
            global_variables (dict, optional): flat str→str map of global variables.

    TdmAsset Schema:
    {'additionalProperties': True, 'properties': {'id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset id (UUID)', 'title': 'Id'}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset name', 'title': 'Name'}, 'displayName': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset display name', 'title': 'Displayname'}, 'type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Asset type: data-model, mock-svc, global-entity', 'title': 'Type'}, 'packageId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Package id this asset belongs to', 'title': 'Packageid'}, 'content': {'anyOf': [{}, {'type': 'null'}], 'default': None, 'description': 'Parsed data-model content (present when withData=true)', 'title': 'Content'}}, 'title': 'TdmAsset', 'type': 'object'}
virtual_services_recordingA
    Operations on recordings and recorded messages within recordings.
    Recordings capture live broker traffic and can be replayed by a messaging virtual service.

    ## Recording actions

    - list_recordings: List recordings in a workspace.
        args:
            workspace_id (int): Mandatory.
            serviceId (int): Optional. Filter by parent service.
            serviceMockId (int): Optional. Filter by virtual service (messaging service mock).
            limit (int, default=50): Max results.
            offset (int, default=0): Pagination offset.
            fetchMessages (bool, default=false): Include inline messages in response.
    - read_recording: Get full details of a recording.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory. Recording ID.
    - create_recording: Create a new recording.
        args:
            workspace_id (int): Mandatory.
            name (str): Mandatory.
            serviceId (int): Optional.
            description (str): Optional.
            tags (list[str]): Optional.
            messages (list): Optional. Inline RecordedMessage objects for seed data.
            runtimeConfig (dict): Optional. {replayCount, delayBetweenReplays, initialDelay}.
    - update_recording: Full replacement of a recording.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            name (str): Mandatory.
            serviceId (int): Optional.
            description (str): Optional.
            tags (list[str]): Optional.
            messages (list): Optional.
            runtimeConfig (dict): Optional.
    - patch_recording: Partial update — only provided fields are changed.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            name (str): Optional.
            serviceId (int): Optional.
            description (str): Optional.
            tags (list[str]): Optional.
            messages (list): Optional.
            runtimeConfig (dict): Optional. {replayCount, delayBetweenReplays, initialDelay}.

    ## Recorded message actions

    content fields are always base64-encoded. Assign sequential index values to control
    playback order; if omitted the server assigns order by insertion sequence.

    Notable JMS headers (use in headers[].name):
      JMS_MESSAGE_ID, JMS_CORRELATION_ID, JMS_TIMESTAMP, JMS_DELIVERY_MODE,
      JMS_REDELIVERED, JMS_EXPIRATION, JMS_PRIORITY
    IBM MQ MQMD headers (IBM MQ protocols only):
      MQ9_MQMD_MsgId, MQ9_MQMD_CorrelId, MQ9_MQMD_Format, MQ9_MQMD_ReplyToQ,
      MQ9_MQMD_ReplyToQMgr, MQ9_MQMD_Persistence, MQ9_MQMD_Priority, MQ9_MQMD_Expiry

    - list_messages: List messages within a recording (sorted by index).
        args:
            workspace_id (int): Mandatory.
            recording_id (int): Mandatory.
            limit (int, default=50): Max results.
            offset (int, default=0): Pagination offset.
    - create_message: Add a recorded message to a recording.
        args:
            workspace_id (int): Mandatory.
            recording_id (int): Mandatory.
            messageType (str): Mandatory. TEXT_MESSAGE | BYTES_MESSAGE | MAP_MESSAGE | STREAM_MESSAGE | OBJECT_MESSAGE.
            content (str): Mandatory. Base64-encoded payload.
            destination (str): Mandatory. Target queue/topic/subscription name.
            destinationType (str): Mandatory. QUEUE | TOPIC | SUBSCRIPTION.
            name (str): Optional.
            index (int): Optional. Sequence position (auto-assigned if omitted).
            delay (int): Optional. Inter-message delay in ms.
            correlationId (str): Optional.
            headers (list): Optional. [{name, value}] JMS/MQMD headers.
            properties (list): Optional. [{name, value, type}] JMS properties.
            recordedAt (str): Optional. ISO-8601 timestamp.
    - update_message: Full replacement of a recorded message.
        args: Same as create_message plus message_id (int): Mandatory.
    - patch_message: Partial update of a recorded message — only provided fields change.
        args:
            workspace_id (int): Mandatory.
            recording_id (int): Mandatory.
            message_id (int): Mandatory.
            messageType (str): Optional.
            content (str): Optional. Base64-encoded.
            destination (str): Optional.
            destinationType (str): Optional.
            name (str): Optional.
            index (int): Optional.
            delay (int): Optional.
            correlationId (str): Optional.
            headers (list): Optional.
            properties (list): Optional.
            recordedAt (str): Optional. ISO-8601 timestamp.

    Recording schema:
    {'$defs': {'HttpHeader': {'additionalProperties': True, 'properties': {'name': {'description': 'HTTP header name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'HTTP header value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'HttpHeader', 'type': 'object'}, 'MessagingProperty': {'additionalProperties': True, 'properties': {'name': {'description': 'JMS property name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'JMS property value', 'title': 'Value', 'type': 'string'}, 'type': {'description': "JMS property type. Supported types are 'BOOLEAN', 'BYTE', 'SHORT', 'INT', 'LONG', 'FLOAT', 'DOUBLE' and 'STRING'.", 'title': 'Type', 'type': 'string'}}, 'required': ['name', 'value', 'type'], 'title': 'MessagingProperty', 'type': 'object'}, 'RecordedMessage': {'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Unique identifier of the recorded message', 'title': 'Id'}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Message name', 'title': 'Name'}, 'messageType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'JMS message type. One of: TEXT_MESSAGE, BYTES_MESSAGE, MAP_MESSAGE, STREAM_MESSAGE, OBJECT_MESSAGE.', 'title': 'Messagetype'}, 'content': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Base64-encoded message payload', 'title': 'Content'}, 'destination': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Target queue/topic/subscription name', 'title': 'Destination'}, 'destinationType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Destination type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Destinationtype'}, 'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Sequence position within the recording (controls playback order)', 'title': 'Index'}, 'delay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Inter-message delay in ms', 'title': 'Delay'}, 'correlationId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'JMS correlation ID', 'title': 'Correlationid'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/HttpHeader'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'JMS / MQMD headers', 'title': 'Headers'}, 'properties': {'anyOf': [{'items': {'$ref': '#/$defs/MessagingProperty'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'JMS properties', 'title': 'Properties'}, 'recordedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'ISO-8601 timestamp when message was recorded', 'title': 'Recordedat'}}, 'title': 'RecordedMessage', 'type': 'object'}, 'ReplayConfig': {'additionalProperties': True, 'properties': {'replayCount': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 1, 'description': 'Number of times to replay the recording', 'title': 'Replaycount'}, 'delayBetweenReplays': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'description': 'Delay in ms between replays', 'title': 'Delaybetweenreplays'}, 'initialDelay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'description': 'Initial delay in ms before the first replay', 'title': 'Initialdelay'}}, 'title': 'ReplayConfig', 'type': 'object'}}, 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Unique identifier of the recording', 'title': 'Id'}, 'name': {'description': 'Recording name', 'title': 'Name', 'type': 'string'}, 'serviceId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'ID of the parent service this recording belongs to', 'title': 'Serviceid'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Human-readable description', 'title': 'Description'}, 'tags': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Tags for filtering', 'title': 'Tags'}, 'messages': {'anyOf': [{'items': {'$ref': '#/$defs/RecordedMessage'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Recorded messages (inline on create or fetch with fetchMessages=true)', 'title': 'Messages'}, 'runtimeConfig': {'anyOf': [{'$ref': '#/$defs/ReplayConfig'}, {'type': 'null'}], 'default': None, 'description': 'Replay configuration for this recording'}}, 'required': ['name'], 'title': 'Recording', 'type': 'object'}
    RecordedMessage schema:
    {'$defs': {'HttpHeader': {'additionalProperties': True, 'properties': {'name': {'description': 'HTTP header name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'HTTP header value', 'title': 'Value', 'type': 'string'}}, 'required': ['name', 'value'], 'title': 'HttpHeader', 'type': 'object'}, 'MessagingProperty': {'additionalProperties': True, 'properties': {'name': {'description': 'JMS property name', 'title': 'Name', 'type': 'string'}, 'value': {'description': 'JMS property value', 'title': 'Value', 'type': 'string'}, 'type': {'description': "JMS property type. Supported types are 'BOOLEAN', 'BYTE', 'SHORT', 'INT', 'LONG', 'FLOAT', 'DOUBLE' and 'STRING'.", 'title': 'Type', 'type': 'string'}}, 'required': ['name', 'value', 'type'], 'title': 'MessagingProperty', 'type': 'object'}}, 'properties': {'id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Unique identifier of the recorded message', 'title': 'Id'}, 'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Message name', 'title': 'Name'}, 'messageType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'JMS message type. One of: TEXT_MESSAGE, BYTES_MESSAGE, MAP_MESSAGE, STREAM_MESSAGE, OBJECT_MESSAGE.', 'title': 'Messagetype'}, 'content': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Base64-encoded message payload', 'title': 'Content'}, 'destination': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Target queue/topic/subscription name', 'title': 'Destination'}, 'destinationType': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Destination type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Destinationtype'}, 'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Sequence position within the recording (controls playback order)', 'title': 'Index'}, 'delay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Inter-message delay in ms', 'title': 'Delay'}, 'correlationId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'JMS correlation ID', 'title': 'Correlationid'}, 'headers': {'anyOf': [{'items': {'$ref': '#/$defs/HttpHeader'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'JMS / MQMD headers', 'title': 'Headers'}, 'properties': {'anyOf': [{'items': {'$ref': '#/$defs/MessagingProperty'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'JMS properties', 'title': 'Properties'}, 'recordedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'ISO-8601 timestamp when message was recorded', 'title': 'Recordedat'}}, 'title': 'RecordedMessage', 'type': 'object'}
virtual_services_messaging_virtual_serviceA
    Operations on messaging virtual services.
    Use this when a user needs to create, update, deploy, or manage a messaging virtual service.

    Actions:
    - read: Get full details of a virtual service.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
    - list: List messaging virtual services.
        args:
            workspace_id (int): Mandatory.
            serviceId (int): Optional. Filter by service.
            limit (int, default=10): Max results (1–50).
            offset (int, default=0): Pagination offset.
    - create: Create a messaging virtual service for any supported protocol.
        args:
            workspace_id (int): Mandatory.
            name (str): Mandatory.
            serviceId (int): Mandatory.
            harborId (str): Mandatory. Location harbor ID.
            shipId (str): Mandatory. Location ship ID.
            messagingProtocol (str): Mandatory. One of: IBM_MQ9_JMS, IBM_MQ9_NATIVE,
                ACTIVE_MQ_CLASSIC, ACTIVE_MQ_ARTEMIS, KAFKA.
            brokerConfig (dict): Mandatory. Protocol-specific connection config.

Protocol-to-BrokerConfig field matrix: IBM_MQ9_JMS / IBM_MQ9_NATIVE: hostname, port (default "1414"), channel, queueManager, username, password, sslAuthentication, sslCipherSuite, queues, topics, subscriptions, flowConfigurations. ACTIVE_MQ_CLASSIC / ACTIVE_MQ_ARTEMIS: hostname, port (default "61616"), username, password, embeddedBroker, sslAuthentication, queues, topics, subscriptions, flowConfigurations. KAFKA: hostname, port (e.g. "broker1:9092,broker2:9092"), username (optional), password (optional), autoOffsetReset (earliest|latest|none), numPartitions, topics, flowConfigurations.

            mockServiceTransactions (list): Optional. Transaction references [{txnId, priority, ...}].
            mockServiceRecordings (list): Optional. Recording references [{recordingId, runtimeConfig}].
            recorderConfig (dict): Optional. Live recording config {maxMessagesCount, maxMessagesPerSecondCount, mappings}.
            priorityMode (str): Optional. DEFAULT or UNIQUE_PRIORITY.
            responseDelay (dict): Optional. {type, fixedDelay} or {type, median, sigma} etc.
            messagingRunnerEnabled (bool): Optional. Default true.
    - update: Update an existing messaging virtual service (partial — only provided fields change).
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            name (str): Optional.
            serviceId (int): Optional.
            harborId (str): Optional.
            shipId (str): Optional.
            messagingProtocol (str): Optional. Changing protocol requires a new brokerConfig.
            brokerConfig (dict): Optional.
            mockServiceTransactions (list): Optional.
            mockServiceRecordings (list): Optional.
            recorderConfig (dict): Optional.
            priorityMode (str): Optional.
            responseDelay (dict): Optional.
            messagingRunnerEnabled (bool): Optional.
    - create-mq9: (Legacy) Create an IBM MQ9 virtual service using named fields.
        args:
            workspace_id (int): Mandatory.
            name (str): Mandatory.
            serviceId (int): Mandatory.
            harborId (str): Mandatory.
            shipId (str): Mandatory.
            mq9_broker_hostname (str): Mandatory.
            mq9_broker_port (int): Mandatory.
            mq9_broker_channel (str): Mandatory.
            mq9_queue_manager (str): Mandatory.
            mq9_queue_username (str): Mandatory.
            mq9_queue_password (str): Mandatory.
    - update-mq9: (Legacy) Update IBM MQ9 virtual service using named fields.
        args: Same as create-mq9 but all optional except workspace_id and vs_id (int).
    - deploy: Deploy a virtual service.
        Action result contains trackingId. Use tracking tool to poll until FINISHED or FAILED.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
    - stop: Stop a running virtual service.
        Action result contains trackingId.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
    - configure: Hot-reload transactions into a running virtual service.
        Action result contains trackingId.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
    - assign_transactions: Assign transactions to a messaging virtual service.
        When the broker config uses flow configurations, pass flow_configuration so the
        server can copy the named flow's routing (sourceName, sourceType, destinations)
        onto every newly added transaction.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            transaction_ids (list[int]): Mandatory.
            flow_configuration (str): Optional. Name of a flow in brokerConfig.flowConfigurations[].name.
                Required when the VS uses flow-based routing — omitting it leaves transactions with
                an empty MessagingTransactionMapping (no routing).
    - unassign_transactions: Unassign transactions from a virtual service.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            transaction_ids (list[int]): Mandatory.
    - assign_recordings: Assign recordings to a messaging virtual service.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            recording_ids (list[int]): Mandatory. IDs of recordings to assign.
    - unassign_recordings: Unassign recordings from a messaging virtual service.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            recording_ids (list[int]): Mandatory. IDs of recordings to unassign.
    - assign_configuration: Assign a configuration to a virtual service.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            configuration_id (int): Mandatory. Pass null to unassign.
    - set_proxy: Set proxy configuration.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            proxyUrl (str): Mandatory.
            nonProxyHosts (str): Optional.
            username (str): Optional.
            password (str): Optional.
            certificate_id (int): Optional.
    - unset_proxy: Remove proxy configuration.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
    - assign_queue: Assign a queue to the virtual service.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            queue_name (str): Mandatory.
    - assign_topic: Assign a topic to the virtual service.
        args:
            workspace_id (int): Mandatory.
            id (int): Mandatory.
            topic_name (str): Mandatory.

    VirtualService schema:
    {'$defs': {'AssignedAsset': {'properties': {'assetId': {'description': 'The identifier of the asset', 'title': 'Assetid', 'type': 'integer'}, 'assetUsageType': {'description': 'The usage type of the asset', 'title': 'Assetusagetype', 'type': 'string'}, 'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'The asset certificate alias', 'title': 'Alias'}}, 'required': ['assetId', 'assetUsageType'], 'title': 'AssignedAsset', 'type': 'object'}, 'BrokerConfiguration': {'additionalProperties': True, 'properties': {'hostname': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Broker hostname', 'title': 'Hostname'}, 'port': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "Broker port (string). Use 'host:port,host:port' for Kafka multi-broker lists.", 'title': 'Port'}, 'channel': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'IBM MQ channel name, e.g. SYSTEM.DEF.SVRCONN', 'title': 'Channel'}, 'queueManager': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'IBM MQ queue manager name', 'title': 'Queuemanager'}, 'username': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Broker username', 'title': 'Username'}, 'password': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Broker password', 'title': 'Password'}, 'sslAuthentication': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable SSL/TLS authentication', 'title': 'Sslauthentication'}, 'sslCipherSuite': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'SSL cipher suite (IBM MQ only), e.g. TLS_RSA_WITH_AES_256_CBC_SHA256', 'title': 'Sslciphersuite'}, 'embeddedBroker': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Start an embedded broker — ACTIVE_MQ_CLASSIC and ARTEMIS only', 'title': 'Embeddedbroker'}, 'autoOffsetReset': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Kafka offset reset strategy: earliest, latest, or none', 'title': 'Autooffsetreset'}, 'numPartitions': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Kafka number of partitions (default 1)', 'title': 'Numpartitions'}, 'queues': {'anyOf': [{'items': {'$ref': '#/$defs/BrokerQueue'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of queues', 'title': 'Queues'}, 'topics': {'anyOf': [{'items': {'$ref': '#/$defs/BrokerTopic'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of topics', 'title': 'Topics'}, 'subscriptions': {'anyOf': [{'items': {'$ref': '#/$defs/BrokerSubscription'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of subscriptions', 'title': 'Subscriptions'}, 'flowConfigurations': {'anyOf': [{'items': {'$ref': '#/$defs/FlowConfiguration'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Broker-level flow routing configurations', 'title': 'Flowconfigurations'}}, 'title': 'BrokerConfiguration', 'type': 'object'}, 'BrokerQueue': {'properties': {'name': {'description': 'Queue name', 'title': 'Name', 'type': 'string'}}, 'required': ['name'], 'title': 'BrokerQueue', 'type': 'object'}, 'BrokerSubscription': {'properties': {'name': {'description': 'Subscription name', 'title': 'Name', 'type': 'string'}}, 'required': ['name'], 'title': 'BrokerSubscription', 'type': 'object'}, 'BrokerTopic': {'properties': {'name': {'description': 'Topic name', 'title': 'Name', 'type': 'string'}, 'isDurable': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Whether the subscription is durable', 'title': 'Isdurable'}, 'durableSubscriptionName': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Durable subscription name — required when isDurable=True', 'title': 'Durablesubscriptionname'}}, 'required': ['name'], 'title': 'BrokerTopic', 'type': 'object'}, 'Endpoint': {'properties': {'endpoint': {'description': 'Endpoint URL', 'title': 'Endpoint', 'type': 'string'}}, 'required': ['endpoint'], 'title': 'Endpoint', 'type': 'object'}, 'FlowConfiguration': {'properties': {'name': {'description': 'Flow configuration name', 'title': 'Name', 'type': 'string'}, 'transactionMapping': {'$ref': '#/$defs/FlowTransactionMapping', 'description': 'Source-to-destination routing for this flow'}}, 'required': ['name', 'transactionMapping'], 'title': 'FlowConfiguration', 'type': 'object'}, 'FlowTransactionMapping': {'properties': {'sourceName': {'description': 'Source queue/topic/subscription name', 'title': 'Sourcename', 'type': 'string'}, 'sourceType': {'description': 'Source type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Sourcetype', 'type': 'string'}, 'destinations': {'default': [], 'description': 'Destination list', 'items': {'$ref': '#/$defs/MessagingDestination'}, 'title': 'Destinations', 'type': 'array'}}, 'required': ['sourceName', 'sourceType'], 'title': 'FlowTransactionMapping', 'type': 'object'}, 'MessagingDestination': {'properties': {'destinationName': {'description': 'Destination name', 'title': 'Destinationname', 'type': 'string'}, 'destinationType': {'description': 'Destination type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Destinationtype', 'type': 'string'}}, 'required': ['destinationName', 'destinationType'], 'title': 'MessagingDestination', 'type': 'object'}, 'MockServiceRecording': {'properties': {'recordingId': {'description': 'ID of the recording to include in this virtual service', 'title': 'Recordingid', 'type': 'integer'}, 'runtimeConfig': {'anyOf': [{'$ref': '#/$defs/ReplayConfig'}, {'type': 'null'}], 'default': None, 'description': 'Replay configuration for this recording'}}, 'required': ['recordingId'], 'title': 'MockServiceRecording', 'type': 'object'}, 'MockServiceTransaction': {'properties': {'txnId': {'description': 'Transaction id.', 'title': 'Txnid', 'type': 'integer'}, 'priority': {'default': 10, 'description': 'Transaction Priority. If not specified, defaults to 10.', 'title': 'Priority', 'type': 'integer'}, 'destinations': {'anyOf': [{'items': {'$ref': '#/$defs/MessagingDestination'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of messaging destinations.', 'title': 'Destinations'}}, 'required': ['txnId'], 'title': 'MockServiceTransaction', 'type': 'object'}, 'ProxyConfiguration': {'additionalProperties': True, 'properties': {'proxyUrl': {'description': 'Proxy url', 'title': 'Proxyurl', 'type': 'string'}, 'nonProxyHosts': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Non proxy hosts, | separated', 'title': 'Nonproxyhosts'}, 'username': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Proxy username', 'title': 'Username'}, 'password': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Proxy password', 'title': 'Password'}, 'certificateId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Certificate asset identifier', 'title': 'Certificateid'}}, 'required': ['proxyUrl', 'username', 'password'], 'title': 'ProxyConfiguration', 'type': 'object'}, 'RecorderConfig': {'additionalProperties': True, 'properties': {'maxMessagesCount': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Maximum number of messages to capture per recording session', 'title': 'Maxmessagescount'}, 'maxMessagesPerSecondCount': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Rate limit for capturing messages per second', 'title': 'Maxmessagespersecondcount'}, 'mappings': {'anyOf': [{'items': {'$ref': '#/$defs/RecorderMapping'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'Inbound/outbound destination mappings for recording', 'title': 'Mappings'}}, 'title': 'RecorderConfig', 'type': 'object'}, 'RecorderMapping': {'properties': {'inboundDestination': {'description': 'Source destination to record from', 'title': 'Inbounddestination', 'type': 'string'}, 'outboundDestination': {'description': 'Destination to replay captured messages to', 'title': 'Outbounddestination', 'type': 'string'}, 'originType': {'description': 'Origin type: QUEUE, TOPIC, or SUBSCRIPTION', 'title': 'Origintype', 'type': 'string'}}, 'required': ['inboundDestination', 'outboundDestination', 'originType'], 'title': 'RecorderMapping', 'type': 'object'}, 'ReplayConfig': {'additionalProperties': True, 'properties': {'replayCount': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 1, 'description': 'Number of times to replay the recording', 'title': 'Replaycount'}, 'delayBetweenReplays': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'description': 'Delay in ms between replays', 'title': 'Delaybetweenreplays'}, 'initialDelay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'description': 'Initial delay in ms before the first replay', 'title': 'Initialdelay'}}, 'title': 'ReplayConfig', 'type': 'object'}, 'ResponseDelay': {'additionalProperties': True, 'properties': {'type': {'default': 'FIXED', 'description': 'Delay type: FIXED, LOGNORMAL, or UNIFORM', 'title': 'Type', 'type': 'string'}, 'fixedDelay': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Fixed delay in ms (FIXED type)', 'title': 'Fixeddelay'}, 'median': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Median for LOGNORMAL distribution', 'title': 'Median'}, 'sigma': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Sigma for LOGNORMAL distribution', 'title': 'Sigma'}, 'lower': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Lower bound for UNIFORM distribution', 'title': 'Lower'}, 'upper': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'default': None, 'description': 'Upper bound for UNIFORM distribution', 'title': 'Upper'}}, 'title': 'ResponseDelay', 'type': 'object'}}, 'properties': {'id': {'description': 'The unique identifier of the virtual service', 'title': 'Id', 'type': 'integer'}, 'name': {'description': 'The name of the virtual service', 'title': 'Name', 'type': 'string'}, 'status': {'default': '', 'description': 'The status of the virtual service', 'title': 'Status', 'type': 'string'}, 'serviceId': {'description': 'The unique identifier of the service where the virtual service belongs', 'title': 'Serviceid', 'type': 'integer'}, 'type': {'description': "Type of the virtual service. Possible values are 'TRANSACTIONAL' and 'MESSAGING'. Transactional virtual services are used for simulating user interactions with web applications, while messaging virtual services are used for simulating message-based interactions.", 'title': 'Type', 'type': 'string'}, 'harborId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Location harbor identifier', 'title': 'Harborid'}, 'shipId': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Location ship identifier', 'title': 'Shipid'}, 'configurationId': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': 'Configuration identifier', 'title': 'Configurationid'}, 'noMatchingRequestPreference': {'description': "For transactional virtual services, defines the behavior when no matching request is found. Possible values are 'return404' and 'bypasslive'.", 'title': 'Nomatchingrequestpreference', 'type': 'string'}, 'endpointPreference': {'description': "For transactional virtual services, defines endpoint schema. Possible values are 'HTTP' and 'HTTPS'.", 'title': 'Endpointpreference', 'type': 'string'}, 'replicas': {'default': 1, 'description': 'The number of replicas for the virtual service. Always set to 1.', 'title': 'Replicas', 'type': 'integer'}, 'mockServiceTransactions': {'anyOf': [{'items': {'$ref': '#/$defs/MockServiceTransaction'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of transaction definitions associated with the virtual service', 'title': 'Mockservicetransactions'}, 'mockServiceRecordings': {'anyOf': [{'items': {'$ref': '#/$defs/MockServiceRecording'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of recording references associated with the virtual service', 'title': 'Mockservicerecordings'}, 'endpoints': {'anyOf': [{'items': {'$ref': '#/$defs/Endpoint'}, 'type': 'array'}, {'type': 'null'}], 'default': [], 'description': 'List of virtual service endpoints. Available after deployment only.', 'title': 'Endpoints'}, 'httpRunnerEnabled': {'default': True, 'description': "Http runner enabled flag, must be enabled for virtual services with 'TRANSACTIONAL' type.", 'title': 'Httprunnerenabled', 'type': 'boolean'}, 'messagingRunnerEnabled': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': "Messaging runner enabled flag for 'MESSAGING' type virtual services.", 'title': 'Messagingrunnerenabled'}, 'messagingProtocol': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Messaging broker protocol. One of: IBM_MQ9_JMS, IBM_MQ9_NATIVE, ACTIVE_MQ_CLASSIC, ACTIVE_MQ_ARTEMIS, KAFKA.', 'title': 'Messagingprotocol'}, 'priorityMode': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Transaction selection mode: DEFAULT or UNIQUE_PRIORITY.', 'title': 'Prioritymode'}, 'responseDelay': {'anyOf': [{'$ref': '#/$defs/ResponseDelay'}, {'type': 'null'}], 'default': None, 'description': 'Global response delay applied to all transactions in this virtual service.'}, 'recorderConfig': {'anyOf': [{'$ref': '#/$defs/RecorderConfig'}, {'type': 'null'}], 'default': None, 'description': 'Configuration for recording live broker traffic.'}, 'classPathJars': {'anyOf': [{'additionalProperties': True, 'type': 'object'}, {'type': 'null'}], 'default': None, 'description': 'Custom broker JAR paths, e.g. {"paths": ["string"]}.', 'title': 'Classpathjars'}, 'proxy': {'anyOf': [{'$ref': '#/$defs/ProxyConfiguration'}, {'type': 'null'}], 'default': None, 'description': 'Proxy configuration for the virtual service'}, 'brokerConfig': {'anyOf': [{'$ref': '#/$defs/BrokerConfiguration'}, {'type': 'null'}], 'default': None, 'description': 'Messaging broker connection configuration'}, 'assets': {'anyOf': [{'items': {'$ref': '#/$defs/AssignedAsset'}, 'type': 'array'}, {'type': 'null'}], 'default': None, 'description': 'List of assets', 'title': 'Assets'}}, 'required': ['id', 'name', 'serviceId', 'type', 'noMatchingRequestPreference', 'endpointPreference'], 'title': 'VirtualService', 'type': 'object'}
    Action result schema:
    {'properties': {'tracking_id': {'description': 'Action tracking id', 'title': 'Tracking Id', 'type': 'string'}}, 'required': ['tracking_id'], 'title': 'ActionResult', 'type': 'object'}

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Blazemeter/sv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server