Revyl · Schema

Test

CompanyMobileDevelopmentPlatformCloud

Properties

Name Type Description
app_id object
app_link object
app_package object
backend_url object
branch_id object
build_selection object
device_local object
expected_version object Expected version for optimistic locking. If provided and doesn't match current version, update will fail with 409 Conflict.
flowdescription object
get_downloads object
id object
last_duration object Duration of the most recent execution in seconds
last_execution_id object Execution ID of the most recent execution for deep-linking to report (was last_task_id)
last_execution_time object ISO timestamp of the most recent execution completion
last_modified_by object UUID of the user who last modified this test.
last_status object Status of the most recent execution (success, failure, timeout, cancelled, running, queued, setup, verifying, or None)
link object
llm_model_name object
mobile_targets object Saved device model + runtime targets for this test
name object
orientation object Device orientation from test_mobile_details ('portrait' or 'landscape')
owner object
package_name object
pinned_build_id object
pinned_version object
platform string
resolved_build object
retries object
run_config object
run_id object
tags object Tags associated with this test for categorization and filtering
tasks object
test_timeout_seconds object Per-test execution timeout in seconds. Null disables the override.
test_version_id object Revision record matching the loaded version and tasks, if one exists.
user_id object
version object Current version number for optimistic locking. Increments on each save.
viewport object
View JSON Schema on GitHub

JSON Schema

