serval in twins and put this configuration under seed_config.serval.
Serval IT service management and identity operations workspace with users, teams, groups, tickets and messages, app resources and access controls, workflows and approval runs, forms, entities, schedules, SLAs, and webhooks.
Example seed
This is the complete Scenario request body for creating a Scenario. You can also import it witharga test-runner scenarios import --file scenario.json.
{
"name": "Serval eval fixture",
"twins": [
"serval"
],
"seed_config": {
"serval": {
"users": [
{
"alias": "owner",
"email": "owner@example.test",
"firstName": "Grace",
"lastName": "Hopper",
"role": "USER_ROLE_ORG_ADMIN",
"department": "IT",
"jobTitle": "IT Operations Lead",
"timezone": "America/Vancouver"
},
{
"alias": "requester",
"email": "requester@example.test",
"firstName": "Ada",
"lastName": "Lovelace",
"role": "USER_ROLE_ORG_MEMBER",
"department": "Engineering",
"jobTitle": "Software Engineer",
"timezone": "Europe/London"
}
],
"teams": [
{
"alias": "it-team",
"name": "IT Help Desk",
"prefix": "IT",
"description": "Internal technology support and access operations"
}
],
"groups": [
{
"alias": "engineering",
"name": "Engineering",
"description": "Engineering department"
}
],
"team_users": [
{
"teamId": {
"$ref": "it-team.id"
},
"userId": {
"$ref": "owner.id"
},
"role": "TEAM_USER_ROLE_MANAGER"
}
],
"team_groups": [
{
"teamId": {
"$ref": "it-team.id"
},
"groupId": {
"$ref": "engineering.id"
},
"role": "TEAM_USER_ROLE_VIEWER"
}
],
"statuses": [
{
"alias": "open-status",
"teamId": {
"$ref": "it-team.id"
},
"statusGroup": "TODO",
"name": "Open",
"isDefault": true,
"ticketType": "TICKET_TYPE_REQUEST",
"color": "#845ff2"
},
{
"alias": "resolved-status",
"teamId": {
"$ref": "it-team.id"
},
"statusGroup": "DONE",
"name": "Resolved",
"ticketType": "TICKET_TYPE_REQUEST"
}
],
"priorities": [
{
"alias": "high-priority",
"teamId": {
"$ref": "it-team.id"
},
"priority": "HIGH",
"name": "High",
"isDefault": true
}
],
"labels": [
{
"alias": "access-label",
"teamId": {
"$ref": "it-team.id"
},
"name": "Access",
"color": "#2563eb"
}
],
"categories": [
{
"alias": "software-access",
"teamId": {
"$ref": "it-team.id"
},
"name": "Software access"
}
],
"tickets": [
{
"alias": "design-access-ticket",
"teamId": {
"$ref": "it-team.id"
},
"name": "Access to design workspace",
"description": "Grant the requester editor access for the onboarding project.",
"createdByUserId": {
"$ref": "requester.id"
},
"requesterUserId": {
"$ref": "requester.id"
},
"assignedToUserId": {
"$ref": "owner.id"
},
"statusId": {
"$ref": "open-status.id"
},
"priorityId": {
"$ref": "high-priority.id"
},
"labelIds": [
{
"$ref": "access-label.id"
}
]
}
],
"ticket_messages": [
{
"ticketId": {
"$ref": "design-access-ticket.id"
},
"authorUserId": {
"$ref": "requester.id"
},
"content": "I need access before my first project meeting.",
"authorRole": "USER_ROLE"
}
],
"custom_services": [
{
"alias": "access-service",
"teamId": {
"$ref": "it-team.id"
},
"name": "Application access",
"domain": "access.example.test"
}
],
"app_instances": [
{
"alias": "design-app",
"teamId": {
"$ref": "it-team.id"
},
"customServiceId": {
"$ref": "access-service.id"
},
"externalServiceInstanceId": "design-workspace",
"name": "Design Workspace"
}
],
"app_resources": [
{
"alias": "design-project",
"appInstanceId": {
"$ref": "design-app.id"
},
"name": "Onboarding project",
"resourceType": "PROJECT"
}
],
"app_resource_roles": [
{
"alias": "design-editor",
"resourceId": {
"$ref": "design-project.id"
},
"name": "Editor",
"provisioningMethod": {
"manual": {
"teamQueue": {}
}
}
}
],
"access_profiles": [
{
"alias": "design-editor-profile",
"teamId": {
"$ref": "it-team.id"
},
"name": "Design Workspace Editor",
"description": "Engineering access to the design workspace."
}
],
"access_policies": [
{
"alias": "manager-approval-policy",
"teamId": {
"$ref": "it-team.id"
},
"name": "Manager approval required",
"requireBusinessJustification": true,
"recommendedAccessMinutes": 480
}
],
"access_requests": [
{
"alias": "design-access-request",
"teamId": {
"$ref": "it-team.id"
},
"requestedRoleId": {
"$ref": "design-editor.id"
},
"targetUserId": {
"$ref": "requester.id"
},
"linkedTicketId": {
"$ref": "design-access-ticket.id"
},
"status": "ACCESS_REQUEST_STATUS_PENDING",
"timeAllocations": []
}
],
"workflows": [
{
"alias": "access-approval-workflow",
"teamId": {
"$ref": "it-team.id"
},
"name": "Application access approval",
"description": "Route access requests to the application owner.",
"content": "export default async function workflow() { return { approved: true }; }",
"isPublished": true
}
],
"workflow_runs": [
{
"workflowId": {
"$ref": "access-approval-workflow.id"
},
"ticketId": {
"$ref": "design-access-ticket.id"
},
"status": "WORKFLOW_RUN_STATUS_PENDING",
"input": {
"accessRequestId": {
"$ref": "design-access-request.id"
}
}
}
],
"guidances": [
{
"teamId": {
"$ref": "it-team.id"
},
"name": "Access request triage",
"description": "Identify the application and requested permission before routing approval.",
"content": "Confirm the requested role and business justification, then route approval.",
"isPublished": true
}
],
"forms": [
{
"teamId": {
"$ref": "it-team.id"
},
"name": "Application access request",
"description": "Collect the application, permission, and business justification.",
"content": "import { view } from \"serval/forms\";\nexport const main = view({ fn: async () => ({}) });",
"isPublished": true
}
],
"folders": [
{
"teamId": {
"$ref": "it-team.id"
},
"name": "IT Operations",
"itemType": "FOLDER_ITEM_TYPE_WORKFLOW"
}
],
"tags": [
{
"teamId": {
"$ref": "it-team.id"
},
"name": "onboarding",
"color": "#16a34a",
"description": "Automation used during employee onboarding."
}
],
"entity_types": [
{
"alias": "device-type",
"teamId": {
"$ref": "it-team.id"
},
"name": "Device",
"key": "device",
"fields": [
{
"key": "serialNumber",
"name": "Serial number",
"dataType": "UNIQUE"
}
]
}
],
"entities": [
{
"teamId": {
"$ref": "it-team.id"
},
"entityTypeId": {
"$ref": "device-type.id"
},
"key": "device-mbp-001",
"name": "Ada's MacBook Pro",
"fieldValues": [
{
"fieldKey": "serialNumber",
"value": "SERVAL-DEMO-001"
}
]
}
],
"schedules": [
{
"teamId": {
"$ref": "it-team.id"
},
"name": "Business hours",
"timezone": "America/Vancouver",
"weeklyHours": {
"monday": [
{
"start": "09:00",
"end": "17:00"
}
],
"tuesday": [
{
"start": "09:00",
"end": "17:00"
}
],
"wednesday": [
{
"start": "09:00",
"end": "17:00"
}
],
"thursday": [
{
"start": "09:00",
"end": "17:00"
}
],
"friday": [
{
"start": "09:00",
"end": "17:00"
}
]
},
"kind": "SCHEDULE_KIND_WORK_HOURS"
}
],
"sla_definitions": [
{
"teamId": {
"$ref": "it-team.id"
},
"name": "High priority response",
"targetDurationSeconds": 1800,
"useCalendarTime": true,
"metric": "SLA_METRIC_FIRST_RESPONSE"
}
],
"webhooks": [
{
"url": "https://example.test/serval-events",
"secret": "serval-scenario-webhook-secret",
"active": true
}
]
}
}
}
Parameters
The following fields belong directly insideseed_config.serval. Required nested fields are marked in their tables. Provider-native objects can contain service-specific fields beyond the representative record shapes below.
| Parameter | Type | Description |
|---|---|---|
users | object[] | Users fixtures in provider-native format. |
teams | object[] | Teams fixtures in provider-native format. |
groups | object[] | Group fixtures or memberships in the format shown below. |
team_users | object[] | Team users fixtures in provider-native format. |
team_groups | object[] | Team groups fixtures in provider-native format. |
statuses | object[] | Statuses fixtures in provider-native format. |
priorities | object[] | Priorities fixtures in provider-native format. |
labels | object[] | Custom label names or objects containing name. |
categories | object[] | Categories fixtures in provider-native format. |
tickets | object[] | Tickets fixtures in provider-native format. |
ticket_messages | object[] | Ticket messages fixtures in provider-native format. |
custom_services | object[] | Custom services fixtures in provider-native format. |
app_instances | object[] | App instances fixtures in provider-native format. |
app_resources | object[] | App resources fixtures in provider-native format. |
app_resource_roles | object[] | App resource roles fixtures in provider-native format. |
access_profiles | object[] | Access profiles fixtures in provider-native format. |
access_policies | object[] | Access policies fixtures in provider-native format. |
access_requests | object[] | Access requests fixtures in provider-native format. |
workflows | object[] | Workflows fixtures in provider-native format. |
workflow_runs | object[] | Workflow runs fixtures in provider-native format. |
guidances | object[] | Guidances fixtures in provider-native format. |
forms | object[] | Forms fixtures in provider-native format. |
folders | object[] | Folders fixtures in provider-native format. |
tags | object[] | Tags fixtures in provider-native format. |
entity_types | object[] | Entity types fixtures in provider-native format. |
entities | object[] | Entities fixtures in provider-native format. |
schedules | object[] | Schedules fixtures in provider-native format. |
sla_definitions | object[] | Sla definitions fixtures in provider-native format. |
webhooks | object[] | Webhook subscriptions or configurations. |
ticket_feedback | object[] | Ticket feedback fixtures in provider-native format. |
ticket_relationships | object[] | Ticket relationships fixtures in provider-native format. |
ticket_external_messages | object[] | Ticket external messages fixtures in provider-native format. |
ticket_external_tickets | object[] | Ticket external tickets fixtures in provider-native format. |
ticket_relevant_assets | object[] | Ticket relevant assets fixtures in provider-native format. |
ticket_subscribers | object[] | Ticket subscribers fixtures in provider-native format. |
custom_field_options | object[] | Custom field options fixtures in provider-native format. |
app_instance_integrations | object[] | App instance integrations fixtures in provider-native format. |
access_profile_grants | object[] | Access profile grants fixtures in provider-native format. |
access_policy_approval_procedures | object[] | Access policy approval procedures fixtures in provider-native format. |
workflow_approval_procedures | object[] | Workflow approval procedures fixtures in provider-native format. |
access_relationships | object[] | Access relationships fixtures in provider-native format. |
access_memberships | object[] | Access memberships fixtures in provider-native format. |
approval_delegations | object[] | Approval delegations fixtures in provider-native format. |
approval_requests | object[] | Approval requests fixtures in provider-native format. |
approval_request_steps | object[] | Approval request steps fixtures in provider-native format. |
connected_channels | object[] | Connected channels fixtures in provider-native format. |
workflow_versions | object[] | Workflow versions fixtures in provider-native format. |
workflow_run_tasks | object[] | Workflow run tasks fixtures in provider-native format. |
guidance_versions | object[] | Guidance versions fixtures in provider-native format. |
entity_type_fields | object[] | Entity type fields fixtures in provider-native format. |
schema_migrations | object[] | Schema migrations fixtures in provider-native format. |
entity_field_value_history | object[] | Entity field value history fixtures in provider-native format. |
entity_field_mappings | object[] | Entity field mappings fixtures in provider-native format. |
entity_ingestion_configs | object[] | Entity ingestion configs fixtures in provider-native format. |
entity_ingestion_runs | object[] | Entity ingestion runs fixtures in provider-native format. |
one_time_windows | object[] | One time windows fixtures in provider-native format. |
reclamation_candidates | object[] | Reclamation candidates fixtures in provider-native format. |
journeys | object[] | Journeys fixtures in provider-native format. |
topics | object[] | Topics fixtures in provider-native format. |
user_relationships | object[] | User relationships fixtures in provider-native format. |
Seeding behavior
You can provide flat resource arrays or neststatuses, priorities, members, and tickets inside a team. Resource alias values can be referenced as {"$ref":"alias.id"}.
Resource fields
These tables describe the record shapes used by the example. Keep native field names and casing. Map keys such as property names, IDs, and metadata keys are supplied by your fixture.users[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
email | string | Main account email address. |
firstName | string | FirstName. |
lastName | string | LastName. |
role | string | Role. |
department | string | Department. |
jobTitle | string | JobTitle. |
timezone | string | Timezone. |
teams[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
name | string | Human-readable name. |
prefix | string | Prefix. |
description | string | Description. |
groups[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
name | string | Human-readable name. |
description | string | Description. |
team_users[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
userId | object | UserId. |
role | string | Role. |
team_groups[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
groupId | object | GroupId. |
role | string | Role. |
statuses[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
statusGroup | string | StatusGroup. |
name | string | Human-readable name. |
isDefault | boolean | Enable or set isDefault behavior. |
ticketType | string | TicketType. |
color | string | Color. |
priorities[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
priority | string | Priority. |
name | string | Human-readable name. |
isDefault | boolean | Enable or set isDefault behavior. |
labels[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
color | string | Color. |
categories[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
tickets[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
description | string | Description. |
createdByUserId | object | CreatedByUserId. |
requesterUserId | object | RequesterUserId. |
assignedToUserId | object | AssignedToUserId. |
statusId | object | StatusId. |
priorityId | object | PriorityId. |
labelIds | object[] | LabelIds fixtures in provider-native format. |
tickets[].labelIds[]
| Parameter | Type | Description |
|---|---|---|
$ref | string | $ref. |
ticket_messages[]
| Parameter | Type | Description |
|---|---|---|
ticketId | object | TicketId. |
authorUserId | object | AuthorUserId. |
content | string | Text content. |
authorRole | string | AuthorRole. |
custom_services[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
domain | string | Domain. |
app_instances[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
customServiceId | object | CustomServiceId. |
externalServiceInstanceId | string | ExternalServiceInstanceId. |
name | string | Human-readable name. |
app_resources[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
appInstanceId | object | AppInstanceId. |
name | string | Human-readable name. |
resourceType | string | ResourceType. |
app_resource_roles[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
resourceId | object | ResourceId. |
name | string | Human-readable name. |
provisioningMethod | object | ProvisioningMethod. |
access_profiles[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
description | string | Description. |
access_policies[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
requireBusinessJustification | boolean | Enable or set requireBusinessJustification behavior. |
recommendedAccessMinutes | integer | RecommendedAccessMinutes. |
access_requests[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
requestedRoleId | object | RequestedRoleId. |
targetUserId | object | TargetUserId. |
linkedTicketId | object | LinkedTicketId. |
status | string | Status. |
timeAllocations | array | TimeAllocations fixtures in provider-native format. |
workflows[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
description | string | Description. |
content | string | Text content. |
isPublished | boolean | Enable or set isPublished behavior. |
workflow_runs[]
| Parameter | Type | Description |
|---|---|---|
workflowId | object | WorkflowId. |
ticketId | object | TicketId. |
status | string | Status. |
input | object | Input. |
guidances[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
name | string | Human-readable name. |
description | string | Description. |
content | string | Text content. |
isPublished | boolean | Enable or set isPublished behavior. |
forms[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
name | string | Human-readable name. |
description | string | Description. |
content | string | Text content. |
isPublished | boolean | Enable or set isPublished behavior. |
folders[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
name | string | Human-readable name. |
itemType | string | ItemType. |
tags[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
name | string | Human-readable name. |
color | string | Color. |
description | string | Description. |
entity_types[]
| Parameter | Type | Description |
|---|---|---|
alias | string | Fixture-local name used by supported relationship references. |
teamId | object | TeamId. |
name | string | Human-readable name. |
key | string | Key. |
fields | object[] | Fields fixtures in provider-native format. |
entity_types[].fields[]
| Parameter | Type | Description |
|---|---|---|
key | string | Key. |
name | string | Human-readable name. |
dataType | string | DataType. |
entities[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
entityTypeId | object | EntityTypeId. |
key | string | Key. |
name | string | Human-readable name. |
fieldValues | object[] | FieldValues fixtures in provider-native format. |
entities[].fieldValues[]
| Parameter | Type | Description |
|---|---|---|
fieldKey | string | FieldKey. |
value | string | Value. |
schedules[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
name | string | Human-readable name. |
timezone | string | Timezone. |
weeklyHours | object | WeeklyHours. |
kind | string | Kind. |
schedules[].weeklyHours.monday[]
| Parameter | Type | Description |
|---|---|---|
start | string | Start. |
end | string | End. |
schedules[].weeklyHours.tuesday[]
| Parameter | Type | Description |
|---|---|---|
start | string | Start. |
end | string | End. |
schedules[].weeklyHours.wednesday[]
| Parameter | Type | Description |
|---|---|---|
start | string | Start. |
end | string | End. |
schedules[].weeklyHours.thursday[]
| Parameter | Type | Description |
|---|---|---|
start | string | Start. |
end | string | End. |
schedules[].weeklyHours.friday[]
| Parameter | Type | Description |
|---|---|---|
start | string | Start. |
end | string | End. |
sla_definitions[]
| Parameter | Type | Description |
|---|---|---|
teamId | object | TeamId. |
name | string | Human-readable name. |
targetDurationSeconds | integer | TargetDurationSeconds. |
useCalendarTime | boolean | Enable or set useCalendarTime behavior. |
metric | string | Metric. |
webhooks[]
| Parameter | Type | Description |
|---|---|---|
url | string | Url. |
secret | string | Secret. |
active | boolean | Enable or set active behavior. |