revyl-test-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/revyl/main/json-schema/revyl-test-schema.json",
  "title": "Test",
  "x-generated": "2026-10-19",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/revyl-openapi.json#/components/schemas/Test",
  "additionalProperties": true,
  "properties": {
    "app_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "App Id"
    },
    "app_link": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "App Link"
    },
    "app_package": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "App Package"
    },
    "backend_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Backend Url"
    },
    "branch_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Branch Id"
    },
    "build_selection": {
      "$ref": "#/$defs/BuildSelectionMode",
      "default": "inherit"
    },
    "device_local": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": false,
      "title": "Device Local"
    },
    "expected_version": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Expected version for optimistic locking. If provided and doesn't match current version, update will fail with 409 Conflict.",
      "title": "Expected Version"
    },
    "flowdescription": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "title": "Flowdescription"
    },
    "get_downloads": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "default": false,
      "title": "Get Downloads"
    },
    "id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Id"
    },
    "last_duration": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Duration of the most recent execution in seconds",
      "title": "Last Duration"
    },
    "last_execution_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Execution ID of the most recent execution for deep-linking to report (was last_task_id)",
      "title": "Last Execution Id"
    },
    "last_execution_time": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "ISO timestamp of the most recent execution completion",
      "title": "Last Execution Time"
    },
    "last_modified_by": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "UUID of the user who last modified this test.",
      "title": "Last Modified By"
    },
    "last_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Status of the most recent execution (success, failure, timeout, cancelled, running, queued, setup, verifying, or None)",
      "title": "Last Status"
    },
    "link": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": "",
      "title": "Link"
    },
    "llm_model_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Llm Model Name"
    },
    "mobile_targets": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/MobileTarget"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "Saved device model + runtime targets for this test",
      "title": "Mobile Targets"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Name"
    },
    "orientation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Device orientation from test_mobile_details ('portrait' or 'landscape')",
      "title": "Orientation"
    },
    "owner": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Owner"
    },
    "package_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Package Name"
    },
    "pinned_build_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pinned Build Id"
    },
    "pinned_version": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pinned Version"
    },
    "platform": {
      "default": "Android",
      "title": "Platform",
      "type": "string"
    },
    "resolved_build": {
      "anyOf": [
        {
          "$ref": "#/$defs/ResolvedBuild"
        },
        {
          "type": "null"
        }
      ]
    },
    "retries": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": 1,
      "title": "Retries"
    },
    "run_config": {
      "anyOf": [
        {
          "$ref": "#/$defs/TestRunConfig"
        },
        {
          "type": "null"
        }
      ]
    },
    "run_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Run Id"
    },
    "tags": {
      "anyOf": [
        {
          "items": {
            "$ref": "#/$defs/Tag"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "description": "Tags associated with this test for categorization and filtering",
      "title": "Tags"
    },
    "tasks": {
      "anyOf": [
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/ActionBlock"
              },
              {
                "$ref": "#/$defs/IfBlock"
              },
              {
                "$ref": "#/$defs/WhileBlock"
              }
            ]
          },
          "type": "array"
        },
        {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array"
        },
        {
          "items": {
            "$ref": "#/$defs/TaskMetadata"
          },
          "type": "array"
        }
      ],
      "default": [],
      "title": "Tasks"
    },
    "test_timeout_seconds": {
      "anyOf": [
        {
          "minimum": 0.0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Per-test execution timeout in seconds. Null disables the override.",
      "title": "Test Timeout Seconds"
    },
    "test_version_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Revision record matching the loaded version and tasks, if one exists.",
      "title": "Test Version Id"
    },
    "user_id": {
      "anyOf": [
        {
          "format": "uuid",
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "User Id"
    },
    "version": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Current version number for optimistic locking. Increments on each save.",
      "title": "Version"
    },
    "viewport": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Viewport"
    }
  },
  "type": "object",
  "$defs": {
    "ActionBlock": {
      "description": "Block for actions (instructions, extraction, manual, validation, code_execution, module_import).",
      "properties": {
        "file": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Canonical org file name for download_file / play_audio blocks in authored YAML/product payloads",
          "title": "File"
        },
        "file_uri": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Resolved revyl-file:// URI for download_file / play_audio blocks",
          "title": "File Uri"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Unique identifier for the block (auto-generated if not provided)",
          "title": "Id"
        },
        "module": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Canonical module name for module_import blocks in authored YAML/product payloads",
          "title": "Module"
        },
        "module_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "ID of the module to import (for module_import blocks)",
          "title": "Module Id"
        },
        "script": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Canonical script name for code_execution blocks in authored YAML/product payloads",
          "title": "Script"
        },
        "script_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Resolved script UUID for code_execution blocks",
          "title": "Script Id"
        },
        "step_description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Authored step text or legacy payload. Optional for canonical reference blocks such as code_execution.script, module_import.module, download_file.file, and no-parameter manual steps.",
          "title": "Step Description"
        },
        "step_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/StepType"
            },
            {
              "type": "null"
            }
          ],
          "description": "Type of step action (inferred when omitted)",
          "title": "Step Type"
        },
        "type": {
          "description": "Must be one of: instructions, extraction, manual, validation, code_execution, module_import",
          "enum": [
            "instructions",
            "extraction",
            "manual",
            "validation",
            "code_execution",
            "module_import"
          ],
          "title": "Type",
          "type": "string"
        },
        "variable_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Name of the variable captured by extraction blocks",
          "title": "Variable Name"
        },
        "variable_scope": {
          "anyOf": [
            {
              "enum": [
                "test",
                "global"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Scope of the variable assigned by extraction or code-execution blocks. 'test' (or omitted) writes to the test-scoped variables table; 'global' writes to a pre-existing, non-secret org-level global variable.",
          "title": "Variable Scope"
        }
      },
      "required": [
        "type"
      ],
      "title": "ActionBlock",
      "type": "object"
    },
    "BuildSelectionMode": {
      "enum": [
        "inherit",
        "latest",
        "pinned",
        "latest_all_branches"
      ],
      "title": "BuildSelectionMode",
      "type": "string"
    },
    "CacheRetryMode": {
      "description": "Cache retry policy for test execution.\n\n- NONE: No cache fallback, fail if cached steps fail\n- FULL_RERUN: If cached run fails, rerun entire test without cache",
      "enum": [
        "none",
        "full_rerun"
      ],
      "title": "CacheRetryMode",
      "type": "string"
    },
    "CleanupLevel": {
      "description": "Cleanup intensity level for AVD state reset between test runs.",
      "enum": [
        "none",
        "thorough",
        "deep_clean"
      ],
      "title": "CleanupLevel",
      "type": "string"
    },
    "DOMMetadata": {
      "additionalProperties": true,
      "properties": {
        "a11y_data": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "A11Y Data"
        },
        "code_input": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Code Input"
        },
        "file_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "File Url"
        },
        "input_selector": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Input Selector"
        },
        "selector": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Selector"
        },
        "validation_text": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Validation Text"
        },
        "validation_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Validation Type"
        },
        "variable_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Variable Name"
        },
        "wait_time": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Wait Time"
        }
      },
      "title": "DOMMetadata",
      "type": "object"
    },
    "DeviceCleanupConfig": {
      "description": "Configuration for AVD cleanup between test runs.\n\nControls what gets reset when resetting device state between tests\nwhile keeping the emulator running.",
      "properties": {
        "cleanup_level": {
          "$ref": "#/$defs/CleanupLevel",
          "default": "thorough",
          "description": "Level of cleanup to perform (default: THOROUGH for maximum cleanup)"
        },
        "clear_app_data": {
          "default": true,
          "description": "Clear app data and cache via pm clear",
          "title": "Clear App Data",
          "type": "boolean"
        },
        "clear_browser_data": {
          "default": true,
          "description": "Clear browsing data (history, cookies, cache) from all browsers",
          "title": "Clear Browser Data",
          "type": "boolean"
        },
        "clear_clipboard": {
          "default": true,
          "description": "Clear clipboard contents",
          "title": "Clear Clipboard",
          "type": "boolean"
        },
        "clear_downloads": {
          "default": true,
          "description": "Clear /sdcard/Download folder",
          "title": "Clear Downloads",
          "type": "boolean"
        },
        "clear_notifications": {
          "default": true,
          "description": "Clear all pending notifications from previous test sessions",
          "title": "Clear Notifications",
          "type": "boolean"
        },
        "clear_recent_apps": {
          "default": false,
          "description": "Clear recent apps list (requires root access, restarts framework). Expensive (~15-30s), broken on Play Store images. Auto-enabled for DEEP_CLEAN.",
          "title": "Clear Recent Apps",
          "type": "boolean"
        },
        "clear_shared_storage": {
          "default": true,
          "description": "Clear Pictures, DCIM, Movies, Music, Documents folders",
          "title": "Clear Shared Storage",
          "type": "boolean"
        },
        "custom_paths_to_clear": {
          "description": "Additional paths to clear on device",
          "items": {
            "type": "string"
          },
          "title": "Custom Paths To Clear",
          "type": "array"
        },
        "kill_background_apps": {
          "default": true,
          "description": "Kill all background applications",
          "title": "Kill Background Apps",
          "type": "boolean"
        },
        "reset_system_ui": {
          "default": false,
          "description": "Reset SystemUI state including wallpaper to defaults. Expensive (~2-3s). Auto-enabled for DEEP_CLEAN.",
          "title": "Reset System Ui",
          "type": "boolean"
        },
        "revoke_permissions": {
          "default": true,
          "description": "Revoke runtime permissions granted during test",
          "title": "Revoke Permissions",
          "type": "boolean"
        },
        "uninstall_new_apps": {
          "default": true,
          "description": "Uninstall apps that were installed during the test session",
          "title": "Uninstall New Apps",
          "type": "boolean"
        }
      },
      "title": "DeviceCleanupConfig",
      "type": "object"
    },
    "ExecutionModeConfig": {
      "description": "Configuration for execution modes and features.",
      "properties": {
        "cleanup_config": {
          "anyOf": [
            {
              "$ref": "#/$defs/DeviceCleanupConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Configuration for AVD cleanup between test runs"
        },
        "enable_planning": {
          "default": false,
          "description": "Enable planning for complex steps",
          "title": "Enable Planning",
          "type": "boolean"
        },
        "enable_reflection": {
          "default": true,
          "description": "Enable reflection on failed steps",
          "title": "Enable Reflection",
          "type": "boolean"
        },
        "grounder_type": {
          "anyOf": [
            {
              "$ref": "#/$defs/GrounderType"
            },
            {
              "type": "null"
            }
          ],
          "default": "moondream3"
        },
        "initial_locale": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Initial device locale identifier, for example 'en_US' or 'fr_FR'",
          "title": "Initial Locale"
        },
        "initial_location": {
          "anyOf": [
            {
              "$ref": "#/$defs/LocationConfig"
            },
            {
              "type": "null"
            }
          ],
          "description": "Initial GPS location to set when simulator boots"
        },
        "initial_orientation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Initial device orientation: 'portrait' or 'landscape'",
          "title": "Initial Orientation"
        },
        "network_capture": {
          "default": true,
          "description": "Attach an in-process TLS-capture agent to the (debuggable) app under test to record decrypted HTTP traffic. On by default (no-op/graceful on non-debuggable apps or attach failure); set False to disable as a per-run kill switch.",
          "title": "Network Capture",
          "type": "boolean"
        },
        "reflection_retries": {
          "default": 1,
          "description": "Number of reflection retry attempts",
          "title": "Reflection Retries",
          "type": "integer"
        },
        "retries": {
          "default": 1,
          "description": "Number of retry attempts",
          "title": "Retries",
          "type": "integer"
        },
        "skip_app_install": {
          "default": false,
          "description": "Skip app installation during test execution",
          "title": "Skip App Install",
          "type": "boolean"
        }
      },
      "title": "ExecutionModeConfig",
      "type": "object"
    },
    "FallbackTrigger": {
      "description": "When to trigger cache fallback.\n\n- FINAL_FAIL: Only trigger fallback if overall test fails",
      "enum": [
        "final_fail"
      ],
      "title": "FallbackTrigger",
      "type": "string"
    },
    "GrounderType": {
      "description": "Grounder configuration that determines the grounding model.\n\n- MOONDREAM/MOONDREAM3/MOONDREAM_CUSTOM/MODAL_CUSTOM: Two-step grounding\n- AUTO: Use GROUNDER_TYPE env var to determine grounder\n- NULL: Skip grounding (for testing/debugging)",
      "enum": [
        "moondream",
        "moondream3",
        "moondream_custom",
        "modal-custom",
        "auto",
        "null"
      ],
      "title": "GrounderType",
      "type": "string"
    },
    "IfBlock": {
      "description": "Block for conditional logic.",
      "properties": {
        "condition": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Condition to evaluate (alternative to 'step_description')",
          "title": "Condition"
        },
        "elseChildren": {
          "description": "Blocks to execute if condition is false",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/ActionBlock"
              },
              {
                "$ref": "#/$defs/IfBlock"
              },
              {
                "$ref": "#/$defs/WhileBlock"
              }
            ]
          },
          "title": "Elsechildren",
          "type": "array"
        },
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Unique identifier for the block (auto-generated if not provided)",
          "title": "Id"
        },
        "step_description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "Condition to evaluate (alternative to 'condition')",
          "title": "Step Description"
        },
        "thenChildren": {
          "description": "Blocks to execute if condition is true",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/ActionBlock"
              },
              {
                "$ref": "#/$defs/IfBlock"
              },
              {
                "$ref": "#/$defs/WhileBlock"
              }
            ]
          },
          "title": "Thenchildren",
          "type": "array"
        },
        "type": {
          "const": "if",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "title": "IfBlock",
      "type": "object"
    },
    "LLMConfig": {
      "description": "Configuration for LLM models used in different stages.",
      "properties": {
        "planning_model": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "LLM model for planning, defaults to primary_model if not set",
          "title": "Planning Model"
        },
        "primary_model": {
          "default": "gemini/gemini-3.8-flash",
          "description": "Primary LLM model for step execution",
          "title": "Primary Model",
          "type": "string"
        },
        "reflection_model": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "description": "LLM model for reflection, defaults to primary_model if not set",
          "title": "Reflection Model"
        }
      },
      "title": "LLMConfig",
      "type": "object"
    },
    "LocationConfig": {
      "description": "GPS location configuration for simulator/emulator.",
      "properties": {
        "latitude": {
          "description": "GPS latitude coordinate (-90 to 90)",
          "maximum": 90.0,
          "minimum": -90.0,
          "title": "Latitude",
          "type": "number"
        },
        "longitude": {
          "description": "GPS longitude coordinate (-180 to 180)",
          "maximum": 180.0,
          "minimum": -180.0,
          "title": "Longitude",
          "type": "number"
        }
      },
      "required": [
        "latitude",
        "longitude"
      ],
      "title": "LocationConfig",
      "type": "object"
    },
    "MobileTarget": {
      "description": "Persisted device target for a test (from ``test_mobile_targets``).\n\n``AUTO/AUTO`` represents \"follow the platform default at runtime\".",
      "properties": {
        "device_model": {
          "title": "Device Model",
          "type": "string"
        },
        "os_version": {
          "title": "Os Version",
          "type": "string"
        }
      },
      "required": [
        "device_model",
        "os_version"
      ],
      "title": "MobileTarget",
      "type": "object"
    },
    "ResolvedBuild": {
      "description": "Normalized representation of a resolved build artifact.",
      "properties": {
        "artifact_kind": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Artifact Kind"
        },
        "artifact_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Artifact Url"
        },
        "branch_id": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Branch Id"
        },
        "branch_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Branch Name"
        },
        "build_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Build Name"
        },
        "build_var_id": {
          "format": "uuid",
          "title": "Build Var Id",
          "type": "string"
        },
        "deploy_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Deploy Url"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Description"
        },
        "download_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Download Url"
        },
        "metadata": {
          "additionalProperties": true,
          "title": "Metadata",
          "type": "object"
        },
        "package_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Package Name"
        },
        "platform": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Platform"
        },
        "static_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Static Url"
        },
        "system_prompt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "System Prompt"
        },
        "uploaded_at": {
          "anyOf": [
            {
              "format": "date-time",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Uploaded At"
        },
        "version": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Version"
        },
        "version_id": {
          "anyOf": [
            {
              "format": "uuid",
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Version Id"
        }
      },
      "required": [
        "build_var_id"
      ],
      "title": "ResolvedBuild",
      "type": "object"
    },
    "StepType": {
      "description": "User-facing step types for YAML test definitions.\n\nThese are the high-level step types that users write in their tests.\nThey map to TASK_TYPES for routing and ActionType for execution.",
      "enum": [
        "instruction",
        "validation",
        "extract",
        "scrape",
        "decision",
        "loop",
        "explore_continue",
        "end",
        "wait",
        "navigate",
        "back",
        "open_app",
        "kill_app",
        "go_home",
        "code_execution",
        "download_file",
        "set_location",
        "set_orientation",
        "set_appearance",
        "play_audio",
        "set_font_size",
        "module_import",
        "tap",
        "click",
        "double_tap",
        "input",
        "swipe",
        "drag",
        "pinch",
        "clear_text",
        "long_press",
        "select"
      ],
      "title": "StepType",

# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/revyl/refs/heads/main/json-schema/revyl-test-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/revyl-test"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.